Programación Orientada a
Objetos
Sesión03
Relación entre Clases I
Escuela de Ingeniería de Computación y Sistemas
Ing. Freddy Infantes Quiroz
[email protected] Ms. Freddy Infantes Quiroz
Agenda
• Relación entre Clases.
• Multiplicidad de relaciones.
• Tipos de Relaciones.
• Diagrama de Clases.
• Ejemplos de Aplicación.
Ms. Freddy Infantes Quiroz
Logro
• Al finalizar la sesión el estudiante debe:
o Recordar los conceptos básicos de la programación orientada a objetos.
o Conocer y comprender los tipos de relaciones entre clases y su respectivo
diseño utilizando UML.
Ms. Freddy Infantes Quiroz
Por qué usar un Diagrama de Clase
Para visualizar las relaciones entre las clases que involucran el
sistema. Nos indican cómo se comunican los Objetos de la clase
entre sí.
Los diagramas de clase son el pilar básico del modelado con
UML, siendo utilizados tanto para mostrar lo que el sistema
puede hacer (análisis), como para mostrar cómo puede ser
construido (diseño)
Genera un código automáticamente.
Ing.
Ms.Freddy
Freddy Infantes Quiroz
Infantes Quiroz
Componentes del Diagrama
Clases
Relaciones
Paquetes
Comentarios
Ing.
Ms.Freddy
Freddy Infantes Quiroz
Infantes Quiroz
Componentes del Diagrama: Clases
NombreClase Utilizar singular
Atributos Accesibilidad nombAtribut: tipoDato
Accesibilidad nombMétod(parám1: tipDat, parámN:
Operaciones tipDat): tipDatRetornoMétod
(métodos)
Modificador de acceso
- privado: el atributo sólo es visible por la clase
Ejemplo
+ público: el atributo es visible dentro y fuera de
Empleado la clase
# protegido: el atributo es visible por la clase y por
- id: int clases derivadas de esta clase, (herencia).
- nombres: String
-salario: double
+calcPagMens(diasTrab:int): float
Ing.
Ms.Freddy
Freddy Infantes Quiroz
Infantes Quiroz
Componentes del Diagrama: Paquetes
LogicaNegocio
Paquete X Paquete Y
Empleado Fecha
Ejemplo
Agrupan lógicamente las clases que tienen alguna relación entre sí.
Se pueden agrupar por clases que conforman módulos y submódulos
de la aplicación.
Se pueden agrupar por tipo de funcionalidad.
Ejm: Paquete con las clases de la lógica del negocio, paquete con las clases de la
Interfaz Gráfica de usuario, paquete con las clases que manejan persistencia de
datos.
Ing.
Ms.Freddy
Freddy Infantes Quiroz
Infantes Quiroz
Relación entre Clases
• Las relaciones existentes entre las distintas clases nos indican como se comunican los Objetos.
• Los mensajes “navegan” por las relaciones existentes entre las distintas clases.
• Tipos de Relaciones:
✓ Asociación -> Conexión entre clases.
✓ Agregación -> Una Clase contiene a otra, se representa “Es parte de” entre 2 clases.
✓ Composición -> La clase “Todo” controla la existencia de las clases “Parte”.
✓ Dependencia -> Relación de Uso. “Implementa a”
✓ Herencia -> Característica de la POO. “Es un tipo de”
Clase A
Clase A Clase B Clase A Clase B
Clase A Clase B Clase A Clase B Clase B
Ms. Freddy Infantes Quiroz
Multiplicidad - Simbología
• Determina cuántos objetos de cada tipo intervienen en la relación.
• Cada asociación tiene dos multiplicidades (una para cada extremo de la relación).
• Cuando la multiplicidad mínima es 0, la relación es opcional.
• Una multiplicidad mínima mayor o igual que 1 establece una relación obligatoria.
Multiplicidad Significado
1 1 y sólo 1
0..1 0ó1
N..M Un valor entre N y M
* Varios
0..* 0 ó varios
1..* 1 ó varios
Ms. Freddy Infantes Quiroz
Tipo de Relación: Asociación
Asociación:
• Es la relación más importante y común.
• Es una relación estructural que describe una conexión entre Objetos.
• Una asociación en java se implementa introduciendo referencias a objetos
como atributo en la otra clase con la que se esta relacionando.
• Estas referencias pasan como parámetros en el constructor de una de las
clases.
Ms. Freddy Infantes Quiroz
Relación de Asociación: Unidireccional
Cliente Dirección
1 tiene 1
• Un Cliente debe tener la información de su dirección.
• Una dirección pertenece a solo un Cliente. (La dirección no tiene
información del cliente).
Implementación:
class Cliente { class Direccion {
private Direccion dir; …
…
} }
Ms. Freddy Infantes Quiroz
Relación de Asociación: Bidireccional
Cliente Pedido
1 tiene *
• Un Cliente debe tener la información de sus pedidos.
• Cada Pedido debe tener la información del cliente.
Implementación:
class Cliente { class Pedido {
private Pedido pedidos[ ]; private Cliente clie;
… …
} }
Ms. Freddy Infantes Quiroz
Ejemplos: Relación de Asociación
Profesor Departamento
1 dirige 0..1
• Un Profesor puede dirigir un departamento.
• Un Departamento es dirigido por 1 profesor.
Profesor Departamento
* pertenece 1
• Cada Profesor pertenece a un departamento.
• A un Departamento pueden pertenecer varios profesores.
Ms. Freddy Infantes Quiroz
Relación de Asociación: Reflexiva
Empleado +subordinado
*
Jefe de
0..1
+jefe
• Un Empleado puede tener un jefe.
• Un Empleado puede tener varios subordinados.
Implementación:
class Empleado {
private Empleado jefe;
private Empleado subordinados[ ];
…
}
Ms. Freddy Infantes Quiroz
Relación de Agregación: (Caso particular de Asociación)
Polígono Punto
* contiene 3..*
• Cada Polígono contiene 3 o + Puntos.
class Poligono { class Punto {
private Punto puntos[ ]; …
…
} }
• Se utiliza para representar la relación de que un objeto es parte de
otro.
• El objeto que es parte del otro puede existir ó no independiente
del objeto que lo agrega a su definición.
Ms. Freddy Infantes Quiroz
Ejemplo: Relación de Agregación
Ms. Freddy Infantes Quiroz
Relación de Composición: (Caso particular
de Asociación)
Ventana
1 1
Titulo Barra
1
Cuerpo
0..1 1 0..2
Cabecera Panel ScrollB
*Un Ventana está compuesta por 0 ó 1 Cabecera,por 1 panel y por 0, 1 ó 2 scrollbars.
• Describe una relación entre un todo y sus partes de modo que las existencias
de las partes se perciben como totalmente dependientes del todo.
• Las partes (Cabecera, Panel, Scrollb) solo existen asociadas al compuesto. Se
acceden a través de él.
Ms. Freddy Infantes Quiroz
Ejemplo: Relación de Composición
Ms. Freddy Infantes Quiroz
Relación de Dependencia
Ecuación Math
pow
sqrt
• La Clase Ecuacion utiliza los servicios de la clase Math (funciones pow y
sqrt) para el cálculo:
• Se utiliza para representar una relación en la que un objeto cliente
solicita un servicio a un objeto servidor
Ms. Freddy Infantes Quiroz
Herencia: (Especialización/Generalización)
• Indica que una subclase hereda los métodos y atributos de una Super Clase, por
ende la Subclase además de poseer sus propios métodos y atributos, poseerá las
características y atributos de la Super Clase.
Ms. Freddy Infantes Quiroz
Diagrama de Clases
- Relación 1 a 1
- Relación 1 a N
Ms. Freddy Infantes Quiroz
Ejemplo1: Relación 1 a 1
Por ahora veremos
cómo se realiza el
manejo de una relaci
de ASOCIACIÓN con
Java
Recordemos que cada objeto de la
clase Persona conoce a 1 objeto de
la clase Vehículo. Esto se da
multiplicidad de 1 en nuestro ejemplo
Persona Vehiculo
Observemos que la
- docId: String - marca: String clase Persona conoce
1 1 - referencia: String
- nombre: String a la clase Vehiculo
- apellido: String - modelo: int (por la dirección de la
- fechaNac: String - placa: String relación de
- vehiculo: Vehiculo - color: String asociación) pero la
,
Se lee: Una Persona rN: clase Vehiculo no
+ Persona(docId:String, nombre: + Vehiculo(marca:String, referencia: conoce a la clase
String, apellido: String, tiene un vehículo
String, modelo: int, placa:String,
void persona
fechaNacN:String, vehiculo:Vehiculo) color: String)
+ cambiarValor(valorNuevo: int): void
+ calcularImpuesto(void): double
La clase Persona conoce a
la clase Vehiculo, es decir
En código Java la relación de
que la relación de asociación
nos indica que cada objeto asociación se convierte en un
de la clase Persona tiene un atributo para la clase de la cual sale
objeto de la clase Vehiculo la relación, en este caso para la clase
Persona.
Ms. Freddy Infantes Quiroz
Ejemplo1: Implementación Vehiculo
Recordemos que Escribimos en Java los atributos
esta es la clase de la clase (tengamos cuidado
Vehiculo definida de dejar el código dentro de los
en el diagrama de corchetes de la clase {}
clases
Vehiculo El símbolo menos (–)
del diagrama de clases se
convierte en private en java.
- marca: String Esto significa que a los
- referencia: String atributos solo se pueden
-- placa:
modelo: int
String acceder directamente dentro
-- color:
placa: String
String la clase
-- val
color: String
or: int
de l
En el diagrama de clases UML, se escribe 1ro el
nombre del atributo y después de los dos puntos
el tipo de dato, pero en Java primero va el tipo de
dato y después el nombre del atributo, seguido de
punto y coma ;
Ms. Freddy Infantes Quiroz
Ejemplo1: Implementación Persona
De la misma manera
que se creó la clase
Vehiculo, se crea la
clase Persona
Se escriben los atributos
propios de clase con su
modificador, tipo de dato y
nombre
Como la relación de
asociación se convierte en
atributo, el tipo de dato del
atributo será el nombre de
El tipo del atributo es la Clase con la cual se tiene
Vehiculo (nombre de la la relación
clase)
El nombre del atributo en
este caso es vehiculo (con A la izquierda de la definición de
minúscula porque es el atributos aparecen bombillos amarillos
atributo) que significan Warning (mensaje de
prevención). En este caso nos indica
que no ha sido utilizado ninguno de los
atributos definidos. Ya cuando se
agregue los métodos se soluciona. esto
Ms. Freddy Infantes Quiroz
Ejemplo1: Diagrama de Objetos
En este ejemplo un objeto tiene un atributo que es a su vez objeto de otra clase. En código Java sería:
• Vehiculo v = new Vehiculo(“Renault”, “logan“, 2009, “GRS123“, “gris“);
• Persona p =new Persona(“345“, “Carlos“, “Suárez“, “27/12/1990“, v);
La siguiente imagen nos muestra los objetos que existirían en el mundo computacional si queremos
representar a una persona p que es propietario del vehículo v
Esta caja Esta caja representa
representa a un a un objeto llamado
objeto llamado p v de la clase El objeto v de la
de tipo Persona Vehiculo clase Vehiculo es el
dato que iría
asignado al atributo
p: Persona
v: Vehiculo vehiculo del objeto
docId: “345” p de la clase
nombre: “Carlos” marca: “Renault” Persona
apellido: “Suárez” referencia: “Logan”
fechaNac:: 27/12/90 modelo: 2015
vehiculo:990”
v pplaca: “GRS123” Este es el DIAGRAMA DE OBJETOS de
color: “Gris”
co UML y nos ayuda a entender mejor los
m’
objetos involucrados en el modelo
computacional y sus relaciones
Ms. Freddy Infantes Quiroz
Ejemplo2: Relación 1 a 1
Libro Editorial
- isbn: String - codigo: int
1 Pertenece a 1
- titulo: String - nombre: String
- anio: int - anio: int
- precio: int
- edit: Editorial
métodos
métodos
public class Libro{ public class Editorial{
private String isbn; private int codigo;
private String titulo; private String nombre;
private int anio; private int anio;
private int precio; }
private Editorial edit;
}
Ms. Freddy Infantes Quiroz
Ejemplo3: Relación 1 a 1
Fecha
- dia: int
Persona 1 Fecha nacimiento 1 - mes: int
- dni: String - anio: int
- nombre: String
- apellido: String métodos
- fechaNac: Fecha
- ciudNac: Ciudad 1 ciudad nacimiento 1 Ciudad
- ciudRes: Ciudad
1 ciudad residencia 1 - codigo: int
- nombre: String
métodos - indicativo: int
public class Fecha{ public class Ciudad{ métodos
private int dia; private int codigo;
public class Persona{
private int mes; private String nombre;
private String cedula;
private int anio; private int indicativo;
private String nombre;
} }
private String apellido;
Atributos que private Fecha fechaNac;
salen de las
Atributos propios private Ciudad ciudNac;
relaciones
de la clase private Ciudad ciudRes;
}
Ms. Freddy Infantes Quiroz
Ejemplo4: Relación 1 a N
• En una Biblioteca se maneja la información de muchos libros y de sus autores.
• De cada libro se conoce: título y número de páginas.
• De los autores se conoce: su nombre y país de procedencia.
• Bajo el contexto que cada libro es escrito sólo por un autor y un autor puede escribir
muchos libros. Se pide modelar las clases Libro y Autor.
• Agregar los métodos necesarios a ambas clases.
Ms. Freddy Infantes Quiroz
Ejemplo4: Relación 1 a N
Cada Autor escribe 1 o más Libros
Cada Libro es escrito por sólo 1 autor
Ms. Freddy Infantes Quiroz
Ejemplo5 – Diagrama Clase
Ms. Freddy Infantes Quiroz
Ejemplo6: Diagrama Clases - Vuelos
Motor Piloto
1..4 1..2
1 *
Avion Vuelo
*
1
Comercial Militar Compañía
Ms. Freddy Infantes Quiroz