Ver Mensaje Individual
  #12  
Antiguo 12-05-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Reputación: 22
andres1569 Va por buen camino
Hola:

Permitidme que tercie en al asunto para dar mi punto de vista. Estoy más con Delphi.com.ar, que argumentó en un principio que debíamos diferenciar entre mensajes y métodos.

Roman escribió :

Cita:
No exactamente. Desde el punto de vista de programación orientada a objetos, los objetos se mandan mensajes unos a otros y la manera de hacerlo, en lenguajes como Delphi, es llamando métodos de un objeto. Cuando ejecutamos ...
Conceptualmente, haciendo abstracción de lenguajes y de Sistemas Operativos, como si estuviéramos escribiendo un libro de programación orientada a objetos, se puede interpretar que un método es un mensaje y viceversa (en última instancia es una acción aplicada a un objeto); pero aquí estamos programando para Windows, utilizando Delphi, y todos sabemos que no es lo mismo enviar un mensaje (SendMessage, PostMessage) que llamar directamente al método. ¿Por qué no es lo mismo? Para empezar, sí creo que afecta, aunque de una forma un tanto sutil, al encapsulamiento. Cuando llamamos a un método de un objeto, directamente ya sabemos de antemano algo del comportamiento de ese objeto. En cierta forma, nos metemos en sus asuntos. Sería algo así como llamar al método PonteElAbrigo de un objeto TPersona; la instruccion Persona.PonteElAbrigo presupone lo que debe hacer la Persona cuando hace frío y lo ejecuta sin más, no le da opción a elegir; sin embargo llamar a un mensaje deja más libertad al objeto. Si hacemos SendMessage (Persona, WM_HaceFrío), el objeto Persona puede reaccionar de diversas formas, seguramente se pondrá el abrigo, o no, y además no tendrá que hacerlo al primer aviso, podrá primero escuchar a otros mensajes (no hay que olvidar que los mensajes pueden ser asíncronos).

Siempre será más genérico enviar un mensaje que llamar directamente al método.

Quizás Roman estés pensando en un método TPersona.HaceFrio, que haga lo mismo que su mensaje homólogo, pero si os dais cuenta estamos creando un método para algo que no debería contemplar una TPersona, sino que es un acontecimiento externo(casi mejor dicho un evento).

CONCLUSION: Por norma general, los mensajes notifican eventos, cosas que pasan, y los métodos actúan en consecuencia. En un sistema democrático se envía un mensaje a un objeto (eso sí los mensajes pueden ser falsos); en una dictadura (y el programador de un aplicación lo es cuando escribe Query.Close) se llama directamente a los métodos, guste a o no.

Saludos, y a continuar con estas disquisiciones.
Responder Con Cita