martes, agosto 09, 2005

La magia del Smalltalk: Capítulo 7 - ¿Quién soy?

Un objeto es idéntico sólo a si mismo.

Todos los entornos/lenguajes de OOP nos permiten diferenciar si un par de variables/referencias apuntan al mismo objeto.

Cualquier persona que programe en algún lenguaje de OOP experimentó con este concepto, sin embargo hay 2 cosas interesantes en cuanto a la identidad en Smalltalk.

La primera es que la identidad, en Smalltalk, es más "perdurable". Los objetos NO mueren entre sesiones asÌ que la identidad se mantiene mientras los objetos vivan, y eso es mucho más tiempo que lo que viven los objetos en lenguajes como C++/Java/etc (ver Capítulo 2).

La otra es que Smalltalk permite violar (con perdón de la palabra) la identidad con el mensaje #become:, veamos lo que dice el comentario del método:

"Swap the object pointers of the receiver and the argument. All variables in the entire system that used to point to the receiver now point to the argument, and vice-versa.

Pues si, lo que leen: La operación #become: intercambia todas las referencias a un objeto por referencias a otro objeto, y viceversa.

Es una operación muy poderosa, y a la vez peligrosa. Si quieren hacer trizas a su Smalltalk prueben algunas de las siguientes sentencias y traten de averiguar que fue lo que pasó:

nil become: 'Un string'.

Object become: String.

o mi favorita:

| s1 s2 |

s1 := 'Un String'.
s2 := 'Un String'.

s1 become: 'Otro String'.

Transcript show: s1; cr.
Transcript show: s2; cr.


¿Qué raro, no? Bueno, no es tan raro... pero tendrán que esperar hasta otro post para saber porque actúa así.

También tendrán que esperar a otro post para ver ejemplos útiles del uso de #become:.

¡Cuantos misterios! =o)

1 Comentarios:

At 1/10/05 00:17, Anonymous Anónimo said...

Hola Diego... te quisiera preguntar si no sabes de algun tutorial en español que sea bien PRACTICO de Smalltalk porque el que he encontrado es muy basico y diria mas bien teorico... o sino sabes de algundo en español dime el que sepas en ingles. Gracias y saludos desde Argentina!

 

Publicar un comentario

<< Principal