Está en la página 1de 20

Programación Orientada a

Objetos
Semana 04
Relación entre Clases
Docente: Silvia Rodríguez Aguirre
Agenda

• Relación entre Clases.

• Multiplicidad de relaciones.

• Tipos de Relaciones.

• Diagrama de Clases.

• Ejemplos de Aplicación.
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)

Ing. Freddy Infantes Quiroz


Componentes del Diagrama

Clases
Relaciones

Paquetes
Comentarios

Ing. Freddy Infantes Quiroz


Componentes del Diagrama: Clases

NombreClase Utilizar singular

Atributos Accesibilidad nombAtribut: tipoDato

Operaciones Accesibilidad nombMétod ( parám1: tipDat, parámN:


tipDat ): tipDatRetornoMétod
(métodos)
Modificador de acceso

Ejemplo - privado: el atributo sólo es visible por la clase


+ 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. Freddy 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. Freddy 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”
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
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.
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; …

} }
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;
… …
} }
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.
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[ ];

}
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.
Ejemplo: Relación de Agregación
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.
Ejemplo: Relación de Composición
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
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.
srodrigueza7@upao.edu.pe

Ing. Silvia Rodríguez Aguirre

También podría gustarte