UPC FIB PROP Implementación Relaciones
UPC FIB PROP Implementación Relaciones
UPC FIB PROP Implementación Relaciones
Projecte de Programació
Implementación relaciones
Projecte de Programació
Fase de Implementación
Implementación de las relaciones:
Fase de Implementación
Implementación de las relaciones:
Fase de Implementación
Implementación de les relaciones: Recordemos que en
PROP nos limitamos a las siguientes relaciones*:
- Herencia : "es-un"
- Dependencia : "usa"
*UML es capaz de expresar más relaciones. Con éstas tenemos suficiente en PROP
Projecte de Programació
Fase de Implementación
Relación de Herencia:
Fase de Implementación
Relación de Herencia:
Usualmente la herencia la implementan los
compiladores/intérpretes del lenguaje de programación (LP).
Herencia Simple:
Fase de Implementación
Relación de Herencia:
Herencia Simple:
Fase de Implementación
Relación de Herencia:
Herencia Múltiple:
Fase de Implementación
Relación de Agregación:
Fase de Implementación
Relación de Agregación:
Se implementará mediante la definición de atributos en cada
clase. La clase-todo, contenedora, en una agregación definirá
atributos para contener referencias a instancias de la clase-parte,
tantas como requiera la multiplicidad.
Fase de Implementación
Relación de Agregación:
Si la multiplicidad es 1, la clase B definirá un atributo privado de
tipo A de nombre NomRelacio. En Java:
private A NomRelacio;
Fase de Implementación
Relación de Asociación:
Fase de Implementación
Relación de Asociación:
Opción 1: implementar la asociación como una agregación. Problema:
hacer persistente un objeto implicaría guardar todos los objetos
asociados, creando fácilmente mucha redundancia y duplicidad en los
objetos guardados en los ficheros (o BD).
Fase de Implementación
Relación de Asociación:
1) En la clase A definiríamos un atributo para identificar cada objeto:
private TipoIDClaseA idA
2) En la clase B definiríamos un atributo para identificar cada objeto:
private tipoIDClaseB idB
3) Para cada dirección de la asociación y dependiendo de la
multiplicidad, tendríamos uno o más atributos de los tipos de los
identificadores.
Fase de Implementación
Relación de Asociación:
Cómo se implementa la gestión de los identificadores?
1) Obliga a tener una clase ConjuntoObjetos con un contenedor con
acceso directo por identificador de los objetos de la clase
(recordemos que la idea es que los identificadores sean únicos). Por
ejemplo, tendríamos que tener 2 clases ConjuntoObjetos para guardar
las instancias de A y de B, donde pudiéramos acceder a los objetos a
partir de su identificador.
2) Cada vez que se crea un objeto (vía constructor), se consulta
ConjuntoObjetos para asignar el nuevo identificador, a la vez que se le
pasa el objeto para que lo añada al contenedor, por ej. vía un método:
TipoId newId(Object o)
O dos métodos:
TipoId newId()
void addObject(Object o)
(ConjuntoObjetos será creado por el controlador del dominio a partir de los datos
persistentes)
Projecte de Programació
Fase de Implementación
Relación de Composición:
Fase de Implementación
Relación de Dependencia:
Fase de Implementación
Relación de Dependencia:
Esta relación implica que instancias de la clase B necesitan
instancias de A para llevar a cabo sus funcionalidades.
Usualmente estas instancias son accesibles vía parámetros de
mensajes enviados a instancias de B, o de otras maneras (las
instancias de A no son atributos de B, eso no sería dependencia,
sino asociación o agregación).