Ver Mensaje Individual
  #7  
Antiguo 30-08-2003
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Buen día a todos!

La programación orientada a objetos en Delphi puede ser implementada a diferentes niveles.

Podríamos decir que el más básico de ellos es cuando se crea una aplicación con clases de objeto componente ya definidas, donde la manipulación visual del diseño se ejerce directamente sobre objetos instanciados en tiempo de diseño y a instanciarse en tiempo de ejecución. Es el caso de una aplicación básica que contiene una o varias formas (componente TForm) conteniendo componentes de diversos tipos (descendientes de TComponent).

Por otra parte pueden definirse nuevas clases de objeto (componentes y no componentes) a partir de clases ya existentes. Esto requiere de conocimientos y esfuerzos de mayor profundidad, pero vale la pena invertir en ellos.

La creación de nuevas clases de objetos debe ir junto con la creación de otros recursos de programación, es decir, es todo un conjunto que abarca clases de objetos, funciones y otras estructuras auxiliares de código e información.

Estos recursos deben ser divididos en dos partes: la biblioteca de recursos estándares generales y la biblioteca de recursos propios del proyecto.

Por ejemplo, si para un proyecto de sistema de control escolar se crea una clase TTablaAlumnos derivada de TTable, esta nueva clase de componente pertenece a la biblioteca de recursos del proyecto. Pero si se crea una clase TTablaMejorada derivada de TTable, con características estándares que pueden ser aprovechadas en más de un proyecto (y que no son particulares de ninguno), entonces esta nueva clase debe pertenecer a una biblioteca de recursos estándares, común a varios proyectos existentes o por existir.

Sin embargo, los recursos de bibliotecas estándares requieren ser desarrollados pensando en más diversas necesidades y posibilidades de falla (generalmente necesitan más validaciones), que los recursos de la biblioteca particular de un proyecto, donde las condiciones alcanzables de alguna manera ya están previstas.

La programación orientada a objetos resuelve problemas de complejidad de datos y procesos, pero no siempre es mejor que la programación estructurada tradicional. De ahí que Delphi permita al programador decidir que tan orientado a objetos trabajar.



Algo que me gustaría recalcar es la posiblidad que tiene Delphi de implementar plantillas de formas. Crear dos formas diferentes con elementos comunes repetidos, es como crear dos funciones diferentes con código común repetido.

Generalmente, cuando se crea una función que tiene un grupo de sentencias igual al de otra función, lo recomendable es colocar las sentencias que tienen en común en una tercera función, evitando la repetitividad de código para evitar los problemas comunes que de ello derivan (mayor tamaño de código, mayor esfuerzo y tiempo para actualización, menor seguridad).

Delphi permite aplicar esto mismo a las formas (¡y con verdadera programación orientada a objetos! ). Por ejemplo, uno puede crear una plantilla de forma para operaciones de venta, y de ella derivar una forma para captura de cotizaciones y otra para captura de pedidos. Todos los elmentos comunes (componentes, valores de propiedades y código de manejadores de evento) se colocan en la forma y unidad de la plantilla (TPlanOperVent), dejando los demás elementos en las formas derivadas (TFormCoti y TFormPedi).

Esto da un mayor control sobre el diseño y depuración de la aplicación, hace más legible el código, y centraliza los elmentos comunes en en la plantilla, de tal forma que al hacer un cambio ahí, éste se aplica automáticamente en las formas derivadas.

Cabe mencionar que en las plantillas se pueden crear métodos virtuales que pueden ser redefinidos (Override) en las clases derivadas, también pueden agregarse nuevas propiedades y redefinirse el constructor virtual Create. No olvidar tampoco, que como se trata de verdadera programación orientada a objetos, es posible tomar una plantilla y derivar otra plantilla de ella, y así sucesivamente, hasta definir la clase de forma final que observa el usuario.

Espero esto sea de utilidad, seguimos en contacto.

Al González .
Responder Con Cita