You are on page 1of 11

OOP Introduccin: Java - 23 - Fernando Berzal

Relaciones entre clases: Relaciones entre clases: Relaciones entre clases: Relaciones entre clases:
Diagramas de clases UML Diagramas de clases UML Diagramas de clases UML Diagramas de clases UML


Las relaciones existentes entre las distintas clases
nos indican cmo se comunican los objetos de esas clases entre s:


Los mensajes navegan
por las relaciones existentes entre las distintas clases.





Existen distintos tipos de relaciones:

- Asociacin (conexin entre clases)

- Dependencia (relacin de uso)

- Generalizacin/especializacin (relaciones de herencia)




OOP Introduccin: Java - 24 - Fernando Berzal

Asociacin
Una asociacin es una relacin estructural
que describe una conexin entre objetos.




Grficamente, se muestra como una lnea continua
que une las clases relacionadas entre s.

Navegacin de las asociaciones

Aunque las asociaciones suelen ser bidireccionales (se pueden
recorrer en ambos sentidos), en ocasiones es deseable hacerlas
unidireccionales (restringir su navegacin en un nico sentido).

Grficamente, cuando la asociacin es unidireccional, la lnea
termina en una punta de flecha que indica el sentido de la
asociacin:


Asociacin unidireccional


Asociacin bidireccional
OOP Introduccin: Java - 25 - Fernando Berzal



equivale a





class Cuenta
{
private Dinero balance;

public void ingresar (Dinero cantidad)
{
balance += cantidad;
}

public void retirar (Dinero cantidad)
{
balance -= cantidad;
}

public Dinero getSaldo ()
{
return balance;
}
}


Hemos supuesto que Dinero es un tipo de dato con el que se pueden
hacer operaciones aritmticas y hemos aadido un mtodo adicional que
nos permite comprobar el saldo de una cuenta.
OOP Introduccin: Java - 26 - Fernando Berzal



viene a ser lo mismo que



con la salvedad de
que el enlace bidireccional hemos de mantenerlo nosotros


public class Cuenta
{

private Cliente titular;

}

public class Cliente
{

private Cuenta cuenta[];

}

Un cliente puede tener varias cuentas, por lo que en la clase cliente
hemos de mantener un conjunto de cuentas (un vector en este caso).
OOP Introduccin: Java - 27 - Fernando Berzal

Multiplicidad de las asociaciones
La multiplicidad de una asociacin determina
cuntos objetos de cada tipo intervienen en la relacin:



El nmero de instancias de una clase que se relacionan
con UNA instancia de la otra clase.



- Cada asociacin tiene dos multiplicidades
(una para cada extremo de la relacin).


- Para especificar la multiplicidad de una asociacin hay que indicar la
multiplicidad mnima y la multiplicidad mxima (mnima..mxima)


Multiplicidad Significado
1
Uno y slo uno
0..1
Cero o uno
N..M
Desde N hasta M
*
Cero o varios
0..*
Cero o varios
1..*
Uno o varios (al menos uno)


- Cuando la multiplicidad mnima es 0, la relacin es opcional.


- Una multiplicidad mnima mayor o igual que 1 establece una
relacin obligatoria.


OOP Introduccin: Java - 28 - Fernando Berzal


Profesor Departamento
1
0..1
dirige

Todo departamento tiene un director.
Un profesor puede dirigir un departamento.




Todo profesor pertenece a un departamento.
A un departamento pueden pertenecer varios profesores.



Relacin opcional Relacin obligatoria
Un cliente puede o no Una cuenta ha de tener
ser titular de una cuenta un titular como mnimo


Relaciones involutivas
Cuando la misma clase aparece en los dos extremos de la asociacin.



OOP Introduccin: Java - 29 - Fernando Berzal

Agregacin y composicin
Casos particulares de asociaciones:
Relacin entre un todo y sus partes


Grficamente,
se muestran como asociaciones con un rombo en uno de los extremos.


Agregacin
Las partes pueden formar parte de distintos agregados.




Composicin
Agregacin disjunta y estricta:
Las partes slo existen asociadas al compuesto
(slo se accede a ellas a travs del compuesto)


OOP Introduccin: Java - 30 - Fernando Berzal

Dependencia
Relacin (ms dbil que una asociacin) que muestra la relacin entre
un cliente y el proveedor de un servicio usado por el cliente.

- Cliente es el objeto que solicita un servicio.

- Servidor es el objeto que provee el servicio solicitado.


Grficamente, la dependencia se muestra como una lnea discontinua
con una punta de flecha que apunta del cliente al proveedor.


Ejemplo
Resolucin de una ecuacin de segundo grado





a
ac b b
x
2
4
2

=


Para resolver una ecuacin de segundo grado hemos
de recurrir a la funcin sqrt de la clase Math
para calcular una raz cuadrada.

NOTA:

La clase Math es una clase degenerada que no tiene
estado. Es, simplemente, una coleccin de funciones
de clculo matemtico.

OOP Introduccin: Java - 31 - Fernando Berzal

Herencia (generalizacin y especializacin)
La relacin entre una superclase y sus subclases


Objetos de distintas clases pueden tener atributos similares y exhibir
comportamientos parecidos (p.ej. animales, mamferos).





public class Empleado
{
...
}

public class Profesor extends Empleado
{
...
}

public class PAS extends Empleado
{
...
}





OOP Introduccin: Java - 32 - Fernando Berzal


La nocin de clase est prxima a la de conjunto:

Generalizacin y especializacin
expresan relaciones de inclusin entre conjuntos.







Instancias: coches vehculos

- Todo coche es un vehculo.

- Algunos vehculos son coches.



Propiedades: propiedades(coches) propiedades(vehculos)

- Un coche tiene todas las propiedades de un vehculo.

- Algunas propiedades del coche no las tienen todos los vehculos.

OOP Introduccin: Java - 33 - Fernando Berzal

Jerarquas de clases



Las clases se organizan
en una estructura jerrquica formando una taxonoma.


- El comportamiento de una categora ms general
es aplicable a una categora particular.


- Las subclases heredan caractersticas de las clases de las que se
derivan y aaden caractersticas especficas que las diferencian.



En el diagrama de clases,
los atributos, mtodos y relaciones de una clase se muestran en el nivel
ms alto de la jerarqua en el que son aplicables.