Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema Uml - Diseño
Tema Uml - Diseño
de ingeniera informtica
UML y Diseo:
Diagramas de Clases
e Interaccin
Departamento de
Lenguajes y Sistemas Informticos
ndice
Introduccin
Diagramas de Clases de Diseo
Diagramas de Interaccin:
Diagramas de Colaboracin
Diagramas de Secuencia
Introduccin
Diagramas de clase (vista esttica):
Anlisis de requisitos:
requisitos representacin del modelo del
dominio
Diseo:
Diseo representacin de las clases desde el punto de
vista de la implementacin del software
Diagramas de interaccin (vista dinmica):
representacin del modelo funcional de un sistema mediante
intercambio de mensajes:
Diagramas de colaboracin:
colaboracin prima la relacin estructural
de los objetos que participan en la interaccin
Diagramas de secuencia:
secuencia prima la secuencia temporal de
los mensajes intercambiados entre los objetos que
conforman la interaccin
ndice
Introduccin
Diagramas de Clases de Diseo
Diagramas de Interaccin:
Diagramas de Colaboracin
Diagramas de Secuencia
Asociaciones
Nombre de rol
Indica el papel o rol que juega
cada clase en la asociacin. Por
defecto es el nombre de la clase
en minsculas. Es obligatorio es
asociaciones de una sola clase y si
hay ms de una asociacin entre
dos clases.
rolA
Nombre
Es opcional en UML y debe ser
una forma verbal que tenga
sentido al leerlo junto con los
nombres de los roles de
izquierda a derecha o de arriba
a abajo.
nombreAsociacin
multA
Multiplicidad
Indica los nmeros mnimo y
mximo de instancias de la clase
que pueden tener enlaces de la
asociacin con una misma
instancia de la otra clase.
Direccin de lectura
Indica en qu sentido
debe leerse la asociacin.
Slo es necesario si es
hacia la izquierda o hacia
arriba.
rolB
multB
Valores habituales
0..1 : opcional
1..1 : obligatoria
0..* : mltiple opcional
1..* : mltiple obligatoria
* : equivalente a 0..*
1 : equivalente a 1..1
Agregados
Un agregado representa una relacin todo-parte
donde los objetos que la conforman:
tienen una existencia independiente del agregado
no pertenecen de manera exclusiva al agregado
Polgono
descritoPor
3..*
{ordered}
Punto
Compuestos
Un compuesto tambin representa una relacin
todo-parte donde los objetos que la conforman:
no tienen una existencia independiente del agregado
s pertenecen de manera exclusiva al agregado
El rombo negro indica
el extremo del
compuesto. Si no se
indica la cardinalidad
se asume 1..1.
Factura
Factura
nmero
nmero
emitidaA
1..1
Cliente
Cliente
1..*
LneaFactura
LneaFactura
cantidad
cantidad
precio
precio
*
1..1
Producto
Producto
Agregados y Compuestos
Notaciones alternativas:
emitidaA
Factura
Factura
1..1 Cliente
Cliente
nmero
nmero
LneaFactura
LneaFactura
1..*
cantidad
cantidad
precio
precio
1..1 Producto
Producto
nmero
nmero
emitidaA
Factura
Factura
LneaFactura
LneaFactura
cantidad
1..* cantidad
precio
precio
1..1
1..1
Cliente
Cliente
Producto
Producto
1..1
Matrcula
Matrcula
Persona
Persona
0..1
Vehculo
Vehculo
nmeroBastidor
* nmeroBastidor
0..*
modelo
modelo
propietario
Automvil
Automvil
plazas
plazas
Camin
Camin
tonelaje
tonelaje
jes
jes
Motocicleta
Motocicleta
cilindrada
cilindrada
Especializacin
Especializacin
Generalizacin
Generalizacin
Generalizacin / Especializacin
Derivacin
Cliente
Cliente
emitidaA
1..1
*
Factura
Factura
nmero
nmero
LneaFactura
LneaFactura
/total
/total
cantidad
*
1..* cantidad
precio
precio
/contiene
1..1
1..*
Producto
Producto
{Los productos que
contiene una factura
son los productos que
aparecen en las lneas
de factura de la factura}
{total =
suma de cantidad*precio
de todas las lneas de factura}
Objetos
Los objetos son instancias de una clase
El nombre de objeto representa a una variable que
contiene una referencia al objeto.
Se puede omitir
cualquiera de los
dos, pero al menos
uno debe aparecer.
El tipo de
los atributos
se suele
omitir.
nombreObjeto:nombreClase
nombreObjeto:nombreClase
[lista
[lista de
de estados]
estados]
atributo
atributo11 :: Tipo
Tipo11 =
= valor
valor11
atributo
atributoNN :: Tipo
TipoNN =
= valor
valorNN
:Punto
:Punto
Estados
concurrentes
en los que se
encuentra el
objeto.
:Punto
:Punto
Notacin multiobjeto
para representar un
grupo de objetos de la
misma clase.
Diagramas de Objetos
Los diagramas de objetos permiten representar el
estado del sistema en un momento dado, como una
fotografa instantnea (snapshot
snapshot).
f1:Factura
f1:Factura
[pendienteDePago]
[pendienteDePago]
nmero
nmero =
= 8765
8765
emitidaA
c1:Cliente
c1:Cliente
lf2:LneaFactura
lf2:LneaFactura
cantidad
cantidad =
=1
1
precio
precio =
= 63,05
63,05
lf1:LneaFactura
lf1:LneaFactura
cantidad
cantidad =
=3
3
precio
precio =
= 12,50
12,50
p2:Producto
p2:Producto
lf3:LneaFactura
lf3:LneaFactura
p1:Producto
p1:Producto
p3:Producto
p3:Producto
cantidad
cantidad =
=1
1
precio
precio =
= 5,25
5,25
emitidaA
c1:Cliente
c1:Cliente
lf1:LneaFactura
lf1:LneaFactura
cantidad
cantidad =
=3
3
precio
precio =
= 12,50
12,50
p1:Producto
p1:Producto
lf2:LneaFactura
lf2:LneaFactura
cantidad
cantidad =
=1
1
precio
precio =
= 63,05
63,05
p2:Producto
p2:Producto
lf3:LneaFactura
lf3:LneaFactura
cantidad
cantidad =
=1
1
precio
precio =
= 5,25
5,25
p3:Producto
p3:Producto
f1:Factura
f1:Factura
[pendienteDePago]
[pendienteDePago]
nmero
nmero =
= 8765
8765
:LneaFactura
:LneaFactura
emitidaA
c1:Cliente
c1:Cliente
:Producto
:Producto
Referencias y Navegabilidad
Todos los objetos tienen una identificacin nica en
el sistema (object identifier), que tambin se
denomina referencia del objeto
Por defecto, todo enlace se implementa mediante
un par de referencias de objetos, una en cada
sentido de la asociacin
Por dichos enlaces podemos navegar en ambos
sentidos de una asociacin
Podemos restringir la navagibilidad de una
asociacin
Polgono
Definicin de las
clases de
implementacin.
puntos[3..*]:
puntos[3..*]: Punto
Punto {ordered}
{ordered}
Punto
Punto
polgonos[*]:
polgonos[*]: Polgono
Polgono
{ordered} 3..*
Punto
Polgono
descritoPor
3..*
{ordered}
Punto
Propiedades de Atributos
De manera general, una vez que se ha creado un
objeto se pueden modificar los valores de sus
atributos
Podemos aadir restricciones a los atributos:
{frozen} no puede modificarse su valor una vez que
el objeto se ha creado
{addOnly} slo pueden aadirse nuevos valores a
un atributo, pero no modificarlos ni eliminarlos
(asumiendo una multiplicidad de varios)
{changeable} valor por defecto
Propiedades de Asociaciones
De manera general, una vez que se ha creado un
objeto se pueden modificar sus enlaces, crearlos
nuevos o eliminarlos
Podemos aadir restricciones a los roles de una
asociacin:
{frozen} slo pueden aadirse nuevos enlaces a la
asociacin entre dos clases durante la creacin de los
objetos participantes
{addOnly} slo pueden aadirse nuevos enlaces a
la asociacin entre dos clases (en cualquier instante)
{changeable} valor por defecto
Operaciones y Mtodos
En UML, una operacin es una declaracin que
define conceptualmente una funcin, mientras que un
mtodo es la implementacin concreta de una
operacin
En general, reservaremos el trmino operacin para
el anlisis, y el trmino mtodo para el diseo
Las operaciones se componen de:
Nombre de la operacin
Lista de parmetros, aportando cada uno:
Visibilidad
El acceso a los atributos, operaciones y asociaciones
de una clase puede estar restringido por su
visibilidad:
+ (pblica) disponible para cualquier clase
# (protegida) disponible slo para la clase y subclases
- (privada) disponible slo para la clase
~ (paquete) disponible slo para clases que pertenecen
al paquete donde est definida la clase
10
Interfaces
1..*
Profesor
Relacin de dependencia.
dependencia
tutor
...
Alumno
Relacin de implementacin.
implementacin
DarCita()
...
<<interface>>
<<interface>>
ICitador
DarCita()
...
Un estereotipo define un
nuevo elemento de UML a
partir de un elemento bsico.
Una interfaz es una
coleccin de operaciones
que especifican un contrato.
tutor
1..*
<<uses>>
ICitador
Alumno
Interfaz de entrada:
entrada notacin para indicar
que Alumno necesita el interfaz ICitador.
Profesor
...
DarCita()
...
Interfaz de salida:
salida notacin para indicar que
Profesor provee el interfaz ICitador.
Mecanismo de Herencia
Una clase abstracta que es raz de la
jerarqua (se denotan con letra cursiva).
No pueden haber objetos de una clase
abstracta, que suele utilizarse para
establecer una clase genrica en una
dni
jerarqua.
Esta clase abstracta tiene un mtodo
asignarDni() {leaf}
hoja que no puede redefinirse.
vinculacin
Las clases hijas heredan los
con la universidad
atributos, operaciones y
asociaciones.
{overlapping, incomplete}
Pueden haber varias clases
padre (herencia mltiple).
Profesor
{root}
Trabajador
fechaContrato
contratar()
Alumno
fechaMatrcula
matricular()
Clases abstractas con operaciones abstractas.
abstractas Las clases hijas
deben proporcionar mtodos que implementen dichas operaciones, o
seguirn considerndose abstractas.
11
Trabajador
fechaContrato
contratar()
relacin contractual
{complete, disjoint}
Docente
departamento
alumnosPfc
contratar()
nuevoPfc()
Administrativo
puesto
contratar()
Doctor
titulacin
{incomplete}
{leaf}
alumnosTesis
contratar()
nuevaTesis()
Esta clase se
define como
hoja, por lo que
no podemos
definir otras
clases a partir
de ella.
Redefine el
mtodo de
contratacin.
ndice
Introduccin
Diagramas de Clases de Diseo
Diagramas de Interaccin:
Diagramas de Colaboracin
Diagramas de Secuencia
12
Interacciones
Una interaccin est formada por un conjunto de
objetos que intercambian mensajes para cumplir un
objetivo determinado
Los diagramas de interaccin se utilizan para
modelar los aspectos funcionales/dinmicos de un
sistema, desde un punto de vista del diseo:
Colaboraciones:
Colaboraciones priman la estructura entre los
objetos participantes de la interaccin
Secuencias:
Secuencias priman la secuencia temporal de los
mensajes intercambiados
ndice
Introduccin
Diagramas de Clases de Diseo
Diagramas de Interaccin:
Diagramas de Colaboracin
Diagramas de Secuencia
13
Diagramas de Colaboracin
Muestran la organizacin estructural de los objetos
que participan en una interaccin
En UML 2, son Diagramas de Comunicacin
Los pasos para construirlos son:
Incluir los objetos participantes, estableciendo sus
propiedades iniciales. Se pueden crear y/o destruir
objetos en una interaccin. Los objetos pueden cambiar
de estado
Establecer los enlaces entre dichos objetos, a lo largo
de los cuales pasarn los mensajes. Estos enlaces
pueden ser locales, globales, parmetros o asociaciones
Adjuntar cada mensaje al enlace apropiado, comenzado
por el mensaje que inicia la interaccin y estableciendo
los nmeros de secuencia para indicar su ordenacin
temporal, pudindose incluir saltos e iteraciones
Mensaje al objeto
iniciador.
iniciador
2: incluirDptoLista(d)
Este mtodo
se asigna a la
clase
Universidad.
NuevoDpto(nombre:String)
1..*
u:Universidad
<<self>>
Departamento
1: d := <<create>>(nombre)
nombre
<<local>>
Este estereotipo significa
que por dicho enlace se
invoca un mtodo de la
propia clase.
Este estereotipo significa que el
enlace al objeto referenciado es
una variable local del mtodo
que invoca el constructor.
d:Departamento
{new}
Invocacin del
constructor de
la clase
Departamento.
14
2: quitarDptoLista(d)
BorrarDpto(d:Departamento)
u:Universidad
1..*
Departamento
<<self>>
1: <<destroy>>
<<parameter>>
d:Departamento
{destroyed}
Esta propiedad indica que el objeto
se destruye durante la interaccin.
Ntese que no se invoca a ninguna operacin para
quitar la referencia a la Universidad, puesto que la
navegacin es unidireccional.
o: Clase
[estado 2]
o: Clase
[estado 1]
1: <<copy>>
o1: Clase
o2: Clase
Se crea un nuevo objeto que
es una copia del primero.
15
o2: Clase2
o1: Clase1
1.b.1: msg3()
o3: Clase3
o4: Clase4
Los mensajes se van numerando para indicar el orden.
Se sigue la notacin de Dewey:
Dewey el mensaje 1.2
indicara el 2 mensaje que se invoca durante la
ejecucin del mtodo invocado en el 1er mensaje.
1: <<create>>
2: ejecutaListaOp(l-op)
3: <<destroy>>
: Transaccin
{transient}
<<global>>
bd: AccesoBD
16
o1: Clase1
<<association>>
o: Clase2
1: msg()
l: Coleccin
o1: Clase1
Se enva un mensaje a la coleccin.
1: *[1..n] msg()
l[i]: Clase2
o1: Clase1
ndice
Introduccin
Diagramas de Clases de Diseo
Diagramas de Interaccin:
Diagramas de Colaboracin
Diagramas de Secuencia
17
Diagramas de Secuencia
Muestran la secuencia temporal de los mensajes
Los pasos para construirlos son:
Establecer los objetos participantes en la interaccin,
colocando el objeto iniciador en primer lugar
Los objetos se alinean en la parte superior y aparecen
conforme participan en la misma
Establecer la lnea de vida de cada objeto, colocndose
los mensajes conformen aparecen
Podrn crearse objetos, colocndose a la altura del
mensaje que los crea. Los objetos tambin pueden
destruirse
Establecer los focos de control, prestando atencin a las
anidaciones
NuevoDpto(nombre:String)
<<create>>(nombre)
Universidad
Departamento
nombre
Eje temporal
temporal
Eje
1..*
u:Universidad
{new}
d:Departamento
El foco de control
indica que el hilo
de ejecucin lo
tiene el objeto.
incluirDptoLista(d)
Lnea de vida de
un objeto.
Invocacin de un mtodo de
la propia clase. Ntese la
anidacin del foco de control.
18
<<destroy>>
Este objeto se ha
eliminado durante
la interaccin
{destroyed}
d:Departamento
Universidad
1..*
quitarDptoLista(d)
Departamento
nombre
Invocacin de un mtodo de la
propia clase. Hay que quitar las
referencias hurfanas.
hurfanas
o:Objeto
bd:AccesoBD
{transient}
<<create>>
: Transaccin
ejecutaListaOp(l-op)
<<destroy>>
Por cada operacin de la lista de
operaciones se invoca la ejecucin de
una operacin en la base de datos
19
o2:Clase2
[cond1] msg1()
[cond2] msg2()
o: Clase2
*[cond] msg()
l[i]: Clase2
Denota una coleccin l de objetos de clase2.
Ntese la notacin de plantilla.
l: Coleccin<Clase2>
20
msg1()
msg2()
* [condicin]
ALT
[cond1]
[cond2]
o2:Clase2
o3:Clase3
msg1()
msg2()
21
LOOP
[condicin]
o2:Clase2
o3:Clase3
msg1()
msg2()
OPT
o2:Clase2
o3:Clase3
LOOP
[condicin loop]
msg2()
22
!Gracias!
Podemos mejorar esta leccin?
Mndanos un email a octavio@lsi.us.es
Visite la web de la asignatura www.lsi.us.es
23