Está en la página 1de 10

Diagramas de clases de UML

Franco Guidi Polanco


Escuela de Ingeniera Industrial
Pontificia Universidad Catlica de Valparaso, Chile
fguidi@ucv.cl
Franco Guidi Polanco (PUCV-EII) 2
Qu es UML?
UML (Unified Modeling Language) es un lenguaje visual
para crear modelos de sistemas.
UML fue desarrollado por el trabajo conjunto de los Tres
Amigos
Est compuesto por distintos diagramas, para apoyar
distintas etapas de desarrollo:
Anlisis
Diseo
Instalacin (deployment)
Franco Guidi Polanco (PUCV-EII) 3
Los Tres Amigos
Grady Booch
Jim Rumbaugh
Ivar Jacobson
Franco Guidi Polanco (PUCV-EII) 4
Por qu usar UML?
UML es principalmente una herramienta de
comunicacin:
con uno mismo
con los miembros de un equipo de desarrollo
con el cliente
Ventajas de utilizarlo:
Permite capturar adecuadamente los requerimientos
Apoya correcta comprensin de un sistema por parte de
distintos miembros de un proyecto de desarrollo
Franco Guidi Polanco (PUCV-EII) 5
Diagramas de UML
Casos de Uso
Clases
Objetos
Statechart
Actividades
Secuencia
Colaboracin
Componentes
Franco Guidi Polanco (PUCV-EII) 6
Diagrama de clases de UML
Describe las clases y muestra las relaciones entre
ellas.
Tipos de relaciones:
Is-a: una clase es del tipo de otra clase
Asociaciones entre clases:
Una clase contiene a otra clase (Has-a)
Agregacin
Composicin
Una clase usa otra clase (Uses-a)
Una clase crea a otra clase
Franco Guidi Polanco (PUCV-EII) 7
Representacin de clases
MiClase
MiClase
La figura de la izquierda muestra el smbolo para una
clase en su forma completa, y el de la derecha en su
forma abreviada.
Por convencin, los nombres de clases comienzan
con maysculas y deben estar escritos con letra de
tipo bold en sus smbolos.
Franco Guidi Polanco (PUCV-EII) 8
Representacin de clases (II)
En la forma completa del smbolo:
El compartimento superior est destinado al nombre de la
clase.
El compartimento del medio muestra los atributos de la
clase.
El compartimento inferior muestra las operaciones.
MiClase
Franco Guidi Polanco (PUCV-EII) 9
Atributos
Los atributos representan informacin acerca de un
objeto.
El trmino atributo no es exactamente sinnimo de
variable. Un atributo representa una propiedad
definida en trminos abstractos, mientras que una
variable es el mecanismo de implementacin del
atributo.
nombre: String
fechaDeNacimiento: date
altura: float
Atributos
Persona
Franco Guidi Polanco (PUCV-EII) 10
Operaciones
Se ubican en el compartimento inferior de las
clases.
Persona
getNombre():String
setNombre(nombre:String)
...
getEdad():integer
getAltura():float
setAltura(altura:float)
nombre: String
fechaDeNacimiento: date
altura:float
Operaciones
Franco Guidi Polanco (PUCV-EII) 11
Operaciones sobrecargadas
Las operaciones sobrecargadas aparecen varias
veces en el smbolo de la clase (en cada ocasin
con diferente cantidad o tipo de argumentos).
Una de las
versiones de la
operacin
rebajarPrecio
reduce el precio del
producto en una
cantidad
predeterminada y la
otra recibe un
porcentaje de
descuento.
Producto
precio: float
...
registrarVenta(fecha:Date, numUnidades:int)
rebajarPrecio()
rebajarPrecio(descuento: Porcentaje);
Franco Guidi Polanco (PUCV-EII) 12
Visibilidad de atributos y operaciones
UML aade un prefijo a las operaciones y atributos
para indicar su visibilidad:
+ para atributos y operaciones pblicas .
# para atributos y operaciones protegidas.
- para atributos y operaciones privadas.
Si se omite el prefijo, se asume que el atributo u
operacin es pblica.
Franco Guidi Polanco (PUCV-EII) 13
Atributos y operaciones de clases
Los atributos y operaciones de clase (aquellos que
no pertenecen a una instancia en particular sino
que son compartidos por toda la clase) se
representan en UML subrayados.
Registra el nmero de
rdenes de compra
creadas.
Obtiene en nmero de
rdenes de compra
creadas.
OrdenDeCompra
- NumeroDeOrdenes: int
...
+getNumeroDeOrdenes():int
...
Franco Guidi Polanco (PUCV-EII) 14
Operaciones y clases abstractas
Polgono
{abstract}
El nombre de una clase abstracta debe estar en estilo
itlico o con la indicacin {abstract}.
Las operaciones abstractas tambin deben estar en
estiloitlico o con la indicacin {abstract}.
+getArea():float {abstract}
...
area:float
...
Polgono
+getArea():float...
area:float
...
Franco Guidi Polanco (PUCV-EII) 15
Generalizacin: Herencia simple
Una jerarqua de herencia se muestra utilizando flechas
que apuntan hacia arriba en la jerarqua (en el ejemplo:
Automvil y Camin son subclases de
VehculoMotorizado).
VehculoMotorizado
Camin Automvil
Franco Guidi Polanco (PUCV-EII) 16
Camin Automvil
VehculoMotorizado
Otro estilo para mostrar una jerarqua de
herencia.
Generalizacin: Herencia simple (II)
Franco Guidi Polanco (PUCV-EII) 17
Generalizacin: Herencia mltiple
VehculoMotorizado
Camin Automvil
AparatoVolador
Avin
UML permite mostrar herencia mltiple (cuando una
clase hereda directamente de ms de una superclase).
En el ejemplo, un Avin es un AparatoVolador y un
VehculoMotorizado.
Franco Guidi Polanco (PUCV-EII) 18
Asociaciones
Una asociacin caracteriza un cierto tipo de
relacin que puede darse entre instancias de
determinadas clases.
Por ejemplo, si tenemos las clases Persona y
Perro, las siguientes relaciones podran darse entre
sus instancias:
J uan es propietario de Fido
Pedro es propietario de Rintintn
Pedro es propietario de Lassie
Franco Guidi Polanco (PUCV-EII) 19
Asociaciones (II)
La asociacin muestra que existe una relacin de
propiedad entre personas y perros, por la cual una
persona puede ser propietario de cero o ms perros y
un perro es propiedad de una nica persona.
Persona Perro
Propiedad
DePerro
propietario
1..1
0..*
propiedad
Franco Guidi Polanco (PUCV-EII) 20
Asociaciones (III)
Cada asociacin se muestra como una lnea entre
dos clases.
El nombre de la asociacin aparece en la lnea.
El rol de cada clase en la asociacin aparece al
lado de la clase, al final de la lnea.
La multiplicidad de la asociacin tambin aparece
al final de la lnea.
Franco Guidi Polanco (PUCV-EII) 21
Ejemplo de asociaciones
Persona Empresa
Ciudad
Empleo
U
b
i
c
a
c
i
o
n
R
e
s
i
d
e
n
c
i
a
0..*
0..* 0..*
0..1
1..1
1..*
empleado
residente
empleador
Franco Guidi Polanco (PUCV-EII) 22
Ejemplo de asociaciones (II)
Como las empresas emplean personas, existe una
asociacin entre las clases Empresa y Persona. El
nombre de esta asociacin es Empleo.
El rol de la persona es el de empleado en la
asociacin de empleo.
Una persona puede ser empleada en 0 1
empresas (0..1); una empresa puede emplear a 0
o ms personas (0..*).
Franco Guidi Polanco (PUCV-EII) 23
Ms sobre asociaciones
No es obligatorio poner nombres a las asociaciones. Sin
embargo es recomendable (se nombran con un
sustantivo singular).
No es necesario poner nombres de roles tampoco.
La multiplicidad en un diagrama puede ser debatible,
depende de lo que interese representar en el modelo.
Puede existir ms de una asociacin entre un par de
clases. Asimismo, una clase puede tener una asociacin
consigo misma.
Franco Guidi Polanco (PUCV-EII) 24
Asociaciones representadas como clases
Persona Perro
Propiedad
DePerro
1..1
0..* propietario
propiedad
Persona Perro
1..1
0..*
PropiedadDePerro
...
...
propietario
propiedad
Franco Guidi Polanco (PUCV-EII) 25
La asociacin PropiedadDePerro se ha promovido a
una nueva clase, conectada a la asociacin con una
lnea punteada.
Promover una asociacin a clase permite anexarle
atributos y operaciones propias.
En el ejemplo, la clase PropiedadDePerro, puede
registrar la fecha en que un perro fue adquirido por
una cierta persona (atributo fechaDeAdquisicion).
Asociaciones como clases (II)
Franco Guidi Polanco (PUCV-EII) 26
Navegabilidad de asociaciones
Las asociaciones con cabeza de flecha muestran que existe
un link directo desde un objeto de una clase al otro, lo
que permite un acceso rpido.
Persona Perro
Propiedad
DePerro
1..1
0..*
Persona Perro
Propiedad
DePerro
1..1
0..*
Persona Perro
Propiedad
DePerro
1..1
0..*
Franco Guidi Polanco (PUCV-EII) 27
Cola Fuselaje
Avion
Ala
Composicin
Permite expresar que un objeto se compone de
otros objetos. Por ejemplo, un Avin se compone
de un Fuselaje, una Cola y dos Alas (una a cada
lado).
cola fuselaje alaIzquierda alaDerecha 1 1 1 1
Franco Guidi Polanco (PUCV-EII) 28
Composicin (II)
La asociacin entre el objeto compuesto y sus
constituyentes se denota con un una lnea con diamante
relleno en el extremo del objeto compuesto.
El rol del constituyente aparece en el extremo del
constituyente de la asociacin (un objeto constituyente
puede jugar ms de un rol).
Debe mostrarse la multiplicidad en el extremo del
constituyente de la asociacin.
Franco Guidi Polanco (PUCV-EII) 29
Composicin (III)
El objeto compuesto no existe sin sus componentes.
Un objeto constituyente puede formar parte de solo un
objeto compuesto a la vez.
La composicin suele ser heterognea: los componentes
suelen ser de distintas clases (cola, fuselaje, etc.).
Franco Guidi Polanco (PUCV-EII) 30
Avin
Aeropuerto
Agregacin
Permite expresar que un objeto agrupa a otros
objetos. Por ejemplo, un Aeropuerto contiene al
conjunto de Aviones que en su loza se encuentran.
0..*
1
Franco Guidi Polanco (PUCV-EII) 31
Agregacin (II)
La asociacin entre el agregado y sus
constituyentes se denota con un una lnea con
diamante abierto (no relleno) en el extremo del
agregado.
El rol del constituyente aparece en el extremo del
constituyente de la asociacin.
Debe mostrarse la multiplicidad en ambos
extremos de la asociacin.
Franco Guidi Polanco (PUCV-EII) 32
Agregacin (III)
El objeto agregado puede existir potencialmente
sin sus objetos constituyentes.
Un objeto constituyente puede ser parte de ms
de uno agregado.
La agregacin tiende a ser homognea: los
objetos constituyentes son de la misma clase.
Franco Guidi Polanco (PUCV-EII) 33
Creacin
Se pude representar la idea que una clase es creada por
otra utilizando la etiqueta <<create>>:
GeneradorDeClientes
...
Cliente getInstance():Cliente
Cliente
...
...
<<create>>
Diagrama de Objetos de UML
Franco Guidi Polanco
Escuela de Ingeniera Industrial
Pontificia Universidad Catlica de Valparaso, Chile
fguidi@ucv.cl
Franco Guidi Polanco (PUCV-EII) 35
Diagrama de Objetos
Muestran fotografas de los objetos
pertenecientes a un sistema, en un momento
determinado.
Sirven, por ejemplo, para ejemplificar la
configuracin de objetos.
Franco Guidi Polanco (PUCV-EII) 36
Representacin
Los smbolos son anlogos a los de las clases, pero en el
compartimento del nombre se usa el estilo subrayado y no bold.
El nombre del objeto adopta la sintaxis nombreDeInstancia:
NombreDeClase.
Si no se tiene un buen nombre para un objeto se puede dejar annimo,
por ejemplo, :NombreDeClase es una notacin aceptable.
Pueden incluirse valores de los atributos que se estime convenientes
miObjeto:MiClase miObjeto:MiClase
Franco Guidi Polanco (PUCV-EII) 37
Ejemplo
informtica:Departamento
Mario:Empleado
rut=1.111.111-k
seguridad:Proyecto
cdigo =MN-1245
fecha inicio =12/03/2006
nuevoPortal:Proyecto
cdigo =YX-3321
fecha inicio =01/10/2004
:LiquidacinSueldo
pago=1.350.000

También podría gustarte