Professional Documents
Culture Documents
1. INTRODUCCIÓN
Una parte fundamental dentro de la POO, es la fase del análisis y diseño orientado a objetos.
Estas etapas del ciclo de vida de los sistemas bajo el paradigma de orientación a objetos, han ido
evolucionando en su concepción y estudio a lo largo de estos últimos 20 años.
Por lo tanto es necesario darle la importancia debida a esta actividad, ya que de ella depende
que los objetos se comuniquen de la forma adecuada; y que posteriormente nuestro sistema sea
robusto en su funcionamiento y flexible en el momento que se necesite un cambio, y de esa
forma garantizar la mejora continua de este.
2. OBJETIVO DE LA UNIDAD
General:
Específicos:
Conceptualizar las características de los diversos tipos de asociaciones en UML; y su
posterior implementación en lenguaje Java, para resolver situaciones reales.
3. IMPLEMENTACIÓN DE ASOCIACIONES
Las asociaciones que nosotros implementaremos; en primer lugar, se definen en base al análisis
correspondiente en el modelo del dominio (de objetos); y luego en la etapa de diseño las
definimos en el diagrama de clases.
Es importante entender que una asociación es una relación estructural, la cual indica la relación
entre dos objetos.
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
a) Navegación
La cual determina la dirección de la relación entre los objetos. Generalmente es
unidireccional en cuyo caso la dirección se determina en base a una flecha. Pero lo
anterior no limita a que la relación pueda ser en algunos casos bidireccional.
Relación Unidireccional
b) Multiplicidad
Identifica cuantos elementos de un objeto se relacionan con el otro objeto. Para lo
anterior debemos tomar en cuenta que:
- Cada asociación tiene dos multiplicidades (una por cada objeto).
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
En este ejemplo la relación entre Jefe y Empleado identifica que, un Jefe puede tener de
1 a muchos empleados asignados.
En este otro ejemplo podemos identificar que la relación indica, que un Equipo puede
tener 11 Jugadores.
Nótese que la cardinalidad del lado de Equipo no aparece; en ese caso por defecto se
asume como 1. La cardinalidad por la parte de Jugador es 11; es decir se puede colocar
un número puntual si el escenario así lo amerita.
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
3.1 ASOCIACIONES
Caso A
Donde:
a. Test usa las clases Avión y Piloto; es decir en la ejecución construirá instancias de dichas
clases.
b. Debido a que la multiplicidad de Avión hacia Piloto es de 0..1; Avión podrá tener un
constructor por default y otro donde se le asigne un Piloto.
c. Lo anterior quiere decir que Avión deberá tener un atributo del tipo Piloto.
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
Caso B
Caso C:
a. Un Avión puede ser conducido por 0 a muchos Pilotos; esto de acuerdo al contexto que
varios Pilotos pueden estar asignado a poder pilotear un Avión en específico.
c. Y el tipo de dato Piloto dentro de la clase Avión deberá ser una colección; es decir varios
objetos del tipo Piloto asociados a poder pilotear un Avión.
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
Caso D:
Tomar en cuenta en todos los casos el orden de programación de las clases del modelo a
implementar; esto lo da el sentido de las asociaciones y dependencias (desde la menos
dependiente). Para los ejemplos anteriores el orden sería:
A continuación, se expone un extracto del código de las clases, para estudiar la forma de
implementarla de acuerdo a sus asociaciones y dependencias.
Ejemplo
import java.util.Arraylist;
public class Avion{
private String placa;
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
if (this.getCantidad()>indice) {
Piloto piloto= pilotos.get(indice);
return new Piloto(piloto.getNombre());
} else // posicion invalida
throw new IllegalArgumentException ( "Error: Posicion invalida");
}
public void setPiloto (int indice, Piloto piloto){
if (this.getCantidad()>indice)
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
pilotos.set(indice, piloto);
else // posicion invalida
throw new IllegalArgumentException ( "Error: Posicion invalida");
}
public int getCantidad(){
return pilotos.size();
}
} //fin de la clase
Si nuestro atributo es una colección, no se recomienda trabajarlos con get y set a nivel de
colección; lo que se acostumbra es implementarlos a través de métodos get y set de un solo
elemento.
En este caso si lo deseamos podemos implementar acciones de búsqueda, eliminación; entre
otras.
La clase Test creara las instancias necesarias de las clases Avión y Piloto; así:
private Avion avión = new Avion(‘P10000’);
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
Y luego se determina que es necesario asignar a un Avión un Piloto en una fecha específica; se
tendría que considerar el atributo fecha como un atributo propio de la asociación. La solución en
este caso fue crear la clase Asociación; de la siguiente manera:
a. La cardinalidad original entre Avión y Piloto; se traslada de Avión hacia la clase Asociación.
Y luego de Asociación a Piloto es de uno a uno.
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
a. El origen y final de la asociación se determina por roles; es decir su papel dentro del
modelo de clases (en este caso Piloto Principal y Piloto Substituto).
Ejemplo
this.nombre=nombre;
return nombre;
}
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
return substituto;
} //fin de la clase
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
3.4 AGREGACION
Es una forma especial de Asociación; en la cual se hace la relación conceptual entre el todo y las
partes. Por ejemplo:
a. La abstracción en una Agregación nos lleva a determinar, que si el todo desaparece las
partes se conservan. Si una empresa desaparece, sus clientes siguen operando.
Por lo tanto en el código lo que tenemos que crear es un atributo del tipo Cliente dentro de
Empresa; como se hace en cualquier asociación. Así:
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
public Empresa{
// luego crear los constructores necesarios, los get y set, y otras instrucciones de ser necesario.
} //fin de la clase
3.5 COMPOSICION
Es otra forma especial de Asociación que al igual que la agregación trabaja con el concepto del
todo y las partes. Obviamente tiene ciertas diferencias a nivel conceptual, de implementación y
en el esquema uml(note la diferencia en el diagrama).
Tener en cuenta:
a. La abstracción en una Composición nos lleva a determinar; que si el todo desaparece las
partes también desaparecen. Si una empresa desaparece, los empleados ya no operan
para ella.
b. Generalmente la clase que representa el todo (Empresa) va a crear a los objetos de las
clases que representan las partes (Empleado).
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
Ejemplo
public Empresa{
// luego crear los constructores necesarios, los get y set, y otras instrucciones de ser necesario.
empleados.add(emp);
}//fin de la clase
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.
UNIVERSIDAD DE EL SALVADOR EN LÍNEA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIONIII I
BIBLIOGRAFIA
1. http://programacioncolmayor3.blogspot.com/2013/02/dependencia-y-asociacion.html
2. http://elvex.ugr.es/decsai/java/pdf/3C-Relaciones.pdf
3. http://www.ctr.unican.es/asignaturas/mc_oo/doc/m_estructural.pdf
4. Java Como Programar, Prentice Hall, Deitel Deitel.
GLOSARIO TÉCNICO
a. Multiplicidad: llamada también cardinalidad; incluye la cantidad de instancias de un objeto
que se relacionan con otros de instancias diferentes.
Este material ha sido proporcionado al estudiante en el marco de su formación a través de una carrera en línea en la
Universidad de El Salvador. Se han respetado los derechos de autor para su elaboración. El debido uso del mismo es
responsabilidad del estudiante.