Vous êtes sur la page 1sur 19

3.

Relaciones entre clases

3. RELACIONES ENTRE CLASES

Objetivos
Comprender de qu forma interactan unas clases
con otras.
Diferenciar los tipos de relaciones que se pueden
producir entre las clases.
Modelar las relaciones estticas en UML mediante
diagramas de clases.
Usar diagramas de objetos UML para mostrar una
vista puntual de un problema.
Distinguir entre los distintos tipos de colecciones.
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

Contenido

Introduccin
Agrupaciones de objetos: colecciones

Relacin de Asociacin
Relacin de Dependencia
Relacin de Especializacin/Generalizacin

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Introduccin
Las clases no trabajan de forma aislada, sino que
colaboran unas con otras.
Con una relacin se puede establecer un vnculo
entre diferentes clases.
Las relaciones no son excluyentes, es decir, cada
clase puede mantener varias simultneamente.
Es tarea del diseador decidir la forma en la cual
se relacionan las clases (no siempre es fcil):
Un reloj tiene manecillas? o usa manecillas?

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Principios de desarrollo de software


Abstraccin (concepto en la mente del usuario)
Ignorar determinados detalles de un problema, centrando
la atencin en un nivel del mismo. Del resto se conocer
nicamente lo necesario para poder utilizarlo.
Ejemplo. Cada empleado en una fbrica de coches slo se
ocupa del elemento que le corresponde: puerta, rueda
Modularizacin (separacin fsica del cdigo)
Dividir un problema en partes bien definidas que puedan
ser construidas y examinadas separadamente, pero que
interacten de manera claramente establecida.
Ambos conceptos se complementan
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Responsabilidades de una clase


[Trabajando en conjunto con otras clases]
1. Conocer
Estar al corriente de sus datos privados encapsulados.
Estar enterada de la existencia de objetos conectados.
Estar enterada de cosas que se pueden derivar o
calcular a partir de ella.
2. Hacer
Hacer algo en una misma.
Iniciar una accin en otros objetos.
Controlar y coordinar actividades en otros objetos.
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Relaciones
Para decidir que tienen dos clases en comn hay
que plantearse la pregunta:
Qu relacin tiene una clase con la otra?
En funcin de la respuesta a la pregunta anterior,
se tienen principalmente relaciones de:
asociacin, tiene un o es parte de.
dependencia, usa a o trabaja con.
generalizacin / especializacin, es un.
El resto de relaciones que se pueden producir se
consideran variantes de estas.
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Relaciones en UML
Para especificar en UML las relaciones entre clases
se conectan las clases con lneas. En funcin de la
relacin que exista se usa un tipo de lnea distinto:
asociacin
dependencia
(la flecha apunta a la clase que se usa)
generalizacin / especializacin
(la flecha apunta a la clase ms general)

Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Ejercicio
Se va a realizar un simulador de ciclismo en el que se
ha decidido que deben cumplirse estos requisitos:
Manejar dos tipos diferentes de personas: ciclistas
y espectadores.
Los ciclistas irn por una carretera en la que estarn
los espectadores animando.
Las ruedas de la bicicleta pueden pincharse, siendo
necesario cambiarlas para poder seguir usndola.
Seleccione las clases candidatas para este simulador
y establezca las relaciones que piense que se puedan
producir. Dibuje un diagrama de clases UML con este
diseo (use StarUML u otro programa similar).
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Ejercicio
Se va a realizar un simulador de ciclismo en el que se
ha decidido que deben cumplirse estos requisitos:
Manejar dos tipos diferentes de personas: ciclistas
y espectadores.
Los ciclistas irn por una carretera en la que estarn
los espectadores animando.
Las ruedas de la bicicleta pueden pincharse, siendo
necesario cambiarlas para poder seguir usndola.
Seleccione las clases candidatas para este simulador
y establezca las relaciones que piense que se puedan
producir. Dibuje un diagrama de clases UML con este
diseo (use StarUML u otro programa similar).
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Consejos para disear relaciones


En algunos casos preguntarse qu relacin tiene
una clase con otra puede proporcionar ms de una
respuesta. En estos casos es interesante adems:
Establecer si la relacin es flexible (se pueden producir
intercambios de objetos sin que se vea afectada).
Comprobar si los elementos deben ser independientes.
Adems debe tenerse en cuenta
Tiempo de vida o duracin de un elemento
(tiempo desde que se crea hasta que se destruye)
Pertenencia o custodia
(si un elemento es propietario de otro)
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Paso de mensajes
Los objetos se comunican mediante el mecanismo
del paso de mensajes: desde un objeto se invoca
un mtodo de otro (se le encarga hacer algo).
Objeto
Propiedades
Mtodos
Mensajes

Mtodos de servicio
Mtodos

mtodos de un objeto disponibles


para otros objetos (pblicos)

Propiedades
Objeto
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

Colecciones de objetos
Los elementos de un mismo tipo, o que guarden
algn tipo de relacin, pueden tratarse con ms
eficacia si se agrupan.
Definicin de coleccin:
Objetos que almacenan un nmero arbitrario de
otros objetos.
Mtodos tpicos para manejar colecciones:
Aadir un elemento
Eliminar un elemento
Vaciar la coleccin (eliminar todos los elementos)
Recorrer coleccin (iterar sobre los elementos)
Consultar nmero de elementos coleccionados
Otros: ordenar la coleccin, buscar un elemento
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Clasificacin de las colecciones


Segn su tamao:
De tamao fijo.
El nmero de elementos no vara.
De tamao variable.
El nmero de elementos cambia con el tiempo.
La propia coleccin se encarga de aumentar o
reducir el tamao segn sea necesario.
Segn su mtodo de acceso:
Acceso por ndices.
Se accede al elemento de forma directa.
Acceso con iterador.
Se recorren los elementos de forma secuencial.
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Algunos ejemplos de colecciones (i)


Array

Coleccin fija de elementos indexados.


"Pepe"

"Ana"

"Juan"

"Pilar"

"David"

Lista

Elementos que mantienen el orden en que se insertaron.

Conjunto

Almacena elementos individuales, una nica vez como mximo.


No mantiene el orden en que se insertaron.
Platano

Pera
Uva

Manzana
Naranja
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Algunos ejemplos de colecciones (ii)


Mapa / Diccionario

Pares de asociaciones clave-valor. Las claves son nicas y


con ellas se obtienen los valores asociados (similar a un
array, pero los ndices no tienen por que ser numricos).
"Manolo Prez" 666-123456
"Juan Snchez" 666-654321
"Ana Rodrguez" 666-555555

A veces se definen colecciones combinadas (mapa-conjunto,


array-lista...) que tienen funcionalidades de dos colecciones
(una indica qu se almacena y la otra cmo est implementada).
Ejemplo. Array-lista: se almacena un array dinmicamente
como una lista. Se utiliza como un array (se accede a los
elementos mediante ndices), pero tambin se puede usar
como lista (acceder al elemento siguiente, al anterior).
Programacin orientada a objetos

3. RELACIONES ENTRE CLASES

Ejercicio
En el simulador de ciclismo del ejercicio anterior hay
algunos elementos en el problema que aparecen en
plural, como los espectadores o los ciclistas.
Sin embargo, en cada clase se debe siempre definir
el concepto en singular.
Cuando se requiere ms de un elemento de un mismo
tipo (multiplicidad) se usa una coleccin.
Suponga que ahora debe aadir al diseo las clases
Equipo (que tendr varios ciclistas) y Etapa (en la
que participan varios equipos).
Qu coleccin empleara para cada una de ellas?
Incluya tambin estas nuevas clases en el diagrama de
clases que realiz anteriormente.
Programacin orientada a objetos

Vous aimerez peut-être aussi