Reflexión

Recopilado por Germán S. Arduino


From: Alejandro F. Reimondo
To: smalltalking@gruposyahoo.com.ar
Sent: Tuesday, June 04, 2002 6:44 PM
Subject: Re: [objetos] [Reflection]

Hola Hugo,

Creo que hay artículos en nuestra página
de "Lecturas Recomendadas"
en http://www.smalltalking.net/Papers/index.htm
en la sección de "Otros links de interés"

 

pero todavía la veo muy abstracta... 

Cuando puedas usarla te darás cuenta lo simple que es.
Entendiste el ejemplo del #displayAt:with:,#extent, etc. ?
Si no es así no dejes de decirlo y trato de ser mas claro.

La idea es que un objeto, pudiendo conocer que mensajes
entiende otro objeto puede elegir que protocolo usar con él.
De esta manera evitaría enviar mensajes que el objeto no entiende.

hasta pronto,
Ale.

 

From: Hugo Fajardo
To: smalltalking@gruposyahoo.com.ar
Sent: Tuesday, June 04, 2002 4:38 PM
Subject: Re: [objetos] [Reflection]


Hola Ale.

Gracias por la explicación...

pero todavia la veo muy abstracta...

Si tienes un ejemplo mas detallado te agradeceré o si tienes algun paper o articulo que puedas enviarme, me será de mucha utilidad.

Saludos!



Hola Hugo,

En algunas situaciones un objeto necesita conocer acerca del funcionamiento de otro objeto.
Por ejemplo una herramienta que dibuja objetos puede enviarle #displayAt:with: a objetos que entiendan ese mensaje, o puede enviarle el mensaje #extent a un objeto y dibujar un rectángulo simbolizando al objeto, en caso contrario puede dibujar un circulito..., un rectangulito con el #name dentro, etc.

De esta manera decimos que el objeto "reflexiona" sobre el objeto que manipula.
En smalltalk tenes reflexión sobre cualquier objeto pues el comportamiento también es un objeto (las clases, métodos, mensajes, etc. son objetos como cualquier otro).

La capacidad de reflexión es la herramienta básica/mínima
que se requiere para que un sistema sea flexible.

Hay dos características adicionales que son importantes para la construcción de sistemas de objetos además de la reflexión.

1.- la posibilidad de manejar eventos para revertir el sentido de los mensajes (hemos hablado de esto hace tiempo en la lista).

2.- la posibilidad de metaprogramación.


De (1) podemos decir que nos permite hacer subsistemas que no definen un protocolo, sino que quien los usa define como es el protocolo que desea usar para con el subsistema.

La metaprogramación es la posibilidad de que un objeto modifique a otro,.
Es decir, no solo importa que un objeto sepa como funciona otro, sino que además pueda agregarle comportamiento o refinarlo...
La arquitectura de smalltalk en donde todo es un objeto, es muy potente en este punto y te permite que tu sistema pueda modificarse mientras funciona, pues agregar comportamiento es agregar objetos...

Es importante decir, además, que tanto la reflexión como la metaprogramación son "actividades comunes" en los smalltalkers, es decir, son técnicas aceptadas y de simple aplicación; no se consideran técnicas de "hackers" o de "expertos".

hasta pronto,
Ale.
 


ArSol.biz 2004