Escolar Documentos
Profissional Documentos
Cultura Documentos
Existen diversos tipos de relaciones entre clases, las cuales son las siguientes:
Dependencia
Asociacin
Agregacin
Composicin
Herencia
Realizacin
Relacin de DEPENDENCIA
Definicin
La relacin de dependencia nos indica que un objeto de la clase hace uso de
otro objeto de otra clase, por eso tambin se le conoce como relacin de
uso. Es la relacin ms dbil de todas.
Notacin
Se representa con una lnea punteada que tiene en uno de sus extremos la
punta de una flecha:
ClaseA
ClaseB
Formas de lectura
La clase A depende de la clase B
La clase A instancia internamente un objeto de la clase B
La clase A usa a la clase B
Forma de implementacin
Por medio de un parmetro en un mtodo o por medio de una instanciacin
dentro de un mtodo.
Ejemplo
Tenemos el siguiente contexto: Un alumno llamado Lolo va a dar su examen
de Clculo, y para ello va a utilizar su calculadora. Como el alumno est
haciendo uso de una calculadora, podemos representar esta relacin por
medio de una dependencia:
Calculadora.java
public class Calculadora {
private String marca;
public Calculadora(String marca) {
this.marca = marca;
}
public double operacionSuma(double a, double b){
return a+b;
}
public String getMarca() {
return marca;
}
Alumno.java
public class Alumno {
private String nombre;
public Alumno(String nombre) {
this.nombre = nombre;
}
public double sumar(double a, double b){
/*Instanciamos una calculadora*/
Calculadora calculadora = new Calculadora("Cassio");
/*Realizamos la suma*/
double suma = calculadora.operacionSuma(a, b);
/*Devolvemos el resultado*/
return suma;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
Vemos claramente como la clase Alumno para poder realizar su suma usa
a la clase Calculadora para realizar dicha operacin.
Relacin de ASOCIACIN
Definicin
Representa la colaboracin que pueden tener los objetos entre s, en donde
ambos pueden colaborarse mutuamente o slo uno de ellos al otro. Esta
colaboracin no es temporal como en el caso de la DEPENDENCIA, sin que
tiene una naturaleza ms permanente. Es ms fuerte que la dependencia,
pero menos fuerte que la composicin.
Notacin
Se representa con una lnea slida, que puede o no tener una punta de flecha
en uno de sus extremos. Tambin, opcionalmente puede tener una pequea
descripcin sobre la lnea, en ese caso la punta de la flecha indica cmo leer
la relacin.
ClaseA
Asociada con
ClaseB
Formas de lectura
La clase A est asociada con la clase B
Prof. Alonso Ral Melgarejo Galvn
Formas de implementacin
Por medio de un atributo de un objeto de la clase B en la clase A.
Ejemplo
Tenemos el siguiente contexto: Una escritor ha decido escribir un libro. Como
el escritor est escribiendo un libro podemos relacionarlo a l y al libro con
una ASOCIACIN.
Libro.java
public class Libro {
private String titulo;
private String contenido;
public Libro(String titulo, String contenido) {
this.titulo = titulo;
this.contenido = contenido;
}
public String getContenido() {
return contenido;
}
Escritor.java
public class Escritor {
private String nombre;
private Libro libro;
public Escritor(String nombre) {
this.nombre = nombre;
/*Por defecto escribimos este libro*/
this.libro = new Libro("El cuervo", "Seor -dije- o seora,
en verdad vuestro perdn imploro");
}
public Escritor(String nombre, Libro libro){
this.nombre = nombre;
/*Recibimos este libro como parmetro*/
this.libro = libro;
}
public void escribirEnLibro(String contenidoNuevo){
/*Obtenemos el texto escrito hasta ahora en el libro*/
String contenidoActual = this.libro.getContenido();
/*Colocamos el contenido actual concatenado con el nuevo*/
this.libro.setContenido(contenidoActual+contenidoNuevo);
}
public Libro getLibro() {
return libro;
}
public void setLibro(Libro libro) {
this.libro = libro;
}
public String getNombre() {
return nombre;
}
Multiplicidad y direccionalidad
En el ejemplo anterior hemos visto lo siguiente: Un escritor escribe un
libro, pero sabemos que en la vida real esto puede no ser as, ya que un
escritor puede escribir ms de un libro, es ms, un libro puede ser escrito por
ms de un escritor. Para soportar estos contextos existe la multiplicidad y la
bidireccionalidad. La multiplicidad nos indica cuntos objetos de una clase
participan en la asociacin y la direccionalidad nos indica quin est asociado
con quin. Veamos algunos ejemplos (para estos ejemplos nos enfocamos en
la representacin UML, ya que la implementacin del cdigo Java es trivial).
Multiplicidad de 1 a muchos
Situmonos en este contexto: Durante la clase de laboratorio de Anlisis y
Diseo de Algoritmos, un profesor le dicta clases a uno o muchos alumnos.
Representemos esto por medio de una asociacin:
Notamos
como
en
la
clase
Profesor
aparece
un
atributo
Notar como ahora ya no hay ninguna flecha que indique una direccin de
lectura, ni una etiqueta que describa a la asociacin, ya que con la relacin de
muchos a muchos se pierde el sentido de lectura, slo es vlido agregar
una etiqueta si la asociacin puede leerse de ambos lados.
Tambin es posible que una clase est asociada consigo misma, pongamos un
ejemplo para revisar este caso: Una persona puede tener cero o muchos
amigos, representemos esto por medio de UML:
se anotan los datos de la persona que alquil el auto, los datos del auto
alquilado, la fecha de alquiler, la fecha de retorno del auto y el costo total.
Por medio de UML lo representamos de la siguiente manera: