You are on page 1of 30

3.

RELACIONES ENTRE CLASES

Contenido

Introduccin
Agrupaciones de objetos: colecciones

Relacin de Asociacin
Relacin de Dependencia
Relacin de Especializacin/Generalizacin

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Asociacin
Relacin estructural y semntica que define una
conexin al mismo nivel entre dos o ms clases
(tambin se produce entre objetos).
Tiene gran uso en bases de datos.
En UML se representa mediante una lnea continua
que une las clases asociadas:
Cliente

Persona

Empleado

trabaja para

Empresa

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Cmo describir relaciones con UML


Para especificar ms una relacin se pueden incluir
detalles adicionales (denominados adornos en UML):
Nombre. Identificador de la relacin.
Rol. Papel que desempea cada clase en la relacin.
Multiplicidad. Nmero de elementos que intervienen por cada una
de las clases (indica si se necesitan varios elementos).

Ejemplo. Relacin entre una empresa y las personas


que trabajan en ella.
nombre

multiplicidad
Persona

Trabaja para

1..*
-empleado

0..*
-patrn

Empresa

rol
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Multiplicidad de una asociacin


La multiplicidad indica el nmero de elementos de
un tipo que se relacionan con elementos de otro.
Cuando la multiplicidad mnima es 0 la relacin es
opcional (puede no llegar a producirse).
Multiplicidad

Significado

Ejemplo

nmero

Valor numrico exacto.

Indeterminado.
Cualquier valor incluso 0.

mnimo..mximo

Intervalo. Desde mnimo hasta


mximo, ambos inclusive.

numero1, numero2

Lista de valores.

2..4
3, 5, 7

Cualquier combinacin de las reglas


anteriores.

1..*
1, 3, 5..8

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Agregacin
Asociacin que representa la relacin entre un todo
y sus partes (elementos que forman parte de otro):
Si se elimina el elemento formado por otros agregados no
se produce la eliminacin de las partes que lo forman.
Cualquier accin que se realice sobre uno de los elementos
se propaga al otro.
Una parte puede pertenecer a varios agregados.

En UML la agregacin se indica mediante un rombo


vaco junto a la clase correspondiente al todo.
ClaseTodo

ClaseParte

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Composicin
Es un tipo de asociacin ms fuerte, con la que se
indica que desaparecen las clases componentes si
lo hace la clase compuesta.
Tambin se puede usar con el sentido: si se destruye
el componente desaparece la clase compuesta.
En UML se representa con un rombo relleno junto
a la clase que define al compuesto.
ClaseCompuesta

Matrimonio

ClaseComponente

Contrayente

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Ejemplo: automvil
Sin motor no hay automvil (por definicin).
Sin embargo, si no hay volante, puertas o ruedas,
s puede seguir considerndose automvil.
Automovil
1

1
1
Motor

0..1
Volante

1
2..*
Puerta

2..*
Rueda

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Asociaciones involutivas o reflexivas


La misma clase aparece en ambos extremos de la
asociacin.
Ejemplos
Jugador
1

Empleado
0..*

1
juega con

0..*
dirige a

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Asociaciones n-arias
Las asociaciones ms habituales son las binarias,
pero tambin se pueden definir de grado mayor.
En las asociaciones ternarias, o de grado superior,
no se puede recorrer la relacin de un extremo a
otro, sino que todas las clases forman parte (a la
vez) de la misma.
Equipo

Jugador

Temporada

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Clases asociacin
Permiten aadir propiedades, mtodos y otras
caractersticas a las propias asociaciones.
Se utilizan cuando la informacin que se aporta
slo se necesita mantener mientras se produzca
la asociacin.
Persona

Empresa

-nombre
-numSegSocial

-nombre
-cif
Trabajo
-cargo
-periodo
-sueldo

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Ejercicios
Especificar las asociaciones que pueden producirse
entre las siguientes clases:
Documento, Prrafo y Frase.
Usuario y Directorio (carpeta de archivos).
Universidad, Departamento, Estudiante, Profesor y
Curso.
Realizar un diagrama de clases UML para cada uno
de los casos.
Pueden variar los diagramas de objetos asociados
a estos diagramas de clases?
Dibujar un diagrama de objetos de ejemplo para
cada uno de los casos anteriores.
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Ejercicios
Documento

Usuario

Parrafo

propietario

Frase

Directorio continente

usuario autorizado

En el rol tambin
puede indicarse la
visibilidad

contenido

Universidad

tiene

1..*

1..*

Departamento
1..*

1..*
asignado a

miembro

-director
0..*
Estudiante

0..* asiste

0..*

1..*
Curso

0..*

imparte 1..*

1..*
0..1
Profesor

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Asociaciones en Java
Una propiedad de la clase es un objeto de otra clase.
(se almacena una referencia a esa otra clase, no sus datos)
15
Telefono 1
esta conectado a

Todo

Propietario

Boton

Parte

Parte

class Telefono
{
private Boton teclado[];
}
class Todo
{
private Parte esParteDe;
}
class Propietario
{
private Parte esParteDe;
}

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Agregacin en Java
public class Todo
{
private Parte esParteDe;
...
}
class Parte
{
...
}
Se escriben las dos clases en el mismo archivo fuente
La clase Todo es pblica y da nombre al archivo fuente

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Composicin en Java
class Propietario
{
private Parte esParteDe;
...
class Parte
{
...
}
}
Se implementa la clase Parte en el interior de la clase que
representa el todo (clase interna)
Un objeto de tipo Parte se destruir cuando lo haga el
objeto de tipo Propietario que lo contiene
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Ms caractersticas de las relaciones


Existencia o duracin:
indica el tiempo de vida de un objeto.
Custodia de un objeto:
especifica quin tiene un objeto.
El propietario de un objeto es tambin el que decide cuando
termina su existencia.
En una agregacin la custodia es temporal, mientras que en
una composicin est implcita.
Flexibilidad:
pueden cambiar los objetos que forman parte de la relacin?
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Caractersticas de las asociaciones


Tiempo de vida de los elementos de la asociacin
Composicin: el mismo.
Al destruirse el todo se destruyen las partes.
Agregacin: distinto.
Cada elemento es independiente.
Flexibilidad en las asociaciones
Composicin: inflexible.
Los constituyentes forman siempre parte del grupo.
Agregacin: flexible.
Se establecen relaciones temporales entre elementos.
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Contenido

Introduccin
Agrupaciones de objetos: colecciones

Relacin de Asociacin
Relacin de Dependencia
Relacin de Especializacin/Generalizacin

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Dependencia
Relacin de uso entre dos elementos: uno de los
elementos utiliza al otro.
El cambio en la definicin de uno de los elementos
(independiente) podra afectar a la definicin del
otro (dependiente), pero no necesariamente en el
sentido contrario.
El elemento independiente no conoce la existencia del
elemento dependiente.
Siempre que haya elementos intercambiables se
produce una relacin de dependencia.
Ejemplos:
Reproductor Blu-ray utiliza discos.
Ciclista usa bicicleta.
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Dependencia en UML
En UML se representa con:
lnea discontinua.
dirigida (hacia donde apunta la flecha).
algunas veces se etiqueta (puede tener nombre).
ClaseDependiente

ClaseIndependiente

Video
marca
grabar( c : Canal )
reproducir()
parar()
rebobinar()

Canal

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Dependencia en Java
En uno de los mtodos de la clase se utiliza un objeto de
otra clase como parmetro.
class Video
{
...
public void grabar(Canal x)
{
// implementacin del mtodo
}
...
}
En Java no suele modelizarse expresamente la asociacin
simple (aquella que no es ni agregacin ni composicin).
En su lugar se suele emplear una relacin de dependencia.
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Dependencias reflexivas
La misma clase aparece en ambos extremos de la
dependencia. Un objeto de esa clase utiliza a otro
objeto de la misma clase.
Ejemplo
Pez
come
use

Estereotipo (puede indicarse para


especificar el tipo de dependencia)
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Caractersticas de las dependencias

Flexibilidad
Relaciones flexibles (pueden cambiar con el tiempo):
Un elemento independiente pasa a ser custodiado
temporalmente por el objeto dependiente.
Tiempo de vida de los componentes
Distinto.
Cada elemento tiene su propio ciclo de vida.

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Contenido

Introduccin
Agrupaciones de objetos: colecciones

Relacin de Asociacin
Relacin de Dependencia
Relacin de Especializacin/Generalizacin

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Especializacin o Generalizacin
Relacin entre un elemento general (superclase o
padre) y otro ms especfico (subclase o hijo).
Sirve para hacer clasificaciones detalladas.
En funcin de cmo se interprete la relacin:
Especializacin: va desde los elementos ms generales
hacia los ms especficos.
Generalizacin: va desde los elementos ms especficos
hacia los ms generales.

En el contexto de las clases se habla de herencia,


ya que las clases especficas tienen como mnimo
los mismos miembros que las clases generales.
No es posible definir reflexividad en esta relacin.
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Especializacin o Generalizacin

Superclase

Generalizacin

Subclases
Baloncesto

Ftbol

Beisbol

Especializacin

Pelota

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Especializacin/Generalizacin en UML
En UML se representa con lnea continua con una
punta de flecha hueca apuntando hacia el padre.
Aunque no es habitual, puede tener tambin un
nombre (til en grandes rboles jerrquicos).
ClasePadre

ClaseHija1

ClaseHija2

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Especializacin/Generalizacin en Java
Cuando se declara la clase se puede indicar que se hereda
de otra clase con la instruccin extends seguida de la
clase que se especializa.
[modificadores] class NombreClase extends Clase
{
...
}
Ejemplo.
class ClaseHija extends ClasePadre
{
...
}
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Definir clases a partir de otras clases


De una manera sencilla se suelen definir nuevas clases a
partir de otras reutilizando elementos:
Agrupando
Una o varias propiedades de la clase son objetos de
otra clase:
internos: composicin
externos: agregacin o dependencia
Heredando
Se extiende una clase, aadiendo o modificando sus
caractersticas o funcionalidades.
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Resumen
Qu se debera saber con este tema?
Conocer cundo se emplean las relaciones de asociacin,
dependencia y herencia en un diseo orientado a objetos.
Realizar diagramas de clases y de objetos con UML en los
que se indiquen las relaciones que se producen entre sus
elementos con el mayor detalle posible.
Conocer qu es una coleccin, cules son las ms habituales
y saber elegir la ms adecuada a cada situacin.
Escribir clases en Java que usen relaciones y colecciones,
as como programas que manejen esas clases.
Programacin orientada a objetos

You might also like