Está en la página 1de 15

Gua de Referencia

UML
para TADP

Por
Fernando Dodino
Carlos Lombardi

Versin 2.0
Mayo 2006

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

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

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

UML (Unified Modeling Language)


 lenguaje: herramienta de comunicacin para las personas que permite representar un
modelo (una idea) del sistema real. Recordemos que un modelo es una abstraccin que lo
expresamos a travs de los distintos diagramas (el modelo no es el sistema, sino lo que me
interesa representar del sistema).

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:

Slo lo que nosotros queremos comunicar debe mostrarse en un diagrama


Expresamos una abstraccin del problema, esto significa perder informacin que no
necesito y quedarme slo con lo esencial para comprender lo que estoy mostrando. As
puedo tratar la complejidad de ese problema.
Adoptar como estrategia mostrar slo lo importante en lugar de documentar todo nos
permitir que los diagramas sean claros y simples, evitando quedar enmaraados entre
flechas y rectngulos.

Tener en cuenta estas ideas a la hora de documentar los trabajos prcticos.


A continuacin describimos los cuatro diagramas ms usados en la materia, tomando en
cuenta que se han dado las dos unidades de Teora de Objetos.

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

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

Contiene los atributos (o variables de instancia segn vimos en


Paradigmas, variables de clase en subrayado).
La sintaxis para especificar atributos es:
visibilidad nombre [multiplicidad orden] : tipo =
valor inicial (slo el nombre es obligatorio)

visibilidad (private -, protected # o public +). En el ejemplo nombre es


protected, apodo es public y dieta es private.
multiplicidad: 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)

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)

Relaciones entre clases


RELACION HEREDA
Generalizacin: una clase especfica
hereda los atributos, relaciones,
operaciones y mtodos de otra ms
general.

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

Realizacin: se establece entre una clase y una


interfaz; esto implica que todas las operaciones de
la interfaz estn soportadas por la clase.

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

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:




El elemento destino (en nuestro caso, un Visitable) es parmetro de una o varias


operaciones del elemento de origen (en nuestro caso, el Cliente)
el Visitable es devuelto como tipo por una o varias operaciones del Cliente
el Visitable es instanciado (pero no almacenado) por el Cliente

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

En caso de duda pueden omitirse las flechas de navegacin:

Tcnicas Avanzadas de Programacin

Director

1..*

Gua de Referencia de UML

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

1. Agregacin (rombo transparente): el objeto todo utiliza al objeto parte para su


funcionamiento, pero el tiempo de vida del objeto incluido es independiente del que lo incluye.
2. Composicin (rombo relleno): el objeto todo (o contenedor) se construye a partir del
objeto parte (o contenido), el tiempo de vida del objeto incluido est condicionado por el
tiempo de vida del que lo incluye.
Segn lo que podemos deducir del grfico de arriba: el zoo tiene clientes y animales, slo que
no es posible que existan animales sin un zoo.
La distincin entre agregacin y composicin puede ser importante en lenguajes que no
tengan Garbage Collector, porque eso indica que cuando se libere la memoria del objeto todo
tambin hay que liberar la memoria de los objetos contenidos que dejarn de vivir.

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.

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

Un breve ejemplo en Java


public interface CondicionIVA {...}
public class ConsumidorFinal implements CondicionIVA
...
}

public class ResponsableInscripto implements CondicionIVA {


...
}
public class ResponsableNoInscripto
...
}

implements CondicionIVA {

public class ImportadorEmpleados {


...
}
public class Empresa {
private CondicionIVA condicionIVA;
public void importarEmpleadosSAP() {
ImportadorEmpleados ie = new ImportadorEmpleados();
/* ... */
}
}
Nos queda el siguiente diagrama UML:

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

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

nombre : String = "Melina"


apellido : String = "Dodino"

responsable

zoo

animales : Animal

Tambin se pueden aplicar los casos de agregacin y composicin (vale el mismo


comentario de la pgina 4, se puede obviar la distincin entre agregacin y composicin
y directamente elegir un solo tipo de rombo para todos los casos).
Dado el siguiente esquema de clases:
1
es visitado por

-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

Podemos generar el siguiente diagrama de objetos para estudiar sus relaciones:

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

Zooloco : Zoo
animales : Animal
Leo : Leon

Lauri : Cliente
apellido = "Iturbe"
nombre = "Laura"

nombre : String = "Leo"


comio : bool = true

Shalimai : Elefante
nombre : String = "Shalimai"
comio : bool = false
cantidadPersonasQuePuedenSubir : long = 4

Arli : Elefante
nombre : String = Akti
comio : bool = false
cantidadPersonasQuePuedenSubir : long = 3

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

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

* [ for each animal ] :


esVisitable()

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

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

Activacin

: Cliente

Leo : Leon
visitar()

Opcionalmente se puede mostrar con un rectngulo la activacin de un objeto en un momento


dado, mientras est ejecutando alguna operacin.

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

BONUS: Sintaxis para especificar mensajes


[ condicin a cumplir ] * [tipo de
iteracin ] numero de secuencia :
variable devuelta := nombre de la
operacin(lista de argumentos)

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:

*[para cada objeto2] :

Los condicionales se expresan escribiendo previamente la condicin a cumplir:


Juan : Cliente

Leo : Len
[ edad > 21 ] : visitar()

Si un objeto se enva un mensaje a s mismo, la flecha vuelve hacia el mismo objeto:

Object1

mensajeReflexivo()

11

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

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

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

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)

Los interlocutores r y s pueden


intercambiar informacin despus
de conectarse.

Fuente: Luis Guerrero, Taller de UML de la Universidad de Chile

13

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

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.

Nombre del objeto : tipo al que pertenece

Tambin se puede incluir a los usuarios (actores externos al sistema) como


en el diagrama de secuencia. En algunos casos slo se muestra un mensaje
externo que se dispara desde afuera:
Objeto : Clase

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

Flujo de mensajes (Comunicacin)


Expresa el envo de un mensaje. Se representa mediante una flecha dirigida cerca de un link:

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

Creacin y destruccin de objetos


Se indican con nombres de mensajes representativos (del tipo create - new, destroy - delete,
etc.)

14

Tcnicas Avanzadas de Programacin

Gua de Referencia de UML

Iteraciones: se utiliza como prefijo de la operacin el siguiente formato


N secuencia * : [ Condicin de iteracin ] mensaje a enviar
Ejemplo: 1 * : [ For each animal ] esVisitable()
Lo que resulta un poco molesto es tener que incluir varios mensajes dentro de la misma
iteracin (que en el diagrama de secuencia es fcilmente agrupable con el rectngulo). En ese
caso se aconseja escribir la condicin de iteracin y luego unir con una lnea punteada (o en
todo caso repetir para cada mensaje la condicin de iteracin, lo que sea ms prctico para
leer).
Laura : Persona

Todo para el escolar


: Negocio

1. comprarUniforme(hijo)
2. inscribir(hijo)

Burbujas : JardinDeInfantes

* [ For each hijo ] :

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

También podría gustarte