You are on page 1of 38

Diagramas de clases de UML

Franco Guidi Polanco


Escuela de Ingeniería Industrial
Pontificia Universidad Católica de Valparaíso, Chile
fguidi@ucv.cl
¿Qué es UML?

v UML (“Unified Modeling Language”) es un lenguaje visual


para crear modelos de sistemas.

v UML fue desarrollado por el trabajo conjunto de los “Tres


Amigos”

v Está compuesto por distintos diagramas, para apoyar


distintas etapas de desarrollo:
§  Análisis
§  Diseño
§  Instalación (deployment)

Franco Guidi Polanco (PUCV-EII) 2


Los “Tres Amigos”

Ivar Jacobson
Jim Rumbaugh

Grady Booch

Franco Guidi Polanco (PUCV-EII) 3


¿Por qué usar UML?

v UML es principalmente una herramienta de


comunicación:
§  … con uno mismo
§  … con los miembros de un equipo de desarrollo
§  … con el cliente

v Ventajas de utilizarlo:
§  Permite capturar adecuadamente los requerimientos
§  Apoya correcta comprensión de un sistema por parte de
distintos miembros de un proyecto de desarrollo

Franco Guidi Polanco (PUCV-EII) 4


Diagramas de UML

v Casos de Uso
v Clases
v Objetos
v Statechart
v Actividades
v Secuencia
v Colaboración
v Componentes

Franco Guidi Polanco (PUCV-EII) 5


Diagrama de clases de UML

v Describe las clases y muestra las relaciones entre


ellas.

v Tipos de relaciones:
§  Is-a: una clase es del tipo de otra clase
§  Asociaciones entre clases:
•  Una clase contiene a otra clase (Has-a)
–  Agregación
–  Composición
•  Una clase usa otra clase (Uses-a)
•  Una clase crea a otra clase

Franco Guidi Polanco (PUCV-EII) 6


Representación de clases

MiClase
MiClase

v La figura de la izquierda muestra el símbolo para una


clase en su forma completa, y el de la derecha en su
forma abreviada.
v Por convención, los nombres de clases comienzan
con mayúsculas y deben estar escritos con letra de
tipo bold en sus símbolos.

Franco Guidi Polanco (PUCV-EII) 7


Representación de clases (II)

MiClase

v En la forma completa del símbolo:


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

Franco Guidi Polanco (PUCV-EII) 8


Atributos

v Los atributos representan información acerca de un


objeto.
v El término atributo no es exactamente sinónimo de
variable. Un atributo representa una propiedad
definida en términos abstractos, mientras que una
variable es el mecanismo de implementación del
atributo.

Persona

nombre: String
fechaDeNacimiento: date
Atributos
altura: float

Franco Guidi Polanco (PUCV-EII) 9


Operaciones

v Se ubican en el compartimento inferior de las


clases.

Persona

nombre: String
fechaDeNacimiento: date
altura:float

getNombre():String
setNombre(nombre:String)
Operaciones ...
getEdad():integer
getAltura():float
setAltura(altura:float)

Franco Guidi Polanco (PUCV-EII) 10


Operaciones sobrecargadas

v Las operaciones sobrecargadas aparecen varias


veces en el símbolo de la clase (en cada ocasión
con diferente cantidad o tipo de argumentos).

Una de las
Producto versiones de la
operación
rebajarPrecio
precio: float reduce el precio del
... producto en una
cantidad
registrarVenta(fecha:Date, numUnidades:int)
predeterminada y la
rebajarPrecio()
otra recibe un
rebajarPrecio(descuento: Porcentaje);
porcentaje de
descuento.

Franco Guidi Polanco (PUCV-EII) 11


Visibilidad de atributos y operaciones

v UML añade un prefijo a las operaciones y atributos


para indicar su visibilidad:

+ para atributos y operaciones públicas .


# para atributos y operaciones protegidas.
- para atributos y operaciones privadas.

v Si se omite el prefijo, se asume que el atributo u


operación es pública.

Franco Guidi Polanco (PUCV-EII) 12


Atributos y operaciones de clases

v 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 número de OrdenDeCompra


órdenes de compra
creadas. - NumeroDeOrdenes: int
...
Obtiene en número de
+ getNumeroDeOrdenes():int
órdenes de compra ...
creadas.

Franco Guidi Polanco (PUCV-EII) 13


Operaciones y clases abstractas

Polígono Polígono
{abstract}
area:float area:float
... ...
+ getArea():float {abstract} + getArea():float...
...

v El nombre de una clase abstracta debe estar en estilo


itálico o con la indicación {abstract}.
v Las operaciones abstractas también deben estar en
estilo itálico o con la indicación {abstract}.

Franco Guidi Polanco (PUCV-EII) 14


Generalización: Herencia simple

VehículoMotorizado

Automóvil Camión

v Una jerarquía de herencia se muestra utilizando flechas


que apuntan hacia arriba en la jerarquía (en el ejemplo:
Automóvil y Camión son subclases de
VehículoMotorizado).

Franco Guidi Polanco (PUCV-EII) 15


Generalización: Herencia simple (II)

VehículoMotorizado

Automóvil Camión

v Otro estilo para mostrar una jerarquía de


herencia.

Franco Guidi Polanco (PUCV-EII) 16


Generalización: Herencia múltiple

AparatoVolador VehículoMotorizado

Avión Automóvil Camión

v UML permite mostrar herencia múltiple (cuando una


clase hereda directamente de más de una superclase).
v En el ejemplo, un Avión es un AparatoVolador y un
VehículoMotorizado.

Franco Guidi Polanco (PUCV-EII) 17


Implementación de interfaces

v Notaciones alternativas:

<<interface>> <<interface>>
Terrestre Acuático
Terrestre Acuático
caminar() nadar()

Anfibio Anfibio

caminar() caminar()
nadar() nadar()

Franco Guidi Polanco (PUCV-EII) 18


Asociaciones

v Una asociación caracteriza un cierto tipo de


relación que puede darse entre instancias de
determinadas clases.
v Por ejemplo, si tenemos las clases Persona y
Perro, las siguientes relaciones podrían darse entre
sus instancias:
§  Juan es propietario de Fido
§  Pedro es propietario de Rintintín
§  Pedro es propietario de Lassie

Franco Guidi Polanco (PUCV-EII) 19


Asociaciones (II)

Propiedad
propietario DePerro 0..*
Persona Perro
1..1 propiedad

v La asociación muestra que existe una relación de


propiedad entre personas y perros, por la cual una
persona puede ser propietario de cero o más perros y
un perro es propiedad de una única persona.

Franco Guidi Polanco (PUCV-EII) 20


Asociaciones (III)

v Cada asociación se muestra como una línea entre


dos clases.
v El nombre de la asociación aparece en la línea.
v El rol de cada clase en la asociación aparece al
lado de la clase, al final de la línea.
v La multiplicidad de la asociación también aparece
al final de la línea.

Franco Guidi Polanco (PUCV-EII) 21


Ejemplo de asociaciones

empleado Empleo 0..1


Persona Empresa
0..* empleador

residente 0..* 0..*

1..1

Ciudad 1..*

Franco Guidi Polanco (PUCV-EII) 22


Ejemplo de asociaciones (II)

v Como las empresas emplean personas, existe una


asociación entre las clases Empresa y Persona. El
nombre de esta asociación es Empleo.
v El rol de la persona es el de empleado en la
asociación de empleo.
v Una persona puede ser empleada en 0 ó 1
empresas (0..1); una empresa puede emplear a 0
o más personas (0..*).

Franco Guidi Polanco (PUCV-EII) 23


Más sobre asociaciones

v No es obligatorio poner nombres a las asociaciones. Sin


embargo es recomendable (se nombran con un
sustantivo singular).

v No es necesario poner nombres de roles tampoco.

v La multiplicidad en un diagrama puede ser debatible,


depende de lo que interese representar en el modelo.

v Puede existir más de una asociación entre un par de


clases. Asimismo, una clase puede tener una asociación
consigo misma.

Franco Guidi Polanco (PUCV-EII) 24


Asociaciones representadas como clases

Propiedad
propietario 0..*
DePerro
Persona Perro
1..1 propiedad

PropiedadDePerro
...
...

propietario 0..*
Persona Perro
1..1 propiedad

Franco Guidi Polanco (PUCV-EII) 25


Asociaciones como clases (II)

v La asociación PropiedadDePerro se ha promovido a


una nueva clase, conectada a la asociación con una
línea punteada.

v Promover una asociación a clase permite anexarle


atributos y operaciones propias.

v En el ejemplo, la clase PropiedadDePerro, puede


registrar la fecha en que un perro fue adquirido por
una cierta persona (atributo fechaDeAdquisicion).

Franco Guidi Polanco (PUCV-EII) 26


Navegabilidad de asociaciones

Propiedad
DePerro 0..*
Persona Perro
1..1
Propiedad
DePerro 0..*
Persona Perro
1..1
Propiedad
DePerro 0..*
Persona Perro
1..1

v 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 rápido.

Franco Guidi Polanco (PUCV-EII) 27


Composición

v Permite expresar que un objeto se compone de


otros objetos. Por ejemplo, un Avión se compone
de un Fuselaje, una Cola y dos Alas (una a cada
lado).

Avion

fuselaje 1 cola 1 alaIzquierda 1 1 alaDerecha


Fuselaje Cola Ala

Franco Guidi Polanco (PUCV-EII) 28


Composición (II)

v La asociación entre el objeto compuesto y sus


constituyentes se denota con un una línea con diamante
relleno en el extremo del objeto compuesto.

v El rol del constituyente aparece en el extremo del


constituyente de la asociación (un objeto constituyente
puede jugar más de un rol).

v Debe mostrarse la multiplicidad en el extremo del


constituyente de la asociación.

Franco Guidi Polanco (PUCV-EII) 29


Composición (III)

v El objeto compuesto no existe sin sus componentes.

v Un objeto constituyente puede formar parte de solo un


objeto compuesto a la vez.

v La composición suele ser heterogénea: los componentes


suelen ser de distintas clases (cola, fuselaje, etc.).

Franco Guidi Polanco (PUCV-EII) 30


Agregación

v Permite expresar que un objeto agrupa a otros


objetos. Por ejemplo, un Aeropuerto contiene al
conjunto de Aviones que en su loza se encuentran.

Aeropuerto

0..*
Avión

Franco Guidi Polanco (PUCV-EII) 31


Agregación (II)

v La asociación entre el agregado y sus


constituyentes se denota con un una línea con
diamante abierto (no relleno) en el extremo del
agregado.

v El rol del constituyente aparece en el extremo del


constituyente de la asociación.

v Debe mostrarse la multiplicidad en ambos


extremos de la asociación.

Franco Guidi Polanco (PUCV-EII) 32


Agregación (III)

v El objeto agregado puede existir potencialmente


sin sus objetos constituyentes.

v Un objeto constituyente puede ser parte de más


de uno agregado.

v La agregación tiende a ser homogénea: los


objetos constituyentes son de la misma clase.

Franco Guidi Polanco (PUCV-EII) 33


Creación

v Se pude representar la idea que una clase es creada por


otra utilizando la etiqueta <<create>>:

GeneradorDeClientes Cliente
<<create>>
... ...
Cliente getInstance():Cliente ...

Franco Guidi Polanco (PUCV-EII) 34


Diagrama de Objetos de UML

Franco Guidi Polanco


Escuela de Ingeniería Industrial
Pontificia Universidad Católica de Valparaíso, Chile
fguidi@ucv.cl
Diagrama de Objetos

v Muestran “fotografías” de los objetos


pertenecientes a un sistema, en un momento
determinado.

v Sirven, por ejemplo, para ejemplificar la


configuración de objetos.

Franco Guidi Polanco (PUCV-EII) 36


Representación

miObjeto:MiClase miObjeto:MiClase

v  Los símbolos son análogos a los de las clases, pero en el


compartimento del nombre se usa el estilo subrayado y no bold.

v  El nombre del objeto adopta la sintaxis nombreDeInstancia:


NombreDeClase.

v  Si no se tiene un buen nombre para un objeto se puede dejar anónimo,


por ejemplo, :NombreDeClase es una notación aceptable.

v  Pueden incluirse valores de los atributos que se estime convenientes

Franco Guidi Polanco (PUCV-EII) 37


Ejemplo

informática:Departamento

Mario:Empleado seguridad:Proyecto

rut=“1.111.111-k” código = “MN-1245”


fecha inicio = “12/03/2006”

nuevoPortal:Proyecto

código = “YX-3321”
:LiquidaciónSueldo fecha inicio = “01/10/2004”

pago=1.350.000

Franco Guidi Polanco (PUCV-EII) 38

You might also like