Professional Documents
Culture Documents
Contenido
Introduccin
Agrupaciones de objetos: colecciones
Relacin de Asociacin
Relacin de Dependencia
Relacin de Especializacin/Generalizacin
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
multiplicidad
Persona
Trabaja para
1..*
-empleado
0..*
-patrn
Empresa
rol
Programacin orientada a objetos
Significado
Ejemplo
nmero
Indeterminado.
Cualquier valor incluso 0.
mnimo..mximo
numero1, numero2
Lista de valores.
2..4
3, 5, 7
1..*
1, 3, 5..8
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.
ClaseParte
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
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
Empleado
0..*
1
juega con
0..*
dirige a
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
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
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
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
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;
}
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
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
Contenido
Introduccin
Agrupaciones de objetos: colecciones
Relacin de Asociacin
Relacin de Dependencia
Relacin de Especializacin/Generalizacin
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
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
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
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
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.
Contenido
Introduccin
Agrupaciones de objetos: colecciones
Relacin de Asociacin
Relacin de Dependencia
Relacin de Especializacin/Generalizacin
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.
Especializacin o Generalizacin
Superclase
Generalizacin
Subclases
Baloncesto
Ftbol
Beisbol
Especializacin
Pelota
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
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
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