Professional Documents
Culture Documents
Diagramas de Clases
(UML ilustrado)
Advertencia
4
Nota Importante
¿Qué es un
Dominio de
Aplicación?
¿Qué es un Modelo
de Dominio? 6
Diagramas de Clases
8
Diagramas de Clases
(¿ Que es una Clase?)
Atributos:
Propiedades relevantes de un clase
Representan su estructura
Pueden ser simples o compuestos
Métodos:
Comportamiento asociado a una
clase
10
Diagramas de Clases
p r i v a t e double r;
p r i v a t e double i;
p u b l i c ComplexNumber(double r, double i) {
t h i s . r = r;
t h i s . i = i;
}
p u b l i c double norm() {
retu rn Math.sqrt(r * r + i * i);
}
}
El código es
Java ;-)
12
Diagramas de Clases
(¿ Que es una Clase?)
Visibilidad:
- Privado
~ Paquete Valor por
Defecto
# Protegido
+ Público
Tipo de Dato
Nombre
Atributo Multiplicidad
¿qué es un objeto?
¿qué es una instancia?
¿qué es instanciar?
15
Conceptos de Objetos
(Diagramas de Clases)
Instancia:
Cada objeto que pertenece a una
clase
Instanciación / Instanciar:
Proceso de generación o creación de
las instancias (objetos) de una clase
pedro = new Persona()
Objeto:
Representación de algo que se
describe mediante un identificador,
una estructura y un comportamiento.
“Instancia de una Clase”
16
Diagramas de Clases
p u b l i c c l a s s Persona {
p u b l i c Persona(
String nombre, char sexo, Date fechaNac, String profesion) {
this.nombre = nombre;
this.sexo = sexo;
this.fechaNac = fechaNac;
this.profesion = profesion;
}
}
18
Diagramas de Clases
(Parametrizables / Abstractas / Utilitarias)
publ i c a b s t ra c t cl as s FiguraBase {
21
Diagramas de Clases
(Especialización / Generalización / Herencia)
22
Diagramas de Clases
(Especialización / Generalización / Herencia)
Herencia:
Disjunta / Traslapada
Total / Parcial
23
Diagramas de Clases
(Especialización / Generalización / Herencia)
p u b l i c a b s t ra c t c l a s s F i g u ra {
p u b l i c a b s t ra c t double calcArea ();
p u b l i c a b s t ra c t v o i d dibujar (Canvas canvas);
}
• Reescritura o
-oid: OID
-nombre: Cadena(64)[1]
-direccion: Cadena(128)[0..1]
• Encadenamiento tardío:
Estudi
-cargo: TipoCargo[1]
-carrera: Tipo
-sueldoActual: Moneda[0..1]
permite seleccionar el código adecuado al +despliega()
+despliega()
Mayo,2008 EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. A-08. 25
Relaciones (Vínculos)
¿Asociaciones?
¿1:1, 1:N y N:M?
Eso se puede ver
mejor con un ejemplo
26
Relaciones (Vínculos)
1:N
Vínculo / Relación
Trabaja En / Tiene
Departamento
de Control
Departamento
de Investigación
de Operaciones
Departamento
de Computación
Profesores Departamentos
Programación
10
Programación
20
Bases de Datos
Profesores Materias
Chicas Chicos
¿Cómo se implementan? 30
Diagramas de Clases
(Asociaciones)
p u b l i c c l a s s Departamento {
// ...
p u b l i c c l a s s Profesor {
31
Diagramas de Clases
(Asociaciones)
p u b l i c c l a s s Estudiante {
// ...
p u b l i c c l a s s Asignatura {
32
Diagramas de Clases
(Asociaciones)
p u b l i c c l a s s Estudiante {
// Una lista de EstAsigRelacion (Una clase relación)
pr i vat e List<EstAsigRelacion> estAsigRelacionList;
}
publ i c cl as s EstAsigRelacion {
// referencias cruzadas a las dos clases relacionadas
pr i vat e Estudiante estudianteRef;
pr i vat e Asignatura asignaturaRef;
}
publ i c cl as s Asignatura {
// Una lista de EstAsigRelacion (Una clase relación)
pr i vat e List<EstAsigRelacion> estAsigRelacionList;
}
33
Diagramas de Clases
(Asociaciones)
Una relación
muchos a muchos
se puede ver como
dos relaciones uno a
muchos
34
Diagramas de Clases
(Asociaciones)
p u b l i c c l a s s Departamento {
// ...
p u b l i c c l a s s Secretaria {
35
Diagramas de Clases
(Asociaciones)
p u b l i c c l a s s Estudiante {
// Una lista de Nota (Una clase asociación)
p r i v a t e List<Nota> notaList;
}
p u b l i c c l a s s Nota {
// Datos de la asociación
p r i v a t e double nota;
p r i v a t e i n t asistencias
// referencias cruzadas a
// las dos clases relacionadas
p r i v a t e Estudiante estudianteRef;
p r i v a t e Seccion seccionRef;
}
p u b l i c c l a s s Seccion {
// Una lista de Nota (Una clase asociación)
p r i v a t e List<Nota> notaList;
}
36
Diagramas de Clases
(Asociaciones / Navegabilidad)
Navegable por
ambos lados
Navegable
NO
navegable
Indefinido
37
Diagramas de Clases
(Agregación / Composición)
¿Cómo se implementan?
¿Cuál es la diferencia con las asociaciones? 38
Diagramas de Clases
(Agregación / Composición)
39
Diagramas de Clases
(Agregación / Composición)
Peor aún...
49
Diagramas de Clases
(Agregación / Composición)
La clase
persona
depende de la
clase teléfono
42
Diagramas de Clases
¿Qué / Cuál es la
Interfaz de una clase?
43
Diagramas de Clases
(Interfaces / Realizaciones)
44
Diagramas de Clases
(Interfaces / Realizaciones)
La interfaz IGeometrico es
implementada / realizada tanto
por Círculo como por
Rectángulo
p r i v a t e double centro;
p r i v a t e double radio;
i mpor t java.awt.Rectangle;
p u b l i c double getArea();
p u b l i c double getPerimetro();
p u b l i c Rectangle getRectCont();
}
List<IDibujable> elementosDibujar;
Algunos de estos
son círculos, otros
// ... son rectángulos,
estrellas, líneas,
etcétera...
f o r (IDibujable dibujable : Pero todos
elementosDibujar) { implementan la
// No importa si dibujable es interfaz IDibujable
// un círculo, rectángulo, etcétera
// Los puedo manejar a todos igual
// porque tienen una interfaz en común
dibujable.dibujar();
}
¿qué es acoplamiento?
¿qué es cohesión?
el acoplamiento más bajo posible y la cohesión más alta
posible suele ser el objetivo de todo arquitecto, diseñador
de software o programador
lectura recomendada:
http://latecladeescape.com/w0/ingenieria-del-software/acoplamiento-y-cohesion.html
49
Diagramas de Clases
Ejemplos
50
Diagramas de Clases
(Un ejemplo conceptual)
Modelo de Dominio 51
Diagramas de Clases
(Un ejemplo conceptual)
52
Diagramas de Clases
(Un ejemplo conceptual)
Modelo de Dominio 53
Diagramas de Clases
(Un ejemplo conceptual)
Modelo de Dominio 54
Diagramas de Clases
(Arquitectura de las clases GUI de CLEDA)
Arquitectura
Diseño OO
55
Diagramas de Clases
(Arquitectura del motor de Workflow Cleda Flow)
Arquitectura
Diseño OO 56
Diagramas de Clases
A nivel de
implementación
57
Diagramas de Clases
(Modelo Conceptual)
class Dependencias
+tieneEscuelas
Escuela
1..*
Departamento Dependencia
Facultad/ Núcleo
+t ieneI nst it ut os
InstitutoDeInvestigación
*
+tieneCentros
CentroDeInvestigación
*
+tieneLabs
LaboratorioDeInvestigación
*
+tienePostgrados
Postgrado
*
58
Diagramas de Clases
(Modelo de Implementación)
class películas
59
Diagramas de Clases
-secretariaDe 1 1
-secretariaDe
SolicitudDeProfesor SolicitudDeEstudiante
-estudiantes 1..*
-profesores 1..* -solicitadoPor -solicita -solicita -solicitadoPor
Estudiante
Profesor * * Equipo * *
1 -autorizadoPor -autoriza * -controla *
-controladoPor
1
-secretaria
Personal -secretaria
1
1
Persona
60
Diagramas de Clases
class Geometría
«enumeration»
TipoColor
61
Diagramas de Clases
Lecturas recomendadas:
http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/
(En Inglés)
62
REFERENCIAS
63
Gracias
¡Gracias!
64