Está en la página 1de 15

UNIVERSIDAD DE EL SALVADOR EN LÍNEA

FACULTAD DE INGENIERÍA Y ARQUITECTURA


PROGRAMACIONIII I

LENGUAJE DE PROGRAMACIÓN ORIENTADO A OBJETOS

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.

Una actividad en la etapa de análisis es la determinación de las asociaciones y dependencias entre


objetos, los cuales probablemente se conviertan en clases. Esta interrelación es de suma
importancia para la infraestructura de nuestro sistema a nivel lógico; y posteriormente la unión
de todos los componentes en el software construido.

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:

 Implementar correctamente clases, estructuras de datos, asociaciones y técnicas


relacionadas al paradigma de la programación orientada a objetos.

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

Las relaciones tienen dos elementos básicos, los cuales son:

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).

- La multiplicidad se evalúa en ambas direcciones (bidireccionalmente).

- Se debe identificar la multiplicidad mínima y la máxima.

- Es un concepto sumamente importante el cual se traslada hacia el diagrama de clases,


diagrama de bases de datos y la implementación en el código.

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.

La siguiente tabla describe las multiplicidades más utilizadas:

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

En este caso considerar los siguientes cambios:

a. El constructor por defecto no debe implementarse en la clase Avión; ya que siempre


estará asociado a un Piloto por la multiplicidad.

Caso C:

En la multiplicidad de 0..* tomar en cuenta:

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.

b. Acá si vuelve a tener sentido el constructor por defecto.

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:

En la multiplicidad de 1..* tomar en cuenta:

a. Se mantiene las consideraciones de la multiplicidad de 0..*; con la excepción que en este


caso el constructor por default no tiene que implementarse.

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. Primero programar Piloto, la cual no depende de ninguna clase.


b. Luego Avión, ya que depende de la clase Piloto para crear sus instancias.
c. Por último la más dependiente (clase Test).

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.

La clase Piloto, no necesita atributos de otras clases, porque es totalmente independiente. Su


implementación es la básica.

La clase Avión, si tiene puntos a considerar:

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

private ArrayList<Piloto> pilotos= new ArrayList<Piloto>(); //se define así si la multiplicidad


//es a muchos(*); de lo contrario será un tipo de dato simple.
public Avion(){
//constructor sin argumentos; se utiliza cuando la multiplicidad incluye 0.
}
public Avion(String placa, Piloto piloto){
this.placa = placa;
pilotos.add(piloto);
}
// importante los métodos get y set para el encapsulamiento
public String getPlaca(){
return placa;
}
public void setPlaca(String placa){
this.placa = placa;
}
// get y set para tratar las colecciones a nivel de un elemento
// utilizamos el método getCantidad para determinar el número de elementos de nuestra
//colección
public Piloto getPiloto(int indice){

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’);

private Piloto piloto = new Piloto(‘Michael’);

3.2 CLASE ASOCIACION


Si tenemos el siguiente modelo de clases:

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:

Para este tipo de asociación, hay que tomar en cuenta lo siguiente:

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.

b. En este caso el orden de programación es: Piloto, Asociación, Avion y Test.

La forma de implementar la Clase Asociación a nivel de programación, no difiere de la


implementación de una asociación simple; como lo vimos anteriormente.

3.3 ASOCIACION REFLEXIVA


Esto sucede cuando el origen y fin de una asociación es la misma clase; esto en base al escenario
que se está modelando. 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

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).

b. En la implementación a nivel de código significa que la clase Piloto tendrá un atributo de


su misma clase; el cual será simple o una colección de acuerdo a la cardinalidad.

A nivel de código lo implementamos de la siguiente forma:

Ejemplo

public class Piloto{

private String nombre;

private Piloto substituto;

// Acá programar los constructores necesarios

public void setNombre(String nombre){

this.nombre=nombre;

public String getNombre(){

return nombre;

public void setSubstituto(Piloto substituto){

this. substituto = substituto;

}
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 Piloto getSubstituto (){

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:

Lo que debemos tener presente es lo siguiente:

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.

b. Denota una relación de propiedad o pertenencia.

c. Generalmente los objetos de cada clase se construyen de forma independiente.

d. La agregación es un tipo de asociación más fuerte.

e. Java no tiene una implementación propia para la agregación; básicamente se codifica


como una simple asociación. El concepto de agregación y su nomenclatura uml es más
que todo a nivel conceptual.

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{

private ArrayList<Cliente> clientes = new ArrayList<Cliente>;

// 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).

c. Es un tipo especial de agregación.

d. Al igual que una Agregación; no hay nada especial en la implementación de la


Composición en Java.

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 continuación, el extracto de código para la implementación de la clase Empresa y la creación


dentro de esta de los objetos de la clase Empleado:

Ejemplo

public Empresa{

private ArrayList<Empleado> empleados = new ArrayList< Empleado >;

// luego crear los constructores necesarios, los get y set, y otras instrucciones de ser necesario.

// Acá crearemos las instancias de Empleado (Partes) dentro de Empresa (Todo).

public void agregar(double cant){

Empleado emp =new Empleado( “nombre”);

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.

b. Abstracción: capacidad mental de modelar de forma lógica un problema real.

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.

También podría gustarte