Recurso Educativo Abierto

# 1.6 Relaciones

# Asociación

- Una asociación representa la relación entre dos o más clases.
- Una asociación binaria es una relación entre dos clases.
- Existe una asociación si un objeto de una clase requiere un objeto de otra clase para hacer su trabajo
- En UML, una asociación binaria está representada por una línea sólida que conecta dos clases.

# Agregación

La agregación es una forma especial de asociación y se conoce como relación débil. Una agregación es una asociación entre las clases A y B, donde cada instancia de la clase A contiene instancias
de la clase B

- En este sentido, una instancia de la clase B es parte de una instancia de la clase A.
- A la instancia de la clase A se le conoce como agregada (aggregate) y a la instancia de la clase B se le conoce como componente agregado, que será un atributo en la Clase A

Por ejemplo:
En una empresa se requiere un sistema para llevar la agenda de los clientes, de los cuales solo se requiere su número de cliente, nombre, dirección y teléfono. Además el sistema debe almacenar y mostrar la información de la agenda o buscar por el número de cliente.

¿Quién es la clase que es componente agregado y quien la clase a quien le vamos agregar?

# Composición

- Composición (relación fuerte), en la cual los objetos como atributos no tienen sentido fuera del objeto resultante.
- También se puede entender la composición como una relación en la que, los objetos, deben dejar de existir cuando lo hace el objeto compuesto.

En este ejemplo del Equipo de Futbol, la alineación se compone de 1 portero, 1 ofensivo o delantero, 9 defensivos y 0 hasta muchos suplentes en la banca. El siguiente diagrama también presenta una herencia de la Clase Jugador a los demás que son tipos de jugadores.

# Ejemplificación de la Asociación

a) Realiza el programa de Asociación entre las dos clases Chofer y Taxi. ¿Un Taxi tiene un Chofer? Sí y uno. ¿Chofer tiene un Taxi? No, necesariamente. El atributo de Chofer es parte de la Clase Taxi

¿Cuál es clase requiere de un objeto de otra clase para hacer su trabajo?

b) Diseña el diagrama de UML y agrega la clase EjecutaAsociacion y la relación de dependecia.

# Ejemplificación de la Agregación

a) Realiza el siguiente ejercicio con su diagrama UML de la Agenda y diseña tres agendas: Amigos, Familiares y Universidad.

b) Diseña el diagrama de UML incluye el EjecutaAgenda y la relación de dependecia.

c) Agrega cinco objetos a cada agenda y posteriormente, realiza un menú para visualizar solo la agenda que se quiera ver. 1. Amigos 2. Familiares 3. Universidad (datos de directores, estudiantes, etc.)

La relación de agregación se define como una conexión entre la clase agregada y una clase componente

Una asesora de seguros requiere tener una agenda de contactos de las personas para las que trabaja. Por lo cual se requiere rediseñar el siguiente diagrama de clases con datos de nombre, sexo, edad, teléfono y dirección. Podemos dar de alta, o registrar contactos, buscar datos, modificar los datos de los contactos y eliminar contactos.

1. Identificar las clases: sujetos o sustantivos. (color)

2. Identificar los atributos: adjetivos, características de los objetos. (color)

3. Identificar las operaciones: verbos, acciones u operaciones con los objetos. (color)

4. Identificar las relaciones: identificar la frase relacionada “tener” asociación. (color)

5. Identificar otras relaciones: “requiere”, “necesita” o “usa” dependencia.

6. Realiza el análisis y diseño de las clases, los tipos de relación y su diagrama UML.

7. Programa un sistema que represente la relación de Agenda-Persona-Contacto.

- ¿Una agenda tiene personas? Sí
- ¿Una persona tiene agenda? No
- ¿Una asesora de seguros requiere, necesita o usa una agenda de contactos? Sí
- ¿Una agenda de contactos requiere, necesita o usa una asesora? No
- Si es asociación y se requiere conocer el subtipo debe preguntar el número de elementos
- Si es un número exacto de elementos = Composición
- Si no es un número exacto o indefinido = Agregación

Solución:

Código (zip - 18202 B) En caso de no poder abrir, se encuentra al final en los Ficheros adjuntos.

# Ejemplificación de la Composición

La composición es un tipo de relación “fuerte “entre dos clases. Se identifica también con la frase “tiene”, “está compuesta de“. Generalmente se especifica el número de elementos que tiene o esta
compuesta.

Planteamiento
Una gallina está formada por un pico, plumas y dos alas. Todo Gallinero tiene un nombre y un tamaño de ancho de 2.5 por 5 de largo y puede almacenar gallinas.

Una gallina está formada por un pico, plumas y dos alas. Todo Gallinero tiene un nombre y un tamaño de ancho de 2.5 por 5 de largo y puede almacenar gallinas siendo cuatro gallinas.

1) Identificar las clases: sujetos o sustantivos. (color)

2) Identificar los atributos: adjetivos, características de los objetos. (color)

3) Identificar las operaciones: verbos, acciones u operaciones con los objetos. (color)

4) Identificar las relaciones: identificar la frase relacionada “tener” asociación. (color)

5) Identificar otras relaciones: “requiere”, “necesita” o “usa” dependencia.

6) Realiza el análisis y diseño de las clases, los tipos de relación y su diagrama UML.

1. ¿Un gallinero tiene gallinas? Sí, entonces hay asociación de ¿qué tipo Composición o Agregación?, ¿Cuántas tiene? 4, entonces es composición
2. ¿Una gallina tienen gallineros? No
3. ¿Una gallina tiene plumas? Sí, entonces hay asociación de ¿qué tipo Composición o Agregación?, ¿Cuántas tiene? 400, entonces es composición
4. ¿Una pluma tiene una gallina? No
5. ¿Una gallina tiene alas? Sí, entonces hay asociación de ¿qué tipo Composición o Agregación?, ¿Cuántas tiene? 2, entonces es composición
6. ¿Un ala tiene una gallina? No
7. ¿Una gallina tiene un pico? Sí, Sí, entonces hay asociación de ¿qué tipo Composición o Agregación?, ¿Cuántas tiene? 1, entonces es composición
8. ¿Un pico tiene una gallina? No
9. ¿Una gallina tiene patas? Sí, entonces hay asociación de ¿qué tipo Composición o Agregación?, ¿Cuántas tiene? 2, entonces es composición
10. ¿Una pata tiene una gallina? No
11. ¿Una gallina tiene ojos? Sí, entonces hay asociación de ¿qué tipo Composición o Agregación?, ¿Cuántas tiene? 2, entonces es composición
12. ¿Un ojo tiene una gallina? No

¿Cuáles son los tipos de relaciones entre las clases identificadas?

- Gallinero-Gallina: Composición porque tiene 4 Gallinas pero también puede ser de Agregación en caso que no se especifique numero de gallinas.
- Gallina-Pluma:Composición
- Gallina-Ala:Composición
- Gallina-Pico:Composición
- Gallina-Pata:Composición
- Gallina-ojo: Composición

Agrega otro componente a la gallina: cejas, oreja, cabello, etc.

Modifica el siguiente diagrama y agrega la clase del componente que seleccionaste:

Solución:

Código (zip - 20897 B) En caso de no poder abrir, se encuentra al final en los Ficheros adjuntos.

# HAZ AHORA:

Realizar el ejercicio de Equipo de Futbol y su alineación, diseña con al menos dos atributos para las clases. Jugador tiene nombre y número de jugador.

# Ficheros adjuntos

- Gallinas.zip (Ventana nueva)
- Agendas.zip (Ventana nueva)

# Referencias

Umbaugh, J., Jacobson, I., & Booch, G. (2005). El Lenguaje Unificado de Modelado Manual de Referencia Segunda Edición. Madrid: Pearson

Obra publicada con Licencia Creative Commons Reconocimiento Compartir igual 4.0