Gracias!, Ahí voy
Para empezar quiero comentar que desde mi punto de vista
personal cuando uno comienza a
diseñar una aplicación con las técnicas de orientación a objetos (si gustan con o herramientas UML o simplemente haciendo dibujitos en papel) uno no se refiere a un lenguaje de programacón en particular. Por ello pienso que elargumento de que
"estamos programando para Windows, utilizando Delphi" no es del todo válido.
Durante el diseño y análisis de la aplicación, si realmente empleamos técnicas OOP (y no digo que yo lo haga así de ordenadito) hablamos de objetos, relaciones entre ellos y los
mensajes que se mandan unos a los otros.
En segundo lugar, todo esto del abrigo (y por favor cambien de ejemplo pues aca estamos a 30 grados centigrados :P) tiene un poco de trampa. Cuando llamamos un método de un objeto, no podemos saber, precisamente por el encapsulamiento, de que manera el objeto va a procesar el método. Quizá, al igual que hace Windows, almacene algunas llamadas, o efectos de las llamadas, en alguna cola. Quizá incluso el objeto maneje "threads" internamente para procesar asíncronamente algunas cosas.
El encapsulamiento se da en cualquier caso. No hay mucha diferencia entre estas dos llamadas:
Código:
Rectangulo.Paint;
SendMessage(Rectangulo, WM_PAINT)
En ninguno de los dos casos sabemos internamente lo que hara el objeto Rectangulo para procesar el mensaje.
Incluso, ya hablando específicamente de Delphi, muchas llamadas a métodos se traducen en llamadas a SendMessage, allá muy en el fondo del VCL.
// Saludos