Agenda
1 • Objetivos
2 • Relaciones entre clases
3 • Asociación
4 • Agregación
5 • Composición
6 • Dependencia
7 • Generalización
3
Objetivos
Al finalizar la sesión, usted estará en capacidad de:
Comprender cómo los objetos colaboran e intercambian información en una aplicación
Conocer los diferentes tipos de relaciones entre clases: asociación, agregación, composición, dependencia y generalización.
Relaciones entre clases
Un conjunto de objetos aislados tiene escasa capacidad para resolver un problema.
En una aplicación los objetos colaboran e intercambian información, mantienen distintos tipos de relaciones entre ellos
5
Relaciones entre clases
A nivel de diseño, podemos distinguir entre 5 tipos de relaciones básicas entre clases de objetos:
Dependencia
Asociación
Agregación
Composición
Generalización (herencia)
Asociación
Es la relación más importante y común.
Es una relación estructural que especifica que los objetos de una clase están conectados con los objetos de otra.
Representa una relación entre dos clases independientes que se mantiene durante la vida de los objetos de dichas clases.
En UML se indica:
el nombre de la relación
el sentido de dicha relación
y las multiplicidades en los dos extremos.
7
Navegabilidad de una asociación
Indica la dirección en que se puede navegar de un objeto de una clase a un objeto de otra clase.
Unidireccional (unilateral):
en un único sentido
Navegabilidad de una asociación
Bidireccional (bilateral):
en ambos sentidos
9
Asociación
Una clase puede tener una o más asociaciones con otra clase.
Ejemplo:
Se muestra dos asociaciones entre las clases Vuelo y Piloto. Una asociación con el atributo piloto y otra con el atributo co-piloto.
Multiplicidad de una asociación
Indica el número de instancias de una clase que pueden ser asociadas a una sola instancia de otra clase.
Indica el grado con el que una clase se asocia a otra.
Se representa gráficamente en los extremos de la relación.
11
Tipos de Multiplicidad
Tipo Descripción
(1..1) Uno a uno (exactamente una instancia) (1..*) Uno a muchos (una o más instancias)
(*) Muchos a muchos (múltiples instancias) (0..1) Opcional (Cero o una instancia)
(0..*) Opcional múltiple (Cero o más instancias) (n) Número fijo (n instancias)
Asociación Uno a Muchos (1..*)
Una instancia de la clase A puede estar relacionada con muchas instancias de la clase B, pero una instancia de la clase B está relacionada solamente con una instancia de la clase A.
13
Asociación Muchos a Muchos (*)
Una instancia de la clase A puede estar relacionada con muchas instancias de la clase B, y una instancia de la clase B puede estar relacionada con muchas instancias de la clase A.
Asociación
En Java se refleja con referencias a objetos de la clase destino de la relación como atributos de la clase origen.
Si la relación tiene una cardinalidad superior a uno entonces se debe utilizar un array o una estructura de datos dinámica.
La conexión entre los objetos se realiza recibiendo la referencia de uno de ellos en el constructor u otra operación similar del otro.
15
Agregación
Modela una relación “ todo/parte”, en la que una clase representa una parte grande (el "todo"), que consta de elementos más pequeños (las
“partes”).
Es un tipo especial de asociación en que la clase de donde parte la relación representa el “todo” y las clases relacionadas “las partes”.
Agregación
La clase "todo" contiene un atributo, que será una colección, es decir un array, vector, etc, y contiene un método que agrega los elementos a la colección.
17
Agregación
Composición
Es un tipo de agregación que añade el matiz de que la clase “todo”
controla la existencia de las clases “parte”.
La clase “todo” creará al principio las clases “parte” y al final se encargará de su destrucción.
El ciclo de vida del objeto “parte” está relacionado con el del objeto
“todo”.
19
Dependencia
Es una relación de uso, es decir que una clase utiliza a otra. Y si ésta última se altera, la anterior se puede ver afectada.
Refleja que entre dos clases de objetos existe una posible colaboración temporal con algún propósito.
Puede indicar la utilización de un objeto de una clase como argumento de una operación de otra o en su implementación.
Generalización
Es una relación de herencia.
Se puede decir que es un relación “es un tipo de”.
21
Resumen
En esta sesión, ha aprendido lo sgte :
Reconocer los diferentes tipos de relaciones que se dan entre clases Cuando utilizar cada uno de los tipos de relaciones