lp ii - diagrama de clases
Post on 24-Jul-2015
146 Views
Preview:
TRANSCRIPT
1
DIAGRAMA DE CLASES
2
Que es un Diagrama de Clases?
Un Diagrama de Clases forma parte de la vista estática del sistema.
En el Diagrama de Clases será donde definiremos las características de cada una de las clases, interfaces, colaboraciones y relaciones de dependencia y generalización. Es decir, es donde daremos rienda suelta a nuestros conocimientos de análisis y diseño orientado a objetos, definiendo las clases e implementando las ya típicas relaciones de herencia y agregación.
El modelo de casos de uso aporta información para establecer las clases, objetos, atributos y operaciones
3
Vocabulario del sistema
CarroCompra
Producto
idnombreprecioubicacion
Responsabilidades
almacenar productosañadir productoseliminar productoscalcular precio compra
Cliente
nombredireccionemail Transaccion
commit()rollback()tuvoExito()
Factura
fechaimporte
nuevaFactura()
Comercio
nombredirecciondireccionWeb
avisarPedido()
Internauta
emailnumeroCuenta
4
Ejemplo
Avión militar Avión comercial
Avión de carga Avión de pasajeros
Motor Vendedor de boletos
Avión
1..4
1
1..4
1
Piloto
Reserva
n
1
n
1
Línea aérea
Vuelon1 n1
1..2
n
1..2
nn1 n1
1
n
1
n{ disjunta, completa }
{ disjunta, completa }
5
6
Clases y Objetos
Diagrama de Clases y Diagramas de Objetos pertenecen a dos vistas complementarias del modelo
Un Diagrama de Clases muestra la abstracción de una parte del dominio
Un Diagrama de Objetos representa una situación concreta del dominio
Las clases abstractas no son instanciadas
7
Que es una Clase?Una Clase, es un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica.Describe un conjunto de objetos con características y comportamiento idéntico.Una Clase está representada por un rectángulo que dispone de tres apartados, el primero para indicar el nombre, el segundo para los atributos y el tercero para los métodos
NombreClase
atributoUnoatributoDos
operaciónUno()operaciónDos()
8
A continuación describiremos cada uno de lis tres compartimientos
estándar:
•PRIMER COMPARTIMIENTO Contiene el nombre de la
Clase y opcionalmente su multiplicidad.
NombreClase
9
ATRIBUTOS
Un atributo es una propiedad o característica de una
clase y describe un rango de valores que la propiedad
podrá contener en los objetos (esto es, instancias)
De la clase. Una clase podrá contener varios o ningun
atributo. Por convencion, si el atributo consta de una
palabra se escribe en minusculas: por otro lado, si el
nombre contiene más de una palabra cada palabra
sera unida a la anterior y comenzará con una letra
mayúscula, a excepción de la primera palabra que
comenzará en minúscula.
10
Una clase y sus atributos
Lavadora
marcamodelonumeroSeriecapacidad
11
visibilidad
nombre: nombre del atributo
Tipo : tipo del atributo
valor_inicial: valor inicial o por defecto
[visibilidad] nombre [: tipo] [= valor_inicial ] [{propiedades}]
+ = pública # = protegida - = privada
propiedades: {frozen} {addOnly}
Atributos
Sintaxis:
12
Diagramas de Clase: Atributos
Nivel Conceptual: “Los clientes tienen un nombre”Nivel de Especificación: “El cliente puede almacenar y consultar su nombre”Nivel de Implementación: “Cliente tiene un campo de tipo string que almacena su nombre y un método que lo devuelve”
Cliente
nombre : String
13
Una nota puede conectar tanto imagen como texto
Lavadora
marcamodelo
numeroSeriecapacidad
agregarRopa()sacarRopa()agrgarDetergente()activar()
Vease la norma gubernamental
14
Multiplicidad de los atributos
NombreClase
+ atributoUno+ atributoDos- atributoTres [0..3] {atributoTres es privado y tiene
Una multiplicidad de 0, 1, 2 ó 3}
15
El Tipo de atributo
NombreClase
+ atributoUno : string+ atributoDos : int- atributoTres [0..3]: date
{atributoUno es string, el atributoDos es int y el atributoTres es date}
Lavadora
marca : String = "KENMORE"modelo : StringnumeroSerie : Stringcapacidad : Integer
16
OPERACIONES Una operación es algo que la clase
puede realizar, o pueden hacer a una clase. La lista de operaciones se inicia debajo de una línea que separa a las operaciones de los atributos
17
visibilidad
nombre: nombre de la operación
lista_parámetros: lista de parámetros separados por comas
tipo retorno: tipo de valor devuelto por la operación
propiedades: {isQuery}, {sequential}, {concurrent}
+ = pública # = protegida - = privada
[visibilidad] nombre [(lista_parametros)] [: tipo_retorno] [{propiedades}]
Operaciones
18
Diagramas de clase: Operaciones
Cuentacodigosaldotitular$ UltimoCodigo
reintegro()ingreso()ultimasOperaciones()saldo()
19
Diagramas de Clase: Operaciones
Nivel Conceptual Responsabilidades de la clase Tarjetas CRC: Descripción de alto nivel del
propósito de la clase
Nivel Especificación Protocolo de la clase (operaciones públicas)
Nivel Implementación Conjunto de métodos de la clase
20
OPERACIONES
La lista de operaciones de una clase aparece debajo de una línea que las separa de los atributos de una clase
Lavadora
marca : String = "KENMORE"modelo : StringnumeroSerie : Stringcapacidad : Integer
agregarRopa()sacarRopa()agregarDetergente()activar()
21
Lavadora
marca
...
agregarRopa()
...
UNA CLASE Y SUS OPERACIONES
22
Clase1
operacion1()operacion2()operación3()
Clase2 Clase3
Clase4
Clase5
Operación1(pública) puede ser invocada por todas las Clases, operación2 (privada) solo puede ser invocada por Clase1, mientras que operación3 (protegida) podrá ser invocada por Clase1, Clase2 y Clase3, pero no por Clase4 ni Clase5
23
Una operación polimórfica, es justamente la misma operación implementada de manera distinta por dos o más clases.
RESPONSABILIDADES DE LAS CLASES
Una responsabilidad es un contrato u obligación que la clase debe cumplir, pues viene a ser el fin para la cual fue creada . Los atributos y comportamiento son las características de la clase que le permiten cumplir con esas responsabilidades.
Las responsabilidades se colocan en un cuarto comportamiento del rectángulo que representa a la clase. Las responsabilidades se indican con frases cortas en texo libre.
NOMBRE CLASE
RESPONSABILIDADES
- ......................................
- ......................................
24
Ejemplos (Clase y Visibilidad)
Alumno
DNI : char[10]número_exp : intnombre : char[50]
alta()poner_nota(asignatura : char *, año : int, nota : float)matricular(cursos : asignatura, año : int)listar_expediente()
25
POLIMORFíSMO Y OPERACIONES POLIMORFíSMO Y OPERACIONES POLIMÓRFICASPOLIMÓRFICAS
En muchas ocasiones, debido a su naturaleza, es necesario que las clases respondan de manera distinta ante el mismo mensaje . Por ejemplo, el mensaje abrir puede enviarse a la clase regalo, a la clase cuenta bancaria, a la clase ventana, a la clase puerta, o alguna otra; pero, cada clase ejecutará su propia versión de abrir , en respuesta al mensaje respectivo.
REGALO
abrir ( )
. . .
CUENTA BANCARIA
abrir ( )
. . .
VENTANA SOFTWARE
abrir ( )
. . .
VENTANA COMÚN
abrir ( )
. . .
26
Principio de Sustitución
El Principio de Sustitución de Liskow (1987) afirma que:
“Debe ser posible utilizar cualquier objeto instancia de una subclase en el lugar de cualquier objeto instancia de su superclase sin que la semántica del programa escrito en los términos de la superclase se vea afectado.”
27
… Principio de Sustitución Dado que los programadores pueden
introducir código en las subclases redefiniendo las operaciones, es posible introducir involuntaria-mente incoherencias que violen el principio de sustitución
El polimorfismo que veremos a continuación no debería implementarse sin este principio
28
Polimorfismo
El término polimorfismo se refiere a que una característica de una clase puede tomar varias formas
El polimorfismo representa en nuestro caso la posibilidad de desencadenar operaciones distintas en respuesta a un mismo mensaje
Cada subclase hereda las operaciones pero tiene la posibilidad de modificar localmente el comportamiento de estas operaciones
29
… Polimorfismo
Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta
dormir?
?
Animal
dormir()
León Oso Tigre
30
… Polimorfismo
Dormir(){en un árbol}
Dormir(){sobrela espalda}
Dormir(){sobre el vientre}
Dormir(){
}
Animal
dormir()
León
dormir()
Oso
dormir()
Tigre
dormir()
31
… Polimorfismo
La búsqueda automática del código que en cada momento se va a ejecutar es fruto del enlace dinámico
El cumplimiento del Principio de Sustitución permite obtener un comportamiento y diseño coherente
32
CLASE UTILIDAD ( utility class ) : Es una agrupación de variables globales y procedimientos públicos declarados en forma de una clase. Es importante usarla durante la programación.
Se representa con un estereotipo de utilidad.
<<utility>>
33
CLASE HOJA (leaf Class) : Es una clase como cualquiera otra, pero se encuentra en el último nivel de descendencia en la jerarquía de clases.
CLASE RAÍZ ( Root Class ) : Es una clase como cualquier otra pero que se encuentra en el nivel más superior dentro de la jerarquía de clases. {root} ClaseRaiz
{leaf} ClaseHoja
34
Clase Abstracta.
Aquellas que no tienen instancias y sirven para definir otras subclases las cuales si podrán ser instanciadas
ClaseAbstracta
atributoUnoatributoDos
operaciónUno()operaciónDos()
Clase1 Clase2
{Se denota con el nombre dela clase y con letra itálica}
35
Es una clase cuyas instancias son clases.Es una clase cuyas instancias son clases.
Se representan como clases con el estereotipo <<metaclass>>.Se representan como clases con el estereotipo <<metaclass>>.
METACLASE
Metaclase<<metaclass>>
36
Relaciones
Existen tres relaciones diferentes entre clases, Dependencias, Generalización y Asociación. En las relaciones se habla de una clase destino y de una clase origen. La origen es desde la que se realiza la acción de relacionar. Es decir desde la que parte la flecha, la destino es la que recibe la flecha. Las relaciones se pueden modificar con estereotipos o con restricciones.
37
RELACIONES ENTRE CLASES
Tipos de Tipos de
relaciones entre relaciones entre clasesclases
•DependenciaDependencia
•GeneralizaciónGeneralización
•AsociaciónAsociación
Según el nro. Según el nro. de clases de clases participantesparticipantes
Según como se Según como se unan las clasesunan las clases
BinariaBinaria
N - ariaN - aria
ANDAND
XORXOR
AgregaciónAgregación
ComposiciónComposición
38
Relac ion de Dependenc ia
ClaseDependiente
ClaseIndependiente
Se representa con una
Línea discontinua. Va de
la clase dependiente
(origen) hacia la clase
Independiente. En la
relación de dependencia se
ha reconocido hasta 8
estereotipos (Bind, Derive,
Friend, InstanceOf,
Instantiate, Powertype,
Refine, Use)
39
ClaseDependienteClaseIndependiente
operacion1()operacion2()
<<friend>>
Este diagrama nos muestra dos clases amigas.Las operaciones 1 y 2 pueden ser usadas por ClaseDependiente. ClaseDependiente obtiene una visibilidad de ClaseIndependiente
Este concepto de clases amigas es muy popular en C++.Especifica que la Clase Amiga puede utilizar los métodos de otra clase.
40
Lista
añadir(t:T,pos:Entero)obtener(i:entero):T
T
ListaEstudiante
ListaJuego<<Juego>>
Estudiante<<bind>>
Una clase parametrizada y su utilización
Lista deparámetros
Utiliza una lista de estudiantesY Lista de Juego para generarUna clase Lista parametrizada donde halla T.
ClaseIndependiente
ClaseDependiente
Parámetros
<<Bind>>
Ejemplo
Relación de Dependencia
41
Relación de Generalización
Es una relación entre dos clases en donde una de ellas, llamada subclase o
clase hija (subclass o child ), hereda los atributos y el comportamiento
de otra, llamada superclase o clase padre (superclass o parent).
Se representa mediante una línea continua
con punta de flecha hueca dirigida desde la
clase child hacia la clase parent.
Relación de Generalización
42
Generalización
Permite gestionar la complejidad mediante un ordenamiento taxonómico de clases
Se obtiene usando los mecanismos de abstracción de Generalización y/o Especialización
La Generalización consiste en factorizar las propiedades comunes de un conjunto de clases en una clase más general
43
Nombres usados: clase padre - clase hija. Otros nombres: superclase - subclase, clase base - clase derivada
Las subclases heredan propiedades de sus clases padre, es decir, atributos y operaciones (y asociaciones) de la clase padre están disponibles en sus clases hijas
... Generalización
44
La Generalización y Especialización son equivalentes en cuanto al resultado: la jerarquía y herencia establecidas
Generalización y Especialización no son operaciones reflexivas ni simétricas pero sí transitivas
... Generalización
45
… Ejemplos (Generalización)
Trabajador
Directivo Administrativo Obrero
46
El diagrama siguiente muestra a Clase2 que es hijo de Clase1 y por
tanto hereda atributo1 y atributo3, así como operación1 y
operación3, pues tienen visibilidad pública y protegida. Lo mismo
ocurre con Clase3. El atributo2 y la operación2 no se heredan pues
están definidos como privados.Clase1
atributo1atributo2atributo3
operación1()operación2()operación3()
Clase2 Clase3
47
Cuenta
noCuentaidPropietariosaldoNetofechaApertura
depósito()retiro()anulación()calculaSaldo()
CuentaAhorroCuentaCorriente
48
... Generalización
Vehículo
Vehículo Terrestre Vehículo Aéreo
Coche Camión Avión Helicóptero
49
Clasificación Múltiple (herencia múltiple)
Se presenta cuando una subclase tiene más de una superclase
La herencia múltiple debe manejarse con precaución. Algunos problemas son el conflicto de nombre y el conflicto de precedencia
Se recomienda un uso restringido y disciplinado de la herencia. Java y Ada 95 simplemente no ofrecen herencia múltiple
50
… Herencia Múltiple Uso disciplinado de la herencia múltiple: clasificaciones
disjuntas con clases padre en hojas de jerarquías alternativas
Animal
Bípedo Cuadrúpedo
Con Pelos
Con Plumas
Con Escamas
Herbívoro
Carnívoro
cubertura
cobertura
cobertura
comida
nro patas nro patas
comida
Conejo
51
Relación de Asociación :Es una relación estructural que describe un conjunto de enlaces o conexiones entre dos o más clases, permitiendo asociar objetos de las clases que colaboran entre si para llevar a cabo un comportamiento deseado.
Clase1 Clase2
Clase1 Clase2
Extremos de la asociación
Nombre de la asociación
Clase1 Clase2*1..* *1..*
1 a muchos : 1..*0 a muchos : 0..*un número fijo : M
Multiplicidad
52
… Ejemplos (Asociación)
ProfesorDepartamento
10..1
director
1
dirige
0..1
Rol 1 Rol 2
Multiplicidad
53
ClaseAsociación
Clase1 Clase2
Relación de asociación Entre dos clases.
Debemos indicar sus atributos yoperaciones propias.
Para crear una Clase Asociación, se debe tener una relación de Asociación entre dos clases. Luego definimos la clase asociación y la unimos mediante una línea discontinua con la asociación.
54
… Ejemplos (Clase Asociación)
Empresa Empleado
1..** 1..**
trabajadoresempleador
Cargo
nombresueldo 0..1
1..*
superior
subordinado 1..*
0..1
Una asociación reflexiva, significa que un objeto de una clase se puede conectar con otros objetos de la misma clase
OcupanteDeAutomóvil1
0..4
Conduce
+conductor
1
+pasajero 0..4
55
Jugador Equipo11..51..5 1
Contrato DirectorGeneral+Negociado por
Otro ejemplo de clase asociativa
56
Asociación La asociación expresa una conexión
bidireccional entre objetos Una asociación es una abstracción de
la relación existente en los enlaces entre los objetos
Universidad Estudiante
Univ. del Rimac:Universidad Antonio:Estudiante
Una asociación
Un enlace
57
Ejemplo:
… Asociación
Persona Compañíatrabaja-para
nombres. s.
nombredirección
jefe
Administraempleado
* *emplea-a
0.. 10.. 1
0.. 1
*
marido
casado-con
mujer
58
Especificación de multiplicidad (mínima...máxima)
1 Uno y sólo uno0..1 Cero o unoM..N Desde M hasta N (enteros naturales)* Cero o muchos0..* Cero o muchos1..* Uno o muchos (al menos uno)
La multiplicidad mínima >= 1 establece una restricción de existencia
… Asociación
59
Asociación Cualificada
Reduce la multiplicidad del rol opuesto al considerar el valor
del cualificador
Se representa mediante un pequeño rectángulo adjunto a la clase que hará la búsqueda. La idea es reducir, con eficiencia, la multiplicidad de uno a muchos a una multiplicidad de uno a uno.
Recepcionista Reservación*nroConfirmación : Integer
1 *1nroConfirmación : Integer
Localiza
60
La agregación representa una relación parte_de entre objetos
En UML se proporciona una escasa caracterización de la agregación
Puede ser caracterizada con precisión determinando las relaciones de comportamiento y estructura que existen entre el objeto agregado y cada uno de sus objetos componentes
Agregación
61
Ejemplos
CursoDeDoctorado Módulo6..n1..*1..* 6..n
Diamante vacío denota Todo-Parte.El diamante se coloca en el extremo del Todo.
No molestarse en dar nombre a la asociación. Se asume que la asociación “es una parte de”
Se dice que un Módulo es parte de CursoDeDoctoradoPodría ser también que un único módulo podría ser parte de varios CursosDeDoctorado diferentes.
Ej. La ingeniería del Software con Objetos y Componentes II, es parte tanto del curso de doctorado de Ingeniería del Software como del de Informática.
62
Ejemplos
Sopa Ensalada PlatoFuerte Postre
Comida
1
1
1
1
1
1
1
11
1 1
1
1
1
1
1
or
Restricciones en las agregaciones
La comida consta de Sopa o (or) de Ensalada, el plato fuerte y el postre
Una restricción a una agregación para determinar que sólo un componente es parte del todo (comida)
63
… Ejemplos
CuentaPersona
1
*
orAsociación excluyente
Empresa
*
*
Usuario Estaciónestá-autorizado-en
prioridadprivilegios
camb_privil
Autorización
* *
Clase de asociación
Polígono Puntocontiene 3.. *1
{ordenado}Agregación
64
Es un tipo especial de asociación, en donde el tiempo de vida del objeto incluido está condicionado por el tiempo de vida del que lo incluye.
El objeto incluido solo existe mientras exista el objeto base.
Tiene como características: Dependencia existencial Pertenencia fuerte Objetos contenidos no son compartidos.
Composición
65
Ejemplos
Clase1 Clase3Clase2
ClaseBase
66
Ejemplos
Cabecera
Factura
1
1
Detalle
1..*
1
1..*
1
1
1
La clase Factura está formada por las clases Cabecera y Detalle. Si la Factura deja de existir, la cabecera y detalle no tendrían sentido, por lo tanto es una Asociación de Composición.
67
Ejemplos
68
Fin de la Presentación
top related