7. Identificación y modelado
7.4. Modelado del Diseño Estático
7.4.2. Relaciones
Existen varias relaciones estáticas entre clases que se pueden modelar, noso- tros nos vamos a centrar en las que consideramos más importantes: la herencia y la asociación, y dentro de esta última, la composición y la clase asocia- ción. A continuación se explica cada una de ellas:
CAPÍTULO 7. IDENTIFICACIÓN Y MODELADO
Herencia: son jerarquías de generalización/especialización. Como ya he- mos visto en otro capítulo, la herencia es el mecanismo que permite a una clase de objetos (subclase) compartir la estructura y el comportamiento de la clase de objetos (superclase) de la que está heredando y tener nuevas estructuras y comportamiento independientes de la superclase. La herencia se puede obtener generalizando, es decir, extrayendo la su- perclase a través de las subclases. Por ejemplo, si tenemos las clases libro y revista, podemos extraer los elementos comunes y obtenemos la super- clase documento. También puede ser a la inversa, es decir, a partir de la superclase, descomponer ésta en subclases con atributos y operaciones disjuntas. Siguiendo con el ejemplo de documento, esto ocurre si primero hubiéramos modelado la clase documento y luego la hubiéramos descom- puesto en las subclases libro y revista.
La Herencia se representa como una línea continua acabada en una punta de flecha hueca en el extremo de la superclase y orientada hacia ella. La figura 7.7 muestra un ejemplo de una relación de herencia.
Figura 7.7: Ejemplo de relación de herencia
Asociación: es el tipo de relación estructural más general y representa una dependencia semántica, es decir, las instancias de una clase están enlazadas con las instancias de otra clase. Por ejemplo, la clase empleados
CAPÍTULO 7. IDENTIFICACIÓN Y MODELADO
puede tener una asociación con una clase empresa llamada trabaja en. Se representa como una línea continua, entre las clases asociadas, como se ve en la figura 7.8.
Figura 7.8: Asociación entre Empleados y Empresa
En una asociación se pueden representar elementos adicionales para au- mentar el detalle del tipo de relación. De entre estos elementos vamos a destacar el nombre y la multiplicidad. El primero es el nombre de la asociación y debe ser lo suficientemente descriptivo como para distinguir esa asociación de cualquier otra. Se representa escribiendo el nombre jun- to a la línea de la asociación. La multiplicidad describe la cardinalidad de una relación, es decir, especifica cuántas instancias de una clase están asociadas con instancias de la otra y puede ser un número concreto, un rango o un conjunto de números, donde n o * representan cualquier valor. Se representa al lado de la clase. En la figura 7.9 se observa el nombre trabaja en y la cardinalidad, * para empleados, 1 para empresa.
Figura 7.9: Asociación detallada entre Empleados y Empresa
CAPÍTULO 7. IDENTIFICACIÓN Y MODELADO
una instancia de esa clase está asociada a otras instancias de la misma clase. Por ejemplo, es fácil intuir que en empresa van a existir emplea- dos que son jefes de otros empleados. La representación de este tipo de relación se muestra en la figura 7.10.
Figura 7.10: Ejemplo de asociación de una clase consigo misma Dentro de las asociaciones, también existen propiedades avanzadas de ellas, de entre las que vamos a destacar dos: la composición y las clases asociación.
Composición: es un tipo especial de asociación entre una clase, que representa la totalidad de esa clase, y las partes que la componen, con una fuerte relación de pertenencia, y, donde las instancias de las clases parte viven y mueren con la instancia del todo. En este tipo de relación, la clase que representa el todo, es la encargada de crear y destruir las instancias de las clases parte de ella. Además, las clases parte con una multiplicidad variable se pueden crear después de haberse creado la clase compuesta, pero a partir de ese momento, su ciclo de vida será el mismo que el de la clase compuesta. Por ejemplo, si pensamos en la clase coche, ésta puede estar compuesta de las clases motor, ruedas, chasis y carrocería, y no tiene sentido instanciar independientemente ninguna de las clases parte, si no dentro de la clase coche.
La Composición se representa como una línea continua acabada en rombo sombreado en el extremo del todo. La figura 7.11 muestra un ejemplo de una relación de composición, en este ejemplo se trata de crear un jugador para un juego de baloncesto, esta clase jugador baloncesto realiza acciones complejas combinando las operaciones simples ofrecidas por los dos clases que lo componen, piernas y brazos.
CAPÍTULO 7. IDENTIFICACIÓN Y MODELADO
Figura 7.11: Ejemplo de relación de composición
Clases asociación: se utilizan cuando necesitamos mantener propieda- des y operaciones de una asociación. El concepto que representa se puede definir de dos maneras: como una asociación con propiedades de clase o como una clase que tiene propiedades de asociación. Por ejemplo pense- mos en las clases alumnos y asignaturas, entre ellas existe una asociación notas que representa propiedades como curso, puntuación y número de convocatoria. Si intentáramos modelar notas como una clase normal, aso- ciada a asignaturas por un lado, y a alumnos por otro, no estaríamos expresando lo mismo, ya que una instancia específica de notas no esta- ría ligada a un par específico de instancias de alumnos y asignaturas. Con este tipo de clases estamos representando que no puede existir esa asociación sin las clases que relaciona.
Se representa con una línea discontinua desde la asociación hasta el sím- bolo de clase, como se representa en la figura 7.12.
CAPÍTULO 7. IDENTIFICACIÓN Y MODELADO
Figura 7.12: Clase Asociación Notas entre Alumnos y Asignaturas