Ver Mensaje Individual
  #1  
Antiguo 26-10-2005
adlfv adlfv is offline
Miembro
 
Registrado: may 2005
Posts: 39
Reputación: 0
adlfv Va por buen camino
Abstracción de aplicación por departamentos

Hola a todos.

Estoy haciendo un programa y he hecho una jerarquía de departamentos, en los cuales quiero encapsular todas las funciones de cada departamento como pueden ser acciones, operaciones, reportes...

La idea es que cada departamento esté en un .bpl, y que al eliminar el .bpl de ese departamento, no pueda realizar las funciones que realiza ese departamento (pero sí pueda seguir ejecutando la aplicación, salvo que sea un departamento muy vital).

Si los paquetes son vinculados de forma estatica, no puedo ejecutar la aplicación al eliminar alguno de ellos, pero si son vinculados (cargados) de forma dinámica, sí puedo hacer eso pero tengo que apañarmelas para hacer las llamadas a las rutinas, acceder a los objetos, y todo eso.

El problema que veo es cómo desactivar o borrar un departamento, y se me ocurren dos soluciones:

1.- Si tengo un "flag" de activado/desactivado, tengo el problema que por ingeniería inversa me pueden activar departamentos que no deseo que activen, por ejemplo usar departamentos por los cuales no han pagado, pero me facilita mucho la vinculación con el programa, pues puedo usar vinculamiento estatico.

2.- Si uso el metodo de "borrar" los departamentos que no uso, tengo el problema que tengo que armar todo para poder usar los objetos dentro de los paquetes, llamar a las rutinas, activar y desactivar menus y todo eso en funcion de si existe el archivo .bpl o no. Aparte tengo el problema que no sé cómo "engañar" al compilador, pues al compilar se supone que los paquetes siempre van a estar ahí (porque necesito establecer las llamadas a dicho paquete) pero al ejecutar no siempre estará ahí.

Me inclino más por la segunda pues me parece que es más "moldeable" y más independiente, pero no sé muy bien cómo resolver ese inconveniente. He pensado en hacer un interfaz común entre los objetos del paquete (departamento) y el programa mediante una clase abstracta que no haga absolutamente nada (pero que sí pueda instanciar, aunque no tenga sentido) para "engañar" al compilador, y que si el paquete existe se sobrecarguen los métodos o algo así, y se le de la funcionalidad al paquete.

Alguna idea? Alguna sugerencia? Me expliqué bien?

Muchas gracias de antemano.

Un cordial saludo
Responder Con Cita