Apunte Colecciones Smalltalk
Objetos 1
Colecciones en Smalltalk
Introducción
1
Imaginemos querer modelar una agenda para una semana. Creamos nuestra clase Semana y, como sabemos que los días de la semana son 7, creamos 7 variables de instancia para cada uno de ellos en la clase. Esta situación no siempre es posible representar sólo con variables de instancias. Muchas veces vamos anecesitar modelar relaciones entre un objeto y varios (una relación 1 a N). Por ejemplo, los departamentos de un edificio, los estudiantes de una universidad, etc. En muchas oportunidades no vamos a poder conocer el número total o máximo de elementos o simplemente sólo sabremos que van a ser muchos. Para tales situaciones nos van a servir las colecciones. Las colecciones permiten agrupar objetospara poder operar sobre ellos. En general podremos referirnos a esa colección de objetos bajo un mismo nombre, y poder agregar o sacar objetos, filtrarlos, recorrerlos y muchas otras cosas de manera mucho más sencilla. Las colecciones nos van a permitir modelar conjuntos de objetos, como ser: las piezas de un tablero, los empleados de una fábrica, la flota de buques de una empresa de transportefluvial, etc. y poder realizar operaciones sobre ese grupo. Las colecciones se pueden ver como un conjunto de objetos, y de hecho vamos a decir eso normalmente (abusando del lenguaje), pero en realidad las colecciones son conjuntos de referencias a objetos; es decir, los objetos no están adentro de la colección, sino que la colección los conoce (los referencia) de alguna forma. Pero, ¿y si lascolecciones son un conjunto de objetos (o referencias más correctamente), cómo las representamos? Sabemos que en Smalltalk sólo tenemos objetos y mensajes, por lo cual las colecciones van a ser representadas como... objetos!!! Resumiendo, un objeto colección es un objeto que representa un conjunto de referencias a otros objetos, con el cual se van a poder realizar distintas operaciones sobre loselementos que ella referencia. La pregunta que nos surge ahora es la que da título a la siguiente sección: ¿Qué operaciones podemos hacer con una colección? Para poder responder más fácilmente y poder comprenderlo, vamos a elegir un ejemplo: una colección de CDs. Con la colección de CDs podemos:
● ●
Mirar los CDs recorrer la colección Organizarlos por artista ordenar la colección
1 Basado enel apunte “Colecciones en Smalltalk” de la Universidad Tecnológica Nacional – Facultad Regional Buenos Aires (cátedra de Paradigmas de Programación), de Victoria Pocladova, Carlos Lombardi, Leonardo Volinier y Jorge Silva.
● ● ●
Agregar nuevos CDs agregar elementos a la colección Regalar un CD quitar elementos de la colección Quedarme con los CDs de rock nacional hacer un filtro oselección de los elementos según un criterio.
●
Saber si tengo un CD de Kill Bill preguntarle a una colección si incluye o no un determinado objeto como elemento.
¿Y cómo se modela este comportamiento con objetos de Smalltalk? La respuesta debería ser obvia: con métodos definidos para las colecciones. Es decir, podemos crear nuestra instancia de colección que representa a nuestra colecciónde CDs y a ese objeto enviarle mensajes para agregarle un nuevo objeto CD, para que nos filtre los CDs de rock nacional, etc.
Primer ejemplo
La primera clase que vamos a usar es una colección que se llama Set. Un Set representa un conjunto entendido como los conjuntos matemáticos que aprendimos en la escuela. Para crear una colección Set y asignarla a una variable que represente a nuestracolección de CDs, escribimos: coleccionCDs := Set new. Supongamos que tenemos definida la clase de los CDs. Creamos instancias de CDs y los agregamos a nuestro conjunto coleccionCDs, mandándole el mensaje add:. Definimos además un cuarto CD que no agregamos. cd1 := CD new. cd1 titulo: ‘Abbey Road’. cd1 autor: ‘The Beatles’. cd1 origen: ‘U.K.’. cd2 cd2 cd2 cd2 := CD new. titulo: ‘Tribalistas’....
Regístrate para leer el documento completo.