0% encontró este documento útil (0 votos)
29 vistas31 páginas

Sesion03 RelacionClasesI

El documento aborda la programación orientada a objetos, enfocándose en la relación entre clases, tipos de relaciones y su representación mediante diagramas de clases en UML. Se explican conceptos como asociación, agregación, composición, dependencia y herencia, junto con ejemplos prácticos de implementación en Java. Al finalizar, se espera que los estudiantes comprendan cómo se comunican los objetos y cómo se diseñan estas relaciones en un sistema.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
29 vistas31 páginas

Sesion03 RelacionClasesI

El documento aborda la programación orientada a objetos, enfocándose en la relación entre clases, tipos de relaciones y su representación mediante diagramas de clases en UML. Se explican conceptos como asociación, agregación, composición, dependencia y herencia, junto con ejemplos prácticos de implementación en Java. Al finalizar, se espera que los estudiantes comprendan cómo se comunican los objetos y cómo se diseñan estas relaciones en un sistema.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 31

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

También podría gustarte