Está en la página 1de 23

escuela tcnica superior

de ingeniera informtica

UML y Diseo:
Diagramas de Clases
e Interaccin
Departamento de
Lenguajes y Sistemas Informticos

Ingeniera del Software de Gestin II

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

Los diagramas de interaccin tambin se utilizan


durante el anlisis de requisitos

ndice
Introduccin
Diagramas de Clases de Diseo
Diagramas de Interaccin:
Diagramas de Colaboracin
Diagramas de Secuencia

Diagramas de Clase de Diseo


Sirven para obtener una representacin del modelo del
diseo (e implementacin) esttico de un sistema
Incluye los elementos de UML tpicos de los diagramas de
clase que se utilizan durante el anlisis de requisitos
Aade otros elementos especficos del diseo:
Interfaces
Visibilidad
Navegacin

Durante el desarrollo de un sistema software, el punto de


partida del modelo de diseo esttico (capa de negocio)
ser precisamente el modelo del dominio obtenido durante
el anlisis de requisitos. A partir de este modelo, iremos
aadiendo todo aquello que estimemos oportuno con vistas
al diseo.

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

El rombo blanco indica el


extremo del agregado.

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

La clase ms general (la superclase),


superclase contiene todas las
propiedades (atributos y asociaciones) comunes, que son
heredados por las clases ms especficas (las subclases)
subclases
Todas las instancias de las subclases se consideran tambin
instancias de la superclase
Clasificaciones disjuntas/solapadas y completas/incompletas

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

Objeto annimo para


representar cualquier
objeto de una clase.

: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

Un enlace entre dos


objetos es una
instancia de la
asociacin entre las
clases de dichos
objetos.
Se pueden indicar
tambin los enlaces
(subrayados) y de los
roles (sin subrayar).

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

Diagramas de Objetos (2)


Notaciones alternativas:
f1:Factura
f1:Factura
[pendienteDePago]
[pendienteDePago]
nmero
nmero =
= 8765
8765

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

En este caso se usa


la notacin
multiobjeto porque
no interesan las
lneas de factura ni
los productos
concretos.

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

Referencias y Navegabilidad (2)


Polgono
Polgono

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

En ambas clases se incluyen colecciones de


referencias a objetos de la clase asociada.
Si la multiplicidad es uno, no hace falta una coleccin.

descritoPor

3..*

{ordered}

Punto

La restriccin de la navegabilidad implica que en


la clase Punto no se guarde referencia alguna a los
polgonos a los que pertenece.

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:

direccin: in (entrada), out (salida), inout (entrada/salida)

nombre del parmetro

tipo del parmetro

valor por defecto (valor que toma el parmetro si no se proporciona el


argumento durante la llamada al mtodo)

Tipo del resultado

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

La disponibilidad de una operacin significa invocarla


La disponibilidad de una asociacin significa la
posibilidad de navegar por ella
Por defecto, el acceso a los atributos es privado y
que el acceso a las operaciones es pblico

10

Interfaces
1..*

Profesor

Relacin de dependencia.
dependencia

tutor

...

Alumno

Relacin de implementacin.
implementacin

DarCita()
...

<<interface>>
<<interface>>

ICitador

Una clase implementa una o ms


interfaces, proporcionando mtodos
para todas las operaciones.

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..*

Una clase invoca


las operaciones de
otra clase a travs
de un interfaz.

<<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

Mecanismo de Herencia (2)


Clase abstracta con una operacin abstracta.
Las clases hijas proporcionan mtodos que la
implementa.

Trabajador
fechaContrato
contratar()
relacin contractual
{complete, disjoint}

Docente
departamento
alumnosPfc
contratar()
nuevoPfc()

Administrativo
puesto
contratar()
Doctor

titulacin
{incomplete}

Mediante el polimorfismo podemos


definir la misma operacin a lo largo
de la jerarqua, especfica para la
clase donde se define. La propiedad
isPolimorphic por defecto es true.

{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

El diseo de operaciones de sistema correspondientes


a un caso de uso y el reparto de responsabilidades se
pueden ilustrar mediante diagramas de interaccin
Los diagramas de secuencia tambin se utilizan
durante el anlisis de requisitos

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

Diagramas de Colaboracin (2)


Universidad

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.

Esta propiedad indica que el objeto


se crea durante la interaccin.
Ntese que no se invoca a ninguna operacin para
guardar la referencia a la Universidad, puesto que la
navegacin es unidireccional.

14

Diagramas de Colaboracin (3)


Universidad

Este mtodo se asigna a la


clase Universidad.

2: quitarDptoLista(d)

BorrarDpto(d:Departamento)

u:Universidad

1..*

Departamento

Invocacin del destructor de


la clase Departamento.

Este estereotipo significa que el


enlace al objeto referenciado es
un parmetro que nos ha sido
pasado anteriormente.

<<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.

Diagramas de Colaboracin (4)


1: <<become>>

o: Clase
[estado 2]

o: Clase
[estado 1]

El objeto cambia de estado y


se convierte en el segundo.

1: <<copy>>

o1: Clase

o2: Clase
Se crea un nuevo objeto que
es una copia del primero.

15

Diagramas de Colaboracin (5)


1.a [cond1]: msg1()

o2: Clase2

o1: Clase1

El primer objeto toma dos


alternativas, excluyentes
entre s.
Las alternativas se denotan
con letras, no con nmeros.

1.b [cond2]: msg2()

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.

Diagramas de Colaboracin (6)


o: Objeto

1: <<create>>
2: ejecutaListaOp(l-op)
3: <<destroy>>

Por cada operacin de la lista de


operaciones se invoca la ejecucin de
una operacin en la base de datos

2.1: *[op l-op] ejecutar(op)

: Transaccin
{transient}

<<global>>

bd: AccesoBD

La referencia al objeto de acceso a la


base de datos es global.
Objeto transitorio se crea y
destruye durante la interaccin.

16

Diagramas de Colaboracin (7)


1: *[cond] msg()

o1: Clase1

<<association>>

o: Clase2

A cada objeto de clase2 se le enva un mensaje msg().


El envo del mensaje puede estar condicionado.
El estereotipo del enlace indica que las referencias a dichos
objetos se conocen por una asociacin (valor por defecto).

1: msg()

l: Coleccin

o1: Clase1
Se enva un mensaje a la coleccin.

1: *[1..n] msg()

l[i]: Clase2

o1: Clase1

Otra forma de recorrido de una lista mediante indexacin.

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

Diagramas de Secuencia (2)


Mensaje al
objeto iniciador.
iniciador

NuevoDpto(nombre:String)

<<create>>(nombre)

Universidad

Departamento
nombre

Eje temporal
temporal
Eje

1..*

Este objeto se ha creado


durante la interaccin

u:Universidad

{new}

d:Departamento

Invocacin del constructor


de la clase Departamento.
El constructor devuelve la
referencia al objeto creado.

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

Diagramas de Secuencia (3)


u:Universidad
BorrarDpto(d:Departamento)

<<destroy>>

Este objeto se ha
eliminado durante
la interaccin
{destroyed}

d:Departamento

Invocacin del destructor


de la clase Departamento:
el objeto se elimina del
sistema. La vuelta del
mensaje est vaca.

Universidad

1..*
quitarDptoLista(d)

Departamento
nombre

Invocacin de un mtodo de la
propia clase. Hay que quitar las
referencias hurfanas.
hurfanas

La lnea de vida del


objeto eliminado
termina en este
punto.

Diagramas de Secuencia (4)


Objeto transitorio se crea y
destruye durante la interaccin.

o:Objeto

bd:AccesoBD

{transient}

<<create>>

: Transaccin

ejecutaListaOp(l-op)

*[op l-op] ejecutar(op)

<<destroy>>
Por cada operacin de la lista de
operaciones se invoca la ejecucin de
una operacin en la base de datos

19

Diagramas de Secuencia (5)


o1:Clase1

o2:Clase2
[cond1] msg1()
[cond2] msg2()

Notacin para el envo de


mensajes alternativos en
UML 1.
Las condiciones deben ser
excluyentes entre s.
Si la alternativa afecta al
mismo objeto, la lnea de
vida se bifurca para denotar
cada una de las
posibilidades.

Diagramas de Secuencia (6)


o1: Clase1

o: Clase2

*[cond] msg()

l[i]: Clase2
Denota una coleccin l de objetos de clase2.
Ntese la notacin de plantilla.

A cada objeto de clase2 se le enva un


mensaje msg().
El envo del mensaje puede estar
condicionado.

Denota el i-simo objeto de clase2


perteneciente a una coleccin l.

l: Coleccin<Clase2>

20

Diagramas de Secuencia (7)

msg1()

msg2()

* [condicin]

Notacin para agrupar mensajes dentro de una iteracin en UML 1.


La secuencia enmarcada se repite mientras la condicin sea cierta.

Diagramas de Secuencia (8)


o1:Clase1

ALT

[cond1]

[cond2]

o2:Clase2

o3:Clase3

msg1()

msg2()

Notacin para el envo de mensajes alternativos en UML 2.


Las condiciones tambin deben ser excluyentes.

21

Diagramas de Secuencia (9)


o1:Clase1

LOOP

[condicin]

o2:Clase2

o3:Clase3

msg1()

msg2()

Notacin para iteraciones en UML 2.


La secuencia se repite mientras la condicin sea cierta.

Diagramas de Secuencia (10)


o1:Clase1

OPT

o2:Clase2

o3:Clase3

[cond opt] msg1()

LOOP

[condicin loop]

msg2()

Anidamiento de alternativas e iteraciones en UML 2

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

También podría gustarte