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.