Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Temas relacionados > Debates
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 13-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Posteado originalmente por roman
¿Qué son los eventos de Delphi?

¿Son métodos? ¿Son mensajes? ¿A qué corresponden en el ambiente Windows?
Creo que Delphi es uno de los lenguajes más claros para entender este concepto, para Delphi los eventos no son mas que propiedades del tipo "procedure of object", son manejadas como propiedades por el lenguaje y reciben el mismo trato que cualquier propiedad, la única diferencia notable es en tiempo de diseño.
Con respecto al ambiente Windows, un evento de una clase en Delphi no necesariamente tiene que ser causa de un mensaje de Windows, por ejemplo el evento OnChange de un TStringList, lejos está de ser algo propio del sistema operativo. Los mensajes de Windows, son es la manera que tiene Windows de producir eventos para comunicarle a las ventanas los "eventos" sucedidos. Es medio redundante, pero espero que sea claro.


Saludos Foristas!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #22  
Antiguo 16-05-2003
Kafu Kafu is offline
Miembro
 
Registrado: may 2003
Ubicación: Bilbao
Posts: 117
Poder: 22
Kafu Va por buen camino
Un saludo a todos.
Aunque creo que en lo básico es un tema de semántica, desde mis escasos conocimientos sí se me hace más cómoda una diferenciación entre método y mensaje.
Perdonadme si no soy muy estricto en la terminología. Creo que para quien no se interna a menudo en la vcl, que francamente da miedo, el uso de métodos explicitos es lo que se nos presenta como única opción.
Quiero decir que es más fácil de comprender y controlar la llamada a un método público de un objeto puesto que sabemos qué es lo que va a ocurrir y casi cuándo.
Pero sí me parece que es de alguna manera diferenciable eso, por mucho que internamente se traduzca en mensajes, con por ejemplo la creación de un mensaje nuevo (no tiene que ser de windows como ya se ha comentado) que se lance para que objetos preparados con métodos "oreja" reaccionen en consecuencia. Esta reacción es menos previsible, no es una llamada explicita.
Responder Con Cita
  #23  
Antiguo 16-05-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Kafu llegó y dijo
Un saludo a todos.
... creo que en lo básico es un tema de semántica,
desde mis escasos conocimientos sí se me hace más cómoda una diferenciación entre método y mensaje.
Tienes razón, es una cuestion de semántica y ciertamente cada quien utilizará la terminología con la cual se sienta más cómodo.

Cita:
Kafu llegó y dijo

Perdonadme si no soy muy estricto en la terminología. Creo que para quien no se interna a menudo en la vcl, que francamente da miedo, el uso de métodos explicitos es lo que se nos presenta como única opción.
Quiero decir que es más fácil de comprender y controlar la llamada a un método público de un objeto puesto que sabemos qué es lo que va a ocurrir y casi cuándo.
También esto es correcto. El trabajo del VCL es lidiar con las entrañas del Api de Windows para proporcionarnos una interfaz más sencilla y acorde a la semántica de Delphi. En una gran cantidad de ocasiones el programador no tiene que entender las entrañas del VCL ni del Api de Windows, de lo contrario estaríamos mejor programando en C.


Cita:
Posteado originalmente por Kafu
Pero sí me parece que es de alguna manera diferenciable eso, por mucho que internamente se traduzca en mensajes, con por ejemplo la creación de un mensaje nuevo (no tiene que ser de windows como ya se ha comentado) que se lance para que objetos preparados con métodos "oreja" reaccionen en consecuencia. Esta reacción es menos previsible, no es una llamada explicita.
Aquí es donde ya difiero pero el punto es que no me he dado a entender bien. Yo no estaba tratando de establecer un paralelismo entre Windows y Delphi. Uno y otro son dos cosas muy distintas. Uno es un sistema operativo y el otro un ambiente de desarrollo y un lenguaje de programación.

Lo que yo trato de establecer es:

Desde el punto de vista teórico de orientación a objetos, los objetos se mandan mensajes unos a los otros.

En la práctica, distintos sistemas implementarán los objetos y el envío de mensajes de formas distintas.

Delphi y Windows son dos ejemplos de implementación de objetos y ambos lo hacen de maneras muy distintas

El hecho de que una llamada a un método en Delphi sea un mensaje desde el punto de vista OO, no se debe a que internamente se traduzca a una llamada a SendMessage del Api de Windows, sino a que le estamos comunicando a un objeto lo que deseamos hacer con él.

La razón de que Form1.Close, desde el punto de vista de OO, sea un mensaje, no se debe a que se traduzca en una llamada a SendMessage(Form1.Handle, WM_CLOSE, 0, 0). Se debe simplemente a que le estamos comunicando al objeto Form1 que se cierre.

Esto es, OO establece el concepto de mensajes desde un punto de vista conceptual y no se preocupa de como estos mensajes se implementen porque de hecho OO no se refiere a ningún lenguaje en particular.

Por otro lado, si bien Delphi y Windows son sistemas muy distintos y cada cuál resuelve las cosas a su manera, Delphi debe comunicarse con Windows. Dado que hablan lenguas distintas (implementan OO de formas distintas) debe haber una traducción. El traductor (al menos para la parte visual) es justamente el VCL.



Y lo cierto también es que, al programar en Delphi, debido a que en ocasiones debemos lidiar con el Api de Windows, conviene por razones prácticas distinguir llamadas a métodos (implementación Delphi de mensajes OO) de mensajes a ventanas (implementación de Windows de los mensajes OO)

// Saludos
Responder Con Cita
  #24  
Antiguo 19-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Posteado originalmente por roman
al programar en Delphi, debido a que en ocasiones debemos lidiar con el Api de Windows, conviene por razones prácticas distinguir llamadas a métodos
Ese fue el comienzo del debate, en lo que creo que estamos todos de acuedo!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #25  
Antiguo 19-05-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
delphi.com.ar llegó y dijo
Ese fue el comienzo del debate...
No precisamente, en realidad fué:

Cita:
Hace varias lunas delphi.com.ar dijo:

Bueno, ante todo aclaremos que estas confundiendo los temas, no estas enviando mensajes, estas queriendo ejecutar un método propio de una clase, tené en cuenta que los mensajes solo se los puedes enviar a las ventanas, en Delphi todos los componentes heredados de TControl y alguno otro en particular que cree una ventana.
Tu afirmación fue categórica y negó los principios de OO sin aclarar que te referías a los usos y costumbres pues, tal como

Cita:
marcs indicó

es cierto que existen los dos significados...

- Desde el punto de vista cuotidiano del programador windows, entendemos que enviar un mensaje es ejecutar una llamada a la API de Windows.

- Sin embargo, cuando se estudia la orientación a objetos desde el punto de vista teórico, lo que nos venden ( o al menos me vendieron a mi) es que los métodos son la manera de implementar lo que a nivel conceptual es enviar un mensaje a un objeto
.
Y el segundo significado no sólo es el que establece la teoría de OO (aunque la práctica use otra terminología), sino que es válido e importante para quienes se encuentren estudiando orientación a objetos.

// Saludos
Responder Con Cita
  #26  
Antiguo 20-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Tenés razón en que fué un no categórico, pero como vos bien dijiste, conviene por razones prácticas distinguir llamadas a métodos (implementación Delphi de mensajes OO) de mensajes a ventanas (implementación de Windows de los mensajes OO)
Creo que en eso estamos todos de acuerdo.

Saludos y Feliz Cumpleaños!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #27  
Antiguo 20-05-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Posteado originalmente por delphi.com.ar
Saludos y Feliz Cumpleaños!
Muchas gracias d.c.a!

Me parece que sería buena idea declarar cerrado este debate para no empantanarnos en él

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:16:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi