viernes, 29 de noviembre de 2013

1.6 Asociaciones


El concepto asociación tiene diversas interpretaciones en OO. En primer lugar puede hacer referencia a la clase Asociación, que actúa como clase "intermedia" entre dos clases A y B donde la pruralidad entre éstas tiene la forma (*, *) (muchos, muchos). Se podría hacer cierta analogía con la teoría de base de datos en donde la tabla intermedia permite romper la relación (M, M). 

Por otro lado una asociación puede referirse a un simple vínculo entre una clase y otra, o dicho de otro modo: una relación. Hay diferentes tipos de asociaciones, todas hacen referencia a una relación semántica que vincula a las instancias de cada clase. Generalmente se suele etiquetar estas asociaciones con un nombre (lo que se conoce como rol). Las relaciones típicas son: "es parte de", "está contenido en", "es una descripción de", "conoce a", "utiliza/gestiona a". 
Por ejemplo: Motor es parte de Auto. 


El rol indicará el nombre, la multiplicidad de ambos extremos y la navegabilidad (una flecha que indica en sentido no sólo de la lectura sino que además indica la visibilidad de una clase a la otra). 

Después tenemos al concepto asociación calificada. Que no es más que un calificador (un cuadro a la par de la clase) que indica o hace referencia al atríbuto que relaciona UNA instancia de una clase con la otra. Este tipo de asociación se presenta cuando se tiene una cardinalidad (1,*). Básicamente la idea es añadir más detalles al diagrama a fin de señalar como es que se procede a realizar una vinculación en el caso (1,1). 
Por ejemplo, tenemos la clase ListaDeProductos y la clase Producto donde tenemos (1,1..*). El atributo que hace de calificador será IDProducto, por tanto al lado del cuadro de la clase ListaDeProductos añadimos el calificador y lo rotulamos como IDProducto. Ahora la relación pasa a ser (1,1) y se leería: un IDProducto hace referencia a un Producto. 
También una asociación puede ser reflexiva, que es cuando hace clase hace referencia a si misma. 




Por otro lado el concepto asociación también significa una relación de composición o agregación. La diferencia entre composición y agregación está en el tiempo de vida y en como se afecta la relación entre la clase Compuesto y las clases Partes. En una composición (que se representa como un rombo pintado o relleno) la parte depende exclusivamente del compuesto. No puede existir una parte sin un todo. En la agregación (el nombre completo sería agregación compartida) el tiempo de vida tanto de las partes como el compuesto es independiente y cada parte puede existir sin un compuesto; además de poder estar relacionada con más de un compuesto. Se representa con un rombo hueco o sin pintar. 



material extra:

http://www.cristalab.com/tutoriales/programacion-orientada-a-objetos-asociacion-vs-composicion-c89337l/

No hay comentarios:

Publicar un comentario