Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Uml
Uml
UML
para TADP
Por
Fernando Dodino
Carlos Lombardi
Versin 2.0
Mayo 2006
Indice
UML (UNIFIED MODELING LANGUAGE).........................................................................................3
DIAGRAMA DE CLASES ........................................................................................................................4
RELACIONES ENTRE CLASES ........................................................................................................................4
RELACION HEREDA ....................................................................................................................4
RELACIN IMPLEMENTA ...........................................................................................................4
RELACIN USA.............................................................................................................................5
RELACIN CONOCE....................................................................................................................5
RELACIN TIENE.........................................................................................................................6
Un breve ejemplo en Java...................................................................................................................7
DIAGRAMA DE OBJETOS .....................................................................................................................8
OBJETO .....................................................................................................................................................8
LINK..........................................................................................................................................................8
DIAGRAMA DE SECUENCIA ..............................................................................................................10
ACTORES/OBJETOS ..................................................................................................................................10
ACTIVACIN ............................................................................................................................................11
COMUNICACIN ......................................................................................................................................11
CREACIN DE OBJETOS ............................................................................................................................12
DESTRUCCIN DE UN OBJETO ..................................................................................................................12
DIAGRAMA DE COLABORACIN ....................................................................................................14
OBJETOS .................................................................................................................................................14
LINKS (ENLACES).....................................................................................................................................14
FLUJO DE MENSAJES (COMUNICACIN)....................................................................................................14
MENSAJES REFLEXIVOS ............................................................................................................................14
CREACIN Y DESTRUCCIN DE OBJETOS ...................................................................................................14
ITERACIONES:..........................................................................................................................................15
MENSAJE CONDICIONAL ..........................................................................................................................15
BIBLIOGRAFA COMPLEMENTARIA..............................................................................................15
Autores: Booch, Rumbaugh y Jacobson, quienes haban creado cada uno por su lado una
herramienta para modelar con objetos (por eso lo de Unificado).
sintaxis del UML: los distintos diagramas (Casos de Uso, Clase, Objetos, Estado, Actividad,
Secuencia, Colaboracin, etc.)
semntica del UML: el paradigma orientado a objetos.
Como herramienta de comunicacin, el objetivo principal de los diagramas UML es la
comprensin del lector, antes que su completitud. Entonces:
Diagrama de Clases
En UML, una clase es representada por un rectngulo que posee tres divisiones:
Nombre de la clase (si es abstracta se escribe en cursiva, o bien se
usa un estereotipo <<abstract>> arriba del nombre de la clase)
Animal
#nombre : String
+apodo : String = "michi"
-dieta
+alimentar(in comida)
#aburrirse()
Operaciones (qu mensajes que puede entender). No confundir con los mtodos que es cmo lo
resuelve cada objeto. La diferencia es similar a interface (operaciones) vs. implementacin (el
mtodo, la porcin de cdigo que se ejecuta cuando envo un mensaje a un objeto).
Ejemplo: un animal puede responder a los mensajes alimentar(recibe como parmetro una comida),
y aburrirse (sin parmetros). En UML no se codifica el mtodo alimentar.
La sintaxis para especificar operaciones es:
visibilidad nombre (lista de parmetros) : tipo a devolver (slo el nombre es
obligatorio)
Animal
#nombre : String
+apodo : String = "michi"
-dieta
+alimentar(in comida)
#aburrirse()
-Animal()
Conejo
-color
Len
-horasSueoPorDia : long = 20
-horasSueoActual : long = 0
RELACIN IMPLEMENTA
Conejo
-color
+visitar()
interface
Visitable
+visitar()
RELACIN USA
visita
Cliente
interface
Visitable
Dependencia: uno de los elementos usa o depende del otro. En el ejemplo agregamos un
Cliente quien tiene una operacin visitar(in animal : Visitable). Los tres casos de dependencias
posibles son:
Este tipo de relacin indica que los dos elementos colaboran entre s, pero que esa relacin es
dbil, casual; tiene un contexto temporal que no trasciende ms all de una operacin. No
obstante, sabemos que cualquier cambio en la interfaz Visitable impactar en alguna medida
en la clase Cliente.
Esta relacin se puede dar:
de una clase hacia una interfaz (como en el ejemplo de arriba)
de una clase hacia otra clase
Lo mismo vale para las relaciones que abajo se explican.
RELACIN CONOCE
Asociacin: uno de los elementos conoce al otro, almacenndolo como variable de instancia.
Lleva una etiqueta que expresa el rol que cumple dicha relacin. En cada extremo de la
asociacin puede agregarse la siguiente informacin:
Director
1..*
-nombre : String
-apellido : String
dirige
Zoo
-animales
-responsable
-zoo
-un nombre del rol: zoo para el Director y responsable para el Zoo.
-flechas de navegacin: determina el conocimiento (navegabilidad) desde un objeto
hacia el otro. En el ejemplo anterior, un director conoce el zoolgico que dirige y el
zoolgico conoce el/los directores.
En cambio, en el ejemplo de abajo el zoo conoce el/los directores pero el director no
conoce al zoolgico que dirige (indicado por la ausencia de la flecha que va de Director a
Zoo):
Director
-nombre : String
-apellido : String
1..*
dirige
Zoo
-animales
-responsable
-zoo
Director
1..*
dirige
-nombre : String
-apellido : String
Zoo
-animales
-zoo
-responsable
-multiplicidad: indica cuntos objetos de una clase se relacionan con la otra. En nuestro
caso cada zoolgico tiene uno o varios directores (indicado por el intervalo 1..* sin cota
superior) y un director puede estar en un zoolgico a la vez (indicado por el entero 1).
Puede ser un rango (0..1, 2..5), un rango sin cota (0..*, 1..*), un valor (1) o una serie de
valores (1, 3, 5).
En las asociaciones, hay una relacin ms fuerte entre ambos elementos. El conocimiento
implica que la colaboracin excede el marco temporal de una operacin, aunque cada uno de
los objetos sigue teniendo objetivos diferentes.
Cuando la asociacin se da entre objetos que representan una relacin todo-parte, llegamos
a la agregacin y composicin, que explicaremos a continuacin:
RELACIN TIENE
Si bien dentro de la materia hablamos genricamente del concepto de agregacin, podemos
dividir la relacin TIENE en:
1
Zoo
2
+addAnimal()
+ingresarCliente()
1..*
Cliente
+ingresar()
+visitar()
1
*
Animal
+comer()
+visitar()
En caso de duda, los libros recomiendan dejar la relacin como asociacin a secas.
Para la materia, es totalmente opcional distinguir entre agregacin y composicin, y
hablamos de agregacin a secas. Para documentar la relacin TIENE, se puede
adoptar alguno de los dos rombos y utilizar siempre ste.
implements CondicionIVA {
Diagrama de Objetos
Es un snapshot (foto) del sistema en un momento determinado. Es un caso particular del
diagrama de clases que tiene los siguientes elementos:
Objeto
Aparece con la etiqueta nombre del
objeto : Tipo (si es especificado). Luego
aparecen los atributos con sus respectivos
valores. Como las operaciones son
compartidas
por
todos
los
objetos,
lgicamente no aparecen.
Zooloco : Zoo
animales : Animal
Leo : Leon
nombre : String = Leo
comio : bool = false
horasDeSueoActual : long = 18
Link
Especifica relaciones entre objetos. Es una instancia de una asociacin.
dirige
Luli : Director
Zooloco : Zoo
responsable
zoo
animales : Animal
-animales : Animal
-zoo
1..*
- zoo
-animal
Zoo
--cliente
clientes
1..* 1
--zoo
animales
Cliente
Animal
-apellido : String
-fechaNacimiento : Date
-nombre : String
-comio : bool
Leon
Elefante
-horasDeSueoActual : long
-cantidadPersonasQuePuedenSubir : long
Zooloco : Zoo
animales : Animal
Leo : Leon
Lauri : Cliente
apellido = "Iturbe"
nombre = "Laura"
Shalimai : Elefante
nombre : String = "Shalimai"
comio : bool = false
cantidadPersonasQuePuedenSubir : long = 4
Arli : Elefante
nombre : String = Akti
comio : bool = false
cantidadPersonasQuePuedenSubir : long = 3
Diagrama de Secuencia
La idea central del diagrama de secuencia es mostrar cmo interactan los objetos en el
tiempo. Veremos sus elementos a travs de un ejemplo:
Un cliente, llamado Juan, quiere visitar el Zoolgico Zooloco. Para ello, tras abonar la
entrada, se le da una tarjeta de visita vlida para todo el da. El Zoolgico tiene varias pantallas
touch-screen para que los clientes conozcan la lista de todos los animales que pueden visitar.
Por ejemplo, para entrar a la jaula de Leo, el len, es aconsejable que est dormido, para lo
cual se va registrando las horas que duerme. Otros animales, como el conejo, los cabritos y las
ovejas, pueden visitarse en cualquier momento. Cuando Juan se retira, en la salida le solicitan
que arroje la tarjeta de visita a una ranura donde se destruye.
Juan : Cliente
Leo : Len
Zooloco : Zoo
ingresarCliente(cliente)
Visita(cliente)
Visita01849711
: Visita
visita
getAnimalesVisitables()
getTiempoDeSueoRestante()
animalesVisitables
visitar()
salirCliente()
destroy()
Actores/Objetos
1
: Cliente
Actor1
Arriba se ubican (1) los objetos que forman parte del sistema y (2) los usuarios (elementos
externos al sistema que pueden disparar mensajes). La sintaxis para especificar un objeto es:
Nombre del objeto (opcional) : Tipo al que pertenece.
Es conveniente poner un nombre que identifique al objeto, queda ms claro de qu objeto
estamos hablando, qu representa cada uno.
De la misma manera que un diagrama de objetos es una foto en un momento dado, el
diagrama de secuencia es una pelcula de nuestro sistema planteado un escenario
posible. Entonces quienes aparecen aqu son instancias concretas que envan y reciben
mensajes concretos. El diagrama nos sirve para saber quines preguntan, quines responden
y cmo estn repartidas las responsabilidades entre esos objetos.
10
Activacin
: Cliente
Leo : Leon
visitar()
Comunicacin
Los mensajes que se envan desde un objeto a otro se muestran con una lnea que va desde
el objeto emisor al receptor. Se puede mostrar lo que devuelve cada mensaje invirtiendo el
sentido de la comunicacin.
getAnimalesVisitables()
animalesVisitables
Las operaciones repetitivas se pueden escribir entre corchetes antes de cada mensaje o bien
pueden englobarse en un gran rectngulo. El grfico sera ms o menos:
Leo : Len
[ edad > 21 ] : visitar()
Object1
mensajeReflexivo()
11
Creacin de objetos
Cuando un objeto crea otro a travs de un mensaje se muestra de la siguiente manera
Object1
crearObjeto2()
Object2
Destruccin de un objeto
Se muestra de la siguiente manera
Object2
Object1
destroy()
12
Otro ejemplo:
Se quiere modelar una llamada a travs de una central telefnica. Para esto se tienen cuatro
objetos involucrados: dos interlocutores (s y r), una central y una conversacin. La secuencia
empieza cuando un interlocutor enva un mensaje a la central al descolgar el auricular. La
central da el tono de llamada, y el interlocutor marca el nmero al que desea llamar. El tiempo
de marcado debe ser menor a 30 segundos.
s:Interlocutor
:Central
r:Interlocutor
descolgarAuricular( )
{marcando.tiempoEjecucion < 30 segs}
darTonoDeLlamada( )
*marcarDigito( )
marcando
rutearLlamadas(s,n)
<<create>>
c:Conversacin
llamar( )
descolgarAuricular( )
conectar(r,s)
conectar(r)
conectar(s)
13
Diagrama de Colaboracin
Un diagrama de colaboracin es una alternativa al diagrama de secuencia para mostrar cmo
interactan los objetos en el tiempo, teniendo en cuenta tambin las relaciones entre ellos.
Contiene los siguientes elementos:
Objetos
Los objetos siguen esta notacin, al igual
que en el diagrama de secuencia.
Actor1
Links (Enlaces)
Especifican relaciones entre objetos. Es una instancia de una asociacin (entre clases, vista en
pg. 8, Diagrama de Objetos). Este elemento aparece en este diagrama para combinar el
encadenamiento de mensajes. Como siempre, puedo documentar lo que me interese mostrar
de la relacin (quizs el atributo, quizs el nombre de la relacin, o simplemente saber que
ambos objetos se relacionan me basta).
Laura : Persona
hijos
Melina : Persona
Concepto de Multiobjeto:
conjunto de objetos (coleccin).
Laura : Persona
hijos
Melina : Persona
1 : baate()
Adems del nombre, se suele acompaar los mensajes con un nmero de secuencia para
seguirlos en orden cronolgico.
Mensajes reflexivos
Laura : Persona
1 : vestite()
14
1. comprarUniforme(hijo)
2. inscribir(hijo)
Burbujas : JardinDeInfantes
Mensaje Condicional
Se indica escribiendo la restriccin a cumplir antes del nmero de secuencia del mensaje. El
formato es:
[ Restriccin ] N secuencia : mensaje a enviar
Ejemplo: [ Hijo en edad escolar ] 1 : inscribir(hijo)
Por ltimo, el mismo diagrama de secuencia de la pgina 10 como diagrama de colaboracin.
1. ingresarCliente(cliente)
Juan : Cliente
Zooloco : Zoo
3. av := getAnimalesVisitables()
2. <<new>>
4. esVisitable()
V1 : Visita
Leo : Leon
5. getTiempoSueoRestante()
Notas:
1. Se asumi que el Zoo conoce a sus animales, y guarda las visitas con la fecha y el cliente
(le interesa ms saber la cantidad de asistentes de un da que cuntas veces fue un cliente).
2. Se deja al lector la resolucin de los ltimos mensajes.
3. Las asociaciones se escribieron sin nombre para simplificar el diagrama (recordar lo dicho
en pgina 1, no hace falta documentar todo, slo lo que yo necesito).
Bibliografa complementaria
Learning UML, Sinan Si Alhir, Ed. OReilly, julio 2003.
15