Diagrama de clases

Transcripción

Diagrama de clases
Programación Orientada a Objetos
Diagrama de Clases I: asociaciones
Ing. Julio Ernesto Carreño Vargas MsC.
Concepto de
diagrama de clases
Modelo de Dominio

Un modelo conceptual explica los conceptos más
significativos en un dominio del problema,
identificando los atributos y las asociaciones

Se representa mediante un grupo de diagramas de
estructura estática, en este caso un diagrama de clases
(con atributos y asociaciones pero sin métodos)
Programación Orientada a Objetos
3
Modelo de Diseño

Un diagrama de clases muestra un resumen de
un sistema a través de clases (con atributos y
métodos) y las relaciones entre dichas clases.

Son los diagramas más comunes en el modelado
y programación de sistemas orientados a objetos
Programación Orientada a Objetos
4
Elementos de un Diagrama de Clase
Se representan:


para cada clase: atributos, métodos y visibilidad
relaciones entre clases (ej: composición, herencia, interfaces)
Programación Orientada a Objetos
5
Características de los Diagramas
de Clases

Son estáticos


muestran qué elementos interactuan pero no qué
sucede cuando ellos hacen la interacción.
Los diagramas de clase son importantes para:
visualización, especificación y documentación del
modelo estructural
 construcción de sistemas ejecutables.

Programación Orientada a Objetos
6
Clase OO
Nombre
Atributos
Métodos
Programación Orientada a Objetos
7
Relaciones entre los objetos
objAho
Cuenta
objCliente
Programación Orientada a Objetos
Cliente
Relaciones pueden ser de:
Asociación
Agregación
Composición
Dependencia
Herencia
8
Relaciones entre Clases

Representan asociaciones del mundo del problema.

Existen varios tipos de relaciones:






Asociación
Agregación
Composición
Dependencia
Generalización(Herencia)
Las relaciones tienen ciertas características:



roles,
cardinalidad,
navegabilidad
Programación Orientada a Objetos
9
Asociaciones entre clases
Programación Orientada a Objetos
10
Asociación

Relación general entre 2 clases que finalmente
será también relación entre sus objetos
Programación Orientada a Objetos
11
Detectando asociaciones

Hay una asociación entre dos clases si una
instancia de una clase debe conocer de la
otra para poder ejecutar su trabajo
El cajero necesita del dispensador para que aquel entregue el dinero al
cliente ó para que le informe la capacidad de billetes.
Programación Orientada a Objetos
12
Asociación recursiva

Pueden existir relaciones de asociación entre la
misma clase.
Programación Orientada a Objetos
13
Cardinalidad de
asociaciones entre clases
Programación Orientada a Objetos
14
Cardinalidad(1)

La cardinalidad o multiplicidad de una relación es el
número de posibles instancias de la clase asociada con
una simple instancia de la otra clase.
Las cardinalidades pueden ser:
1
Exactamente una instancia
*
Sin límite de instancias
0..1
Cero o una instancia
0..*
Sin límite de instancias incluido 0
1..*
Al menos una instancia

Programación Orientada a Objetos
15
Cardinalidad(2)
Por cada “Cliente” existen muchos objetos de tipo “Orden”
Por cada “Orden” existe 0 ó 1 “Cliente”
(cardinalidad por defecto cuando no se indica)
Programación Orientada a Objetos
16
Navegabilidad de
asociaciones entre clases
Programación Orientada a Objetos
17
Navegabilidad (o direccionalidad)

La Asociación es una conexión que tiene
direccionalidad, esto es, las clases involucradas en la
relación se navegan en determinado sentido.
Programación Orientada a Objetos
18
Navegabilidad-Direccionalidad

Una flecha de navegabilidad en una asociación muestra
en cual dirección la asociación puede ser recorrida ó
consultada.

La navegabilidad también dice quien es el propietario de
la implementación de la asociación.

Las asociaciones sin flechas de navegabilidad son
bidireccionales
Programación Orientada a Objetos
19
Relación Unidireccional
Cada “DetalleOrden” conoce su “Producto”,
pero cada “Producto” NO conoce de que “DetalleOrden” es.
Programación Orientada a Objetos
20
Relación Bidireccional
Cada “Cliente” conoce el conjunto de objetos “Orden” asociados,
y cada “Orden” conoce su “Cliente”
Programación Orientada a Objetos
21
Roles en la
asociación entre clases
Programación Orientada a Objetos
22
Roles


Una relación tiene dos puntos finales, cada uno puede tener un
nombre de rol para clarificar la naturaleza de la asociación

Un cliente “solicita” muchas ordenes y una orden “estaAsociada” a un cliente.

una persona es “empleado” de una compañía, una compañía es el
“empleador” de una persona.
Los roles son opcionales (para mayor claridad)

Si no se colocan roles, los nombres de los atributos asumen este papel.
Programación Orientada a Objetos
23
Asociaciones
expresadas en Java
Programación Orientada a Objetos
24
Relación de Asociación
UniDireccional

Si la relación es navegable y la cardinalidad de la clase
destino es 0..1, entonces:

En la clase fuente, se coloca un atributo privado de la clase
destino.
Programación Orientada a Objetos
25
Relación de Asociación
UniDireccional
Clases Java
Bus.java
Programación Orientada a Objetos
Conductor.java
26
Accessors (get, set) y Constructor
de “Bus”
Programación Orientada a Objetos
27
Accessors y Constructor de “Conductor” (no
conoce a Bus)
Programación Orientada a Objetos
28
Relación de Asociación Bidireccional
 Si
la relación es bidireccional, esto es,
navegable en ambos sentidos y la
cardinalidad en ambos sentidos es 1
 Se
coloca un atributo privado en cada clase
que haga referencia a la otra clase.
Programación Orientada a Objetos
29
Relación de Asociación Bidireccional
Programación Orientada a Objetos
30
Relación de Asociación Bidireccional
Clases Java
Programación Orientada a Objetos
31
Accessors y Constructor de “Bus”
Programación Orientada a Objetos
32
Accessors y Constructor de
“Conductor”
Programación Orientada a Objetos
33
Bibliografía

UML y patrones una introducción al análisis y diseño orientado a
objetos y al proceso unificado. Larman, Craig

Paul Deitel. Como programar en Java 7/e. Pearson Education.
2007.

12- Booch, G., Rumbaugh, J. y Jacobson, I. El Lenguaje
Unificado de Modelado UML, CAPITULO 8, Pearson
Educación, Segunda Edición 2006.
Programación Orientada a Objetos
34

Documentos relacionados