Diagrama Clases
Diagrama Clases
Diagrama Clases
Clases
LOGO
Concepto de
modelado estructural
Se describen los tipos de objetos de un
sistema y las relaciones estticas que
existen entre ellos.
A la hora de modelar un sistema es
necesario identificar las cosas ms
importantes eligiendo un nivel de
abstraccin capaz de identificar todas las
partes relevantes del sistema y sus
interacciones.
LOGO
Concepto de
modelado estructural
Se expresa mediante los diagramas de
clase. Normalmente contienen:
Clases
Interfaces
Relaciones de dependencia, realizacin,
generalizacin y asociacin (agregacin,
composicin)
Elementos
Estructurales
Gestor Eventos
Hola
Mundo.class
clase activa
suspender()
vaciarCola()
componente
colaboracin
Servidor
Gestin Pedidos
nodo
LOGO
Diagrama de Clases
y de Objetos
Objeto: Concepto, abstraccin o cosa con lmites
bien definidos y con significado para el problema
que se est manejando.
Todos los objetos presentan una identidad, que los hace
distinguibles, un estado y un comportamiento.
El trmino identidad significa que los objetos se
distinguen por su existencia inherente y no por
propiedades descriptivas que puedan tener.
Atributos
Las clases tienen atributos que representan alguna propiedad de la
clase que comparten todos los objetos de esa clase.
Un atributo es una propiedad nombrada de una clase, que describe un
rango de valores que puede tomar esa propiedad en las
instancias.
Por ejemplo, nombre, edad o peso son atributos de objetos Persona.
Cada nombre de atributo es nico dentro de una clase, pero cada atributo tiene
un valor para cada instancia de la clase.
LOGO
Atributos
Un atributo debera ser un valor de datos
puro, no un objeto.
Los valores de datos puros, a diferencia de
los objetos, no tienen identidad.
LOGO
Atributos
[visibilidad] nombre [: tipo] [= valor_inicial ] [{propiedades}]
+ = pblica el atributo ser visible tanto dentro como
fuera de la clase-accesible desde todos los lados
visibilidad
# = protegida el atributo no ser accesible desde fuera de la
clase, pero si ser accesado por mtodos de la clase adems de
las subclases que se deriven
- = privada Indica que el atributo solo ser accesible desde
dentro de la clase
nombre:
tipo:
LOGO
Atributos
Cliente
nombre : String
LOGO
Operaciones
[visibilidad] nombre [(lista_parametros)] [: tipo_retorno] [{propiedades}]
+ = pblica
# = protegida
- = privada
visibilidad
nombre:
nombre de la operacin
lista_parmetros:
tipo retorno:
propiedades:
10
LOGO
Operaciones
Cuenta
ultimoCodigo
codigo
cliente
saldo
ultimasOperaciones
getSaldo()
getUltimasOperaciones()
nuevoCodigo()
11
Atributos
Operaciones
LOGO
Operaciones
Una operacin es una funcin o transformacin que puede
ser aplicada por o sobre objetos de una clase.
Todos los objetos de una clase comparten las mismas
operaciones.
Una operacin es la implementacin de un servicio que puede
requerirse de cualquier objeto de la clase.
LOGO
Operaciones
Las operaciones en una clase definen lo que la clase
puede hacer y pueden considerarse como la interfase de
la clase.
Operacin pregunta (query): es aqulla operacin que
nicamente calcula un valor funcional sin modificar
ningn objeto.
Las preguntas sin argumentos, salvo el objeto al que se aplican,
pueden considerarse como atributos derivados.
LOGO
Resumen de
notacin
Una clase se representa con un recuadro
dividido en tres regiones, que contienen, de
arriba a abajo:
LOGO
Resumen de
notacin
Los atributos y las operaciones
pueden tener diferentes niveles de
visibilidad.
Pblico: visible por todos los clientes de
la clase.
Protegido: visible por las subclases de la
clase.
Privado: visible slo para la clase.
Paquete: visible para cualquier clase del
mismo paquete.
Atributos y operaciones estticos (static)
o de clase: son propios de la clase, no de
la instancia. Son visibles por todos los
objetos de la clase.
LOGO
Diagramas de clases
y de objetos
Un diagrama de clases describe la estructura esttica de
un sistema en trminos de clases y de relaciones entre
estas clases, mostrando los atributos y operaciones que
caracterizan cada clase de objetos.
Un diagrama de objetos representa la estructura esttica del
sistema mostrando los objetos (instancias) en el sistema y las
relaciones entre los objetos.
Un diagrama de clases dado corresponde a un conjunto infinito de
diagramas de objetos.
LOGO
Otras propiedades
Clases y mtodos diferidos
Multiplicidad
Variables y mtodos de clase
Cuenta
ultimoCodigo
codigo
cliente
saldo
ultimasOperaciones
<<abstract>>
Figura
rotar()
trasladar()
visualizar()
getSaldo()
getUltimasOperaciones()
nuevoCodigo()
17
LOGO
Relaciones
Dependencia
Un cambio en la especificacin de un elemento afecta a
otro
PlanDelCurso
Window
position
parent
children
size
Curso
aadir(c : Curso)
eliminar(c : Curso)
Clock
open()
close()
move()
resize()
Nodo
Lista
<<friend>>
18
LOGO
Relaciones
Generalizacin
Es-un-tipo-de
Cuenta
CuentaAhorro
Window
CuentaCorriente
19
TextWindow
BoxDialog
LOGO
Generalizacin
Nivel Conceptual
Todas las instancias de CuentaCorriente son
instancias de Cuenta
Nivel Especificacin
La interfaz de CuentaCorriente incluye la interfaz de
Cuenta
Principio Sustitucin
Nivel Implementacin
Herencia
20
LOGO
Asociacin
Asociacin
Relacin estructural que especifica que los objetos
de un tipo estn conectados con los de otro.(como
se relaciona una clase con otra, multiplicidad)
Persona
+empleado
+patron
1..*
Empresa
impartido
Curso
*
Profesor
1..*
21
LOGO
Asociaciones
Agregacin
Caso especial de asociacin
Relacin estructural parte-de(muchas
departamentos es parte de una empresa)
Empresa
1..1
*
Departamento
22
LOGO
Composicin
Es un caso particular de agregacin:
exclusiva y dependiente
LOGO
Composicin
Ventana
agregado /todo
1..1
composicin
*
Marco
parte
Si se destruye el
marco ya no se
tendra una ventana
(forma el todo)
24
LOGO
Navegacin
impartido
Curso
*
Profesor
1..*
25
LOGO
Visibilidad
Pblica: +propietario
Protegida: #propietario
Privada: -propietario
CuentaCorriente
#numero
#saldo
-inters
+consultarSaldo()
+ingresar(cantidad: real)()
GrupoUsuarios
Usuario
*
+propietario
1..1
26
-clave
Clave
LOGO
Composicin
POLIGONO
Poligono
1
{ordered}
Punto
Relleno:Diseo
3..n
Diseo
color
textura
{ordered} 3..*
Punto
27
LOGO
Clases
Asociacin
Una asociacin que tambin es una clase
Una clase asociacin aade una restriccin:
Slo puede existir una instancia de la
asociacin entre cualquiera par de objetos
participantes
No podramos modelar que una persona tiene
diferentes contratos para una misma compaa
a lo largo del tiempo.
28
LOGO
Ejemplo de clase
asociacin
Empleado
id
0..n
0..n
NivelSalario
min
max
inicio
fin
name
id
HistoriaSalario
inicio
fin
salario
29
LOGO
Ejemplo de clase
asociacin
Persona
+empleado
+patron
1..*
Compaia
*
Trabajo
descripcion
fechaContrato
salario
30
LOGO
Restricciones para
Asociaciones
Empresa
Cuenta
Departamento
*
{or}
Persona
{subconjunto}
+miembro
1..*
Persona
31
+Director
1..1
LOGO
Realizacin
Relacin entre clasificadores, un clasificador
especifica
un contrato que otro clasificador garantiza que
cumplir.
<<Interface>>
IPila
Pila
push()
pop()
top()
Pila
IPila
32
LOGO
Relaciones entre
clases
Asociacin: es una conexin entre clases, que implica la
existencia de una relacin estructural entre objetos de
esas clases.
Generalizacin: es una relacin entre una clase ms general y
una ms especfica o especializada.
Dependencia: es una relacin de uso entre clases.
LOGO
Multiplicidad
La multiplicidad especifica cuntas instancias de una clase pueden
relacionarse con una instancia simple de una clase asociada. Por tanto,
limita el nmero de objetos relacionados.
En general, la multiplicidad es un subconjunto (posiblemente infinito) de los
nmeros enteros no negativos.
LOGO
Restricciones sobre
las asociaciones
Un conjunto ordenado de objetos en el extremo muchos de una
asociacin se indica escribiendo '{ordered (ordenado)}' cerca del
punto que representa la multiplicidad, como si fuera un papel.
La restriccin '{subconjunto (subset)}' indica que una asociacin es
un subconjunto de otra.
La restriccin '{or}' indica que los objetos de una clase pueden
participar en una sola asociacin entre un grupo de asociaciones.
LOGO
Herencia mltiple
La herencia mltiple o solapada (overlapping generalization)
permite que una clase tenga ms de una superclase y herede
caractersticas de todos sus padres.
Una clase puede heredar caractersticas de ms de una superclase
y en este caso se denomina clase unin.
Una caracterstica de la misma clase ancestro encontrada a travs de ms de un
camino se hereda slo una vez; es la misma caracterstica.
LOGO
Diagramas de Clases
Como elaborar un diagrama de clases del
diseo
Aplique la siguiente estrategia para elaborar diagramas de clases:
1. Identifique todas las clases que participan en la solucin del software. Para
ello analice los diagramas de interaccin.
2. Dibjelas en un diagrama de clases
3. Duplique los atributos provenientes del modelo conceptual
4. Agregue los nombres de los mtodos analizando los diagramas de interaccin
5. Incorpore la informacin sobre los tipos de atributos y los mtodos
6. Agregue las asociaciones necesarias para dar soporte a la visibilidad
requerida de los atributos
7. Agregue flechas de navegabilidad a las asociaciones para indicar la direccin
de la visibilidad de atributos
8. Agregue las lneas de relaciones de dependencia para indicar la visibilidad no
relacionada con los atributos
LOGO
CatalogodeProductos
descripcion
cantidad
CUP
cantidad
Tienda
direccion
nombre
EspecificaciodeProducto
Venta
fecha
estaterminada
hora
VentasLineadeProducto
Cantidad
Pago
monto
LOGO
Venta
fecha
estaTerminada
hora
hacerLineadeProduct
o()
:CAJA
3: hacerLineadeProducto(especif, cant)
:Venta
LOGO
CAJA
TerminarVenta()
IntroducirProducto()
EfectuarPago()
CatalogodeProductos
Especificacion()
EspecificaciodeProducto
Descripcion
Cantidad
CUP
Venta
Tienda
Direccion
nombre
agregarVenta()
Pago
fecha
estaTerminada
hora
Setermina()
HacerLineadeProducto()
EfectuarPago()
Total()
VentaLineadeProducto
Cantidad
Subtotal()
cantidad
LOGO
Incorporacin de Informacin
sobre los Tipos:
Venta
fecha : fecha
estaTerminada : Booleano
hora : hora
seTermina()
hacerLineadeProducto(especif : EspecificaciondeProd, cant : Entero)
efectuarPago(efectivoOfrecido : Cantidad)
total() : Cantidad
Tipo de resultado a
devolver al mtodo
LOGO
Venta
CAJA
1
Captura
IntroducirProducto()
TerminarVenta()
EfectuarPago()
Fecha
EstaTermin: Booleano
hora
IntroducirProducto()
Se termina()
EfectuarPago()
Total()
La ausencia de la flecha de
navegabilidad indica que no
existe conexin de Venta a CAJA
LOGO
Tienda
usa
direccion
nombre
agregarVenta()
1
EspecificaciodeProducto
CatalogodeProductos
Descripcion
Cantidad
CUP
1
1 contiene
especificacion()
1..*
1
Mira-en
alberga
describe
Venta
1
CAJA
terminarVenta()
introducirProducto()
efectuarPago()
fecha
estaTerminada
hora
captura
Registro terminados
VentaLineadeProducto
seTermina()
hacerLineadeProducto()
efectuarPago()
total()
*
1 contiene
1..*
cantidad
Subtotal()
Pagada_por
Pago
cantidad
LOGO
Ejemplo
LOGO
EJERCICIO
Realizar un diagrama de clases para una
agencia de venta de autos.
Autos disponen de atributos (placa, modelo,
precio_unit) .
Agencia dispone de atributos(nombre, ciudad,
telfono)
Venta atributos (fecha, precio_total, descuento)
Mostrar operaciones como las ventas totales por
agencia.
Mostrar operaciones ventas totales por auto.
LOGO
EJERCICIO
Realizar un diagrama de clases para la
suscripcin de un socio a un club.
Los socios tienen datos personales
( contacto, direccin y e-mail). Reportes
como: Reporte mensual de nuevos socios
inscriptos
Listado de actividades clasificadas por
suscripcin (bsica, intermedia y aquellas
que solo puede accederse con la
suscripcin destacada).
LOGO
LOGO