Relaciones entre clases¶
Una relación es una conexión entre dos clases que incluimos en el diagrama cuando aparece algún tipo de relación entre ellas en el dominio del problema. Se representan como una línea continua.
Los mensajes “navegan” por las relaciones entre clases; es decir, los mensajes se envían entre objetos de clases relacionadas, normalmente en ambas direcciones. A veces la definición del problema hace necesario que se navegue en una sola dirección, entonces la línea finaliza en punta de flecha.
Las relaciones se caracterizan por su cardinalidad, que representa cuántos objetos de una clase se pueden involucrar en la relación, y pueden ser:
- De herencia.
- De composición.
- De agregación.
Cardinalidad¶
Un concepto muy importante es la cardinalidad de una relación: representa cuántos objetos de una clase se van a relacionar con objetos de otra clase. En una relación hay dos cardinalidades, una para cada extremo de la relación, y pueden tener los siguientes valores:
| Cardinalidad | Significado |
|---|---|
| 1 | Uno y sólo uno |
| 0..1 | Cero o uno |
| N..M | Desde N hasta M |
| * | Varios |
| 0..* | Cero o varios |
| 1..* | Uno o varios (al menos uno) |
Herencia¶
La herencia es una propiedad que permite a los objetos ser construidos a partir de otros objetos; es decir, la capacidad de un objeto para utilizar estructuras de datos y métodos presentes en sus antepasados.
El objetivo principal de la herencia es la reutilización: poder utilizar código desarrollado con anterioridad. La herencia supone una clase base y una jerarquía de clases que contiene las clases derivadas.
Las clases derivadas pueden heredar el código y los datos de su clase base, añadiendo su propio código especial y datos, incluso cambiar aquellos elementos de la clase base que necesitan ser diferentes. Por esto, los atributos, métodos y relaciones de una clase se muestran en el nivel más alto de la jerarquía en el que son aplicables.
Tipos¶
- Herencia simple: una clase puede tener sólo un ascendente. Es decir, una subclase puede heredar datos y métodos de una única clase base.
- Herencia múltiple: una clase puede tener más de un ascendente inmediato, adquirir datos y métodos de más de una clase.
Representación¶
En el diagrama de clases se representa como una asociación en la que el extremo de la clase base tiene un triángulo.
Agregación y composición¶
Muchas veces una determinada entidad existe como un conjunto de otras entidades. En este tipo de relaciones un objeto componente se integra en un objeto compuesto. La orientación a objetos recoge este tipo de relaciones como dos conceptos: la agregación y la composición.
-
Agregación: asociación binaria que representa una relación todo-parte (pertenece a, tiene un, es parte de).
Los elementos parte pueden existir sin el elemento contenedor y no son propiedad suya.
Ejemplos: un centro comercial tiene clientes; un equipo tiene unos miembros.
El tiempo de vida de los objetos no tiene porqué coincidir. -
Composición: agregación fuerte en la que una instancia “parte” está relacionada, como máximo, con una instancia “todo” en un momento dado, de forma que cuando un objeto “todo” es eliminado, también son eliminados sus objetos “parte”.
Ejemplos: un rectángulo tiene cuatro vértices; un centro comercial está organizado mediante un conjunto de secciones de venta.