Ver Mensaje Individual
  #18  
Antiguo 13-05-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ya ni pongo citas porque esto se está complicando mucho pero...

El hecho de que el VCL implemente métodos mediante mensajes Windows no corrobora el hecho de que métodos y mensajes sean cosas distintas. Como dije (o he implicado) el lenguaje OO habla de mensajes entre objetos pero la forma de implementar estos mensajes es distinta según el lenguaje de programación en particular con que se trabaje. Dado que Delphi y Windows implementan los mensajes entre objetos (y los objetos en sí) de formas distintas, es necesaria una adaptación entre una arquitectura y otra. Esto es precisamente lo que hace el VCL.

Hago énfasis en lo que dije anteriormente. Si pensamos en el ambiente Windows como en un ambiente de objetos (las ventanas), tenemos las tres propiedades principales de OO:
[list=1][*]Encapsulamiento - Los detalles de la implementación de lo que hace cada ventana ante un mensaje están ocultos.[*]Herencia - Mediante el "subclassing" [*]Polimorfismo - Todas las ventanas reaccionan ante los mismos mensajes: WM_PAINT, WM_CLOSE, WM_MOVE, etc., etc. pero de maneras distintas.[/list=1]

En el caso de Delphi podemos tener una aplicación con varios formularios, todos ellos heredados de TForm y podemos redefinir el comportamiento del mensaje "Cerrar" redefiniendo el método Close y los detalles de la implementación quedarán ocultos. Más aún podemos mandar este mensaje a cualquier ventana de nuestra aplicación y ésta responderá adecuadamente según el polimorfismo. Todo esto con llamadas al método Close.

Pero, ¿cuál fue la diferencia? Conceptualmente es lo mismo:

Mandar el mensaje "Cerrar" a las ventanas

La diferencia está en cómo se implementa este envío de mensajes pero siguen siendo mensajes de cualquier forma (desde el punto de vista teórico de OO)


Ahora bien, es cierto, lo acepto, que la práctica como programadores de Delphi nos lleva a pensar en "mensaje" como el enviado con SendMessage, pero es sólo eso: usos y costumbres.

Quiero pensar que el estudiante de informática no estará casado con un lenguaje en particular o una metodología específica (aunque tenga unas favoritas), de manera que al estudiar metodologías como OO, será bueno que se acostumbre a pensar en objetos y mensajes, independientemente de los lenguajes que posteriormente utilice. Esto le será de gran ayuda para entender lo que hay en el fondo de las cosas-- entender un sistema de ventanas (por ejemplo) independientemente de con qué arquitectura se implemente. Entender, a fin de cuentas, el funcionamiento esencial de las aplicaciones que desarrolle, antes de siquiera escoger el lenguaje de programación que utilizará.


Y a manera de meterle leña al fuego, pregunto:

¿Qué son los eventos de Delphi?

¿Son métodos? ¿Son mensajes? ¿A qué corresponden en el ambiente Windows?

// Saludos
Responder Con Cita