Cuando necesito comparar si dos objetos son instancias de una clase, o si dos colecciones contienen instancias de una misma clase, etc, Smalltalk me dice que son distintas, cuando no lo son. Al fin y al cabo lo que necesito es que si comparo un objeto Puerta con otro objeto Puerta (Puerta = Puerta) me devuelva True.
Esto solo me pasa con Objetos que yo creo, no con objetos ya existentes en Smalltalk.
Adjunto unas imagenes de cuando intento testear esto que digo (con equals y '=') y falla.
Pd: intente manipular el mensaje '=' y se tilda el ide.
Hola Nicolás,
En primer lugar, el =
en Smalltalk no es un operador sino un mensaje. Podés ver su implementación en la clase Object.
Por otro lado, no necesitás comparar si dos objetos son instancias de la misma clase. Eso es algo que querés hacer pero que no deberías porque va en contra de los conceptos del paradigma vistos hasta ahora (ya se preguntó esto en el foro acá y acá).
Finalmente, tiene sentido que las pruebas que mostrás fallen dado que unObjeto y otroObjetoIgualAlAnterior son objetos distintos, con distintas identidades, independientemente de que sean instancias de la misma clase (si tuvieras un hermano gemelo serían prácticamente idénticos pero definitivamente no serían la misma persona).
El mensaje =
no se encarga de ver si dos objetos son de la misma clase. Para eso existen otros mensajes que se verán sobre el final de la materia y que estaría considerado un error usarlos en el TP1.
En una prueba unitaria deberías verificar el comportamiento de tus objetos, fijándote si cambiaron sus estados de la manera que vos esperabas pero sin violar el encapsulamiento.
Saludos,
Tomás