Publicado el 21 de Enero del 2021
1.745 visualizaciones desde el 21 de Enero del 2021
2,0 MB
64 paginas
Creado hace 13a (17/05/2011)
UML
Diagramas de Clases
(UML ilustrado)
Universidad de Los Andes
Demián Gutierrez
Marzo 2011
1
Diagramas de Clases
(¿Qué Muestran?)
La estructura estática del sistema modelado
(piense en el plano estructural de un ingeniero civil)
Las relaciones que existen entre las distintas
clases y objetos del sistema
Las clases y objetos del sistema
y su estructura interna
Se concentran en los elementos del sistema de
forma independiente del tiempo
(Muestran aspectos estáticos y no dinámicos)
2
Diagramas de Clases
(¿Para qué Sirven?)
Realizar la abstracción de un dominio y formalizar el
análisis de los conceptos relacionados al mismo
(Modelo de Dominio)
(...o de cualquier tipo de conceptos)
Definir / Documentar una solución de diseño, es
decir, la estructura del sistema que se va a
implementar en términos de clases y objetos
Definir / Documentar modelado de datos
(Cumplen la misma función en este sentido de los
diagramas ERE)
3
Diagramas de Clases
Advertencia
4
Nota Importante
El hecho de que exista cierta característica en un
diagrama (ej: la declaración de métodos) no significa
que de forma obligatoria se deba usar, simplemente
son herramientas que están disponibles.
Cuando usted arregla algo, no usa todas las
herramientas de su caja de herramientas, sólo usa lo
que necesita para realizar el trabajo.
Igual ocurre con UML y las herramientas de modelado,
use sólo las herramientas (diagramas / constructos)
que necesita para una situación particular y no “sobre
use” las herramientas, tratando de usarlas sólo porque
si...
5
Diagramas de Clases
¿Qué es un
Dominio de
Aplicación?
¿Qué es un Modelo
de Dominio?
6
Diagramas de Clases
La mayoría de los conceptos
que se presentan en las
siguientes transparencias
están relacionados con los
conceptos de programación
orientada a objetos (POO)
vistos en PR2
7
Diagramas de Clases
¿Qué es una Clase?
8
Diagramas de Clases
(¿Que es una Clase?)
Clase / Clasificador: Definición de la estructura y el
comportamiento de un conjunto de objetos que tienen
(comparten) el mismo patrón estructural y de
comportamiento
Un ejemplo de una clase “número complejo”:
Base de Datos: ¿No les suena esto al concepto de
tipo de entidad?
9
Diagramas de Clases
(Atributos y Objetos)
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
La relación que existe
entre el código y una
clase en UML es muy
importante
¡Necesito que hablemos
el mismo idioma!
11
Diagramas de Clases
(¿Que es una Clase?)
public class ComplexNumber {
private double r;
private double i;
public ComplexNumber(double r, double i) {
this.r = r;
this.i = i;
}
public double norm() {
return Math.sqrt(r * r + i * i);
}
}
El código es
Java ;-)
12
Diagramas de Clases
(¿Que es una Clase?)
Visibilidad:
- Privado
~ Paquete
# Protegido
+ Público
Nombre
Atributo
Valor por
Defecto
Tipo de Dato
Multiplicidad
Nombre del
Tipo de
Retorno
Base de Datos: Generalmente, cuando se desarrolla
Parámetros
de Entrada
Método
un modelo de datos no se utiliza toda esta
complejidad. Por ejemplo, generalmente no se
definen métodos
13
Diagramas de Clases
(¿Que es una Clase?)
Para los Atributos:
[visibilidad] [/] nombre [:tipo] [multiplicidad] [=valor por
omisión] [{propiedad}]
Para los Métodos:
[visibilidad] nombre [(lista de parámetros)] [{propiedad}]
Donde un parámetro es:
[dirección (in/out/inout)] nombre: tipo [multiplicidad] [=valor por
omisión]
Las propiedades pueden una o mas de las siguientes:
readOnly, isQuery, Concurrent, Guarded, Sequential, etcétera
... o cualquier otra predefinida ...
14
Diagramas de Clases
¿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
Objeto:
pedro = new Persona()
Representación de algo que se
describe mediante un identificador,
una estructura y un comportamiento.
“Instancia de una Clase”
16
Diagramas de Clases
public class Persona {
private String nombre;
private char sexo;
private Date fechaNac;
private String profesion;
public Persona(
String nombre, char sexo, Date fechaNac, String profesion) {
this.nombre = nombre;
this.sexo = sexo;
this.fechaNac = fechaNac;
this.profesion = profesion;
}
}
Existe una diferencia muy
importante entre un Objeto y
una Clase
17
Diagramas de Clases
Persona p1 = new Persona(
“Pedro”, 'M', new Date(16, 7, 1988), “Actor” );
Persona p2 = new Persona(
“Andrea”, 'F', new Date(14, 4, 1980), “Ceramista”);
Persona p3 = new Persona(
“María”, 'F', new Date(23, 11, 1960), “Médico” );
Persona p4 = new Persona(
“Luis”, 'M', new Date(12, 1, 1977), “Ingeniero”);
C
r
e
a
r
I
n
s
t
a
n
c
a
s
i
(
I
n
s
t
a
n
c
a
r
)
i
18
Diagramas de Clases
(Parametrizables / Abstractas / Utilitarias)
Clases Parametrizables: Plantillas
de clases que se pueden
parametrizar con uno o más tipos
de datos según sea necesario
(Clases Genéricas)
Clases Abstractas: Clases que no
tienen implementación para todos
los métodos definidos
Clases Utilitarias: Clases que
contienen librerías de funciones
(no interesa mucho la
implementación)
19
Diagramas de Clases
(Parametrizables / Abstractas / Utilitarias)
public class Lista<Tipo> {
public void insertar (Tipo t)
{ /* código */ }
public void eliminar (Tipo t)
{ /* código */ }
public Tipo eliminar (int pos)
{ /* código */ }
public Tipo obtener (int pos)
{ /* código */ }
public Iterador iterador ()
{ /* código */ }
}
// La clase se usa de la siguiente forma:
Lista<int> listaDeEnteros = new Lista<int>();
Lista<Persona> listaDePersonas = new Lista<Persona>();
20
Diagramas de Clases
(Parametrizables / Abstractas / Utilitarias)
public abstract class FiguraBase {
public void insertarEnCanvas(Canvas c) { /* código */ }
public void eliminarDeCanvas(Canvas c) { /* código */ }
// Los métodos siguientes son abstractos,
// es decir, no tienen implementación
public abstract double getArea();
public abstract double getPerimetro();
public abstract double getRectCont();
public abstract double getDibujar();
}
21
Diagramas de Clases
(Especialización / Generalización / Herencia)
Jerarquía de Clases:
Relación ES-UN(A),
abstracciones de
generalización /
especialización de clases
Herencia: Propiedad que
tienen las clases de heredar
de sus superclases estructura
y/o comportamiento (Simple /
Múltiple)
22
Diagramas de Clases
(Especialización / Generalización / Herencia)
Herencia:
Disjunta / Traslapada
Total / Parcial
23
Diagramas de Clases
(Especialización / Generalización / Herencia)
public abstract class Figura {
public abstract double calcArea ();
public abstract void dibujar (Canvas canvas);
}
public class Rectangulo
extends Figura {
// ...
}
public class Elipse
extends Figura {
// ...
}
public class Cuadrado
extends Rectangulo {
// ...
}
public class Circulo
extends Elipse {
// ...
}
24
Vista lógica o
estructural
• Polimorfismo: se puede usar el
mismo nombre para la definición de un
método en varias clases sin importar la
relación entre las mismas.
• Reescritura o
sobrecarga: permite nombrar
código diferente con el mismo nombre
para más de una clase de objetos.
• Encadenamiento tardío:
permite seleccionar el código adecuado al
objeto definido en la invocación del método.
Persona
-oid: OID
-nombre: Cadena(64)[1]
-direccion: Cadena(128)[0..1]
-telefono: Cadena(16)[0..1]
+modifica()
+despliega()
Trabajador
-cargo: TipoCargo[1]
-sueldoActual: Moneda[0..1]
+despliega()
Estudiante
-carrera: TipoCarrera[1]
+despliega()
Preparador
-fechaConcurso: Fecha[1]
+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
¿Cuántos profesores puedo tener en el
conjunto de entidades “Profesores”?
¿Y en “Departamentos”?
¿Con cuantos profesores puede
estar asociado un departamento?
¿Y al contrario?
27
Relaciones (Vínculos)
N:M
Vínculo / Relación
Dicta / Es dictada por
Programación
10
Programación
20
Bases de Datos
Profesores
Materias
¿Cuántos profesores puedo tener en el
conjunto de entidades “Profesores”?
¿Y en “Materias”?
¿Con cuantos profesores puede
estar asociado una materia? ¿Y al
contrario?
28
Relaciones (Vínculos)
1:1
Vínculo / Relación
Es novia de / Es novio de
Chicas
Chicos
¿Cuántos muchachos puedo tener en
el conjunto de entidades “Chicos”?
¿Y en “Chicas”?
¿Con cuantos Chicos puede estar
asociados (ser novios) de una Chica
29
en particular? ¿Y al contrario?
Diagramas de Clases
(Asociaciones)
Asociaciones: Representan relaciones estructurales entre
las clases (la forma en que están relacionadas entre si las
clases)
¿Cómo se implementan?
30
Diagramas de Clases
(Asociaciones)
public class Departamento {
// Una lista de profesores
// (Un departamento tiene muchos profesores)
private List<Profesor> profesorList;
}
// ...
public class Profesor {
// Una referencia a un departamento
// (Un profesor pertenece sólo a un departamento)
private Departamento departamentoRef;
}
31
Diagramas de Clases
(Asociaciones)
public class Estudiante {
// Una lista de asignaturas
// (Un estudiante tiene muchas asignaturas)
private List<Asignatura> asign
Comentarios de: UML Diagramas de Clases (UML ilustrado) (0)
No hay comentarios