LP II - Diagrama de Clases
-
Upload
susana-castelo -
Category
Documents
-
view
147 -
download
2
Transcript of LP II - Diagrama de Clases
![Page 1: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/1.jpg)
1
DIAGRAMA DE CLASES
![Page 2: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/2.jpg)
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
![Page 3: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/3.jpg)
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
![Page 4: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/4.jpg)
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 }
![Page 5: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/5.jpg)
5
![Page 6: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/6.jpg)
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
![Page 7: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/7.jpg)
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()
![Page 8: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/8.jpg)
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
![Page 9: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/9.jpg)
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.
![Page 10: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/10.jpg)
10
Una clase y sus atributos
Lavadora
marcamodelonumeroSeriecapacidad
![Page 11: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/11.jpg)
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:
![Page 12: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/12.jpg)
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
![Page 13: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/13.jpg)
13
Una nota puede conectar tanto imagen como texto
Lavadora
marcamodelo
numeroSeriecapacidad
agregarRopa()sacarRopa()agrgarDetergente()activar()
Vease la norma gubernamental
![Page 14: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/14.jpg)
14
Multiplicidad de los atributos
NombreClase
+ atributoUno+ atributoDos- atributoTres [0..3] {atributoTres es privado y tiene
Una multiplicidad de 0, 1, 2 ó 3}
![Page 15: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/15.jpg)
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
![Page 16: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/16.jpg)
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
![Page 17: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/17.jpg)
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
![Page 18: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/18.jpg)
18
Diagramas de clase: Operaciones
Cuentacodigosaldotitular$ UltimoCodigo
reintegro()ingreso()ultimasOperaciones()saldo()
![Page 19: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/19.jpg)
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
![Page 20: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/20.jpg)
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()
![Page 21: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/21.jpg)
21
Lavadora
marca
...
agregarRopa()
...
UNA CLASE Y SUS OPERACIONES
![Page 22: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/22.jpg)
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
![Page 23: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/23.jpg)
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
- ......................................
- ......................................
![Page 24: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/24.jpg)
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()
![Page 25: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/25.jpg)
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 ( )
. . .
![Page 26: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/26.jpg)
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.”
![Page 27: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/27.jpg)
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
![Page 28: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/28.jpg)
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
![Page 29: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/29.jpg)
29
… Polimorfismo
Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta
dormir?
?
Animal
dormir()
León Oso Tigre
![Page 30: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/30.jpg)
30
… Polimorfismo
Dormir(){en un árbol}
Dormir(){sobrela espalda}
Dormir(){sobre el vientre}
Dormir(){
}
Animal
dormir()
León
dormir()
Oso
dormir()
Tigre
dormir()
![Page 31: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/31.jpg)
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
![Page 32: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/32.jpg)
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>>
![Page 33: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/33.jpg)
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
![Page 34: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/34.jpg)
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}
![Page 35: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/35.jpg)
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>>
![Page 36: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/36.jpg)
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.
![Page 37: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/37.jpg)
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
![Page 38: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/38.jpg)
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)
![Page 39: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/39.jpg)
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.
![Page 40: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/40.jpg)
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
![Page 41: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/41.jpg)
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
![Page 42: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/42.jpg)
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
![Page 43: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/43.jpg)
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
![Page 44: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/44.jpg)
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
![Page 45: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/45.jpg)
45
… Ejemplos (Generalización)
Trabajador
Directivo Administrativo Obrero
![Page 46: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/46.jpg)
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
![Page 47: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/47.jpg)
47
Cuenta
noCuentaidPropietariosaldoNetofechaApertura
depósito()retiro()anulación()calculaSaldo()
CuentaAhorroCuentaCorriente
![Page 48: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/48.jpg)
48
... Generalización
Vehículo
Vehículo Terrestre Vehículo Aéreo
Coche Camión Avión Helicóptero
![Page 49: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/49.jpg)
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
![Page 50: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/50.jpg)
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
![Page 51: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/51.jpg)
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
![Page 52: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/52.jpg)
52
… Ejemplos (Asociación)
ProfesorDepartamento
10..1
director
1
dirige
0..1
Rol 1 Rol 2
Multiplicidad
![Page 53: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/53.jpg)
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.
![Page 54: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/54.jpg)
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
![Page 55: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/55.jpg)
55
Jugador Equipo11..51..5 1
Contrato DirectorGeneral+Negociado por
Otro ejemplo de clase asociativa
![Page 56: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/56.jpg)
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
![Page 57: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/57.jpg)
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
![Page 58: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/58.jpg)
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
![Page 59: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/59.jpg)
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
![Page 60: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/60.jpg)
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
![Page 61: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/61.jpg)
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.
![Page 62: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/62.jpg)
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)
![Page 63: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/63.jpg)
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
![Page 64: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/64.jpg)
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
![Page 65: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/65.jpg)
65
Ejemplos
Clase1 Clase3Clase2
ClaseBase
![Page 66: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/66.jpg)
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.
![Page 67: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/67.jpg)
67
Ejemplos
![Page 68: LP II - Diagrama de Clases](https://reader035.fdocumento.com/reader035/viewer/2022081421/557202174979599169a2f162/html5/thumbnails/68.jpg)
68
Fin de la Presentación