Caracterizaciones relacionadas con la multiplicidad
Objeto Agregado
Objeto Componente
Máxima
1 ? disjunto
> 1 ? no disjunto
Multiplicidad Máxima
1 ? univaluado
> 1 ? multivaluado
Multiplicidad Mínima
0 ? flexible
> 0 ? estricta Multiplicidad
Multiplicidad Mínima
0 ? nulos permitidos
> 0 ? nulos no permitidos
Agregación: Caracterización
(mínc, máxc)
(mína, máxa)
En UML sólo se distingue entre agregación y composición (aggregate composition), siendo esta última disjunta y estricta
Además se una agregación se podría caracterizar según:
¿Puede el objeto parte comunicarse directamente con objetos externos al objeto agregado?
No => inclusiva
Si => no inclusiva
¿Puede cambiar La composición del objeto agregado?
Si => dinámica
No => estática
… Agregación: Caracterización
Ejemplos
… Ejemplos
… Ejemplos
Cuenta
Persona
1
*
or
Asociación excluyente
Empresa
*
*
Usuario
Estación
está-autorizado-en
prioridad
privilegios
camb_privil
Autorización
*
*
Clase de asociación
Polígono
Punto
contiene
3.. *
1
{ordenado}
Agregación
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
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
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
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
… Generalización
La especialización es una técnica muy eficaz para la extensión y reutilización
Restricciones predefinidas en UML:
disjunta – no disjunta
total (completa) – parcial (incompleta)
… Generalización
La noción de clase está próxima a la de conjunto
Dada una clase, podemos ver el conjunto relativo a las instancias que posee o bien relativo a las propiedades de la clase
Generalización y especialización expresan relaciones de inclusión entre conjuntos
… Generalización
Particionamiento del espacio de objetos => Clasificación Estática
Particionamiento del espacio de estados de los objetos => Clasificación Dinámica
En ambos casos se recomienda considerar generalizaciones/especializaciones disjuntas
… Generalización
Un ejemplo de Clasificación Estática:
… Generalización
{ estática }
Un ejemplo de Clasificación Dinámica:
… Generalización
{ dinámica }
Extensión: Posibles instancias de una clase
Intensión: Propiedades definidas en una clase
int(A) ? int(B)
ext(B) ? ext(A)
… Generalización
Clasificación Estática
ext(C0) = ? ext(Ci) ? completa
ext(Ci) ? ext(Cj) = ? ? disjunta
… Generalización
C0
C1
Cn
{ static }
Clasificación Dinámica
ext(C0) = ? ext(Ci) ? completa
extt(Ci) ? extt(Cj) = ? ? disjunta en t
extt1(Ci) ? extt2(Cj) ? ? ? posiblemente
no disjunta en
diferentes
instantes
… Generalización
C0
C1
Cn
{ dinámica }
Ejemplo: varias especializaciones a partir de la misma clase padre, usando discriminadores:
… Generalización
Vehículo Aéreo
Avión
Helicóptero
Comercial
Militar
estructura
uso
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
Página anterior | Volver al principio del trabajo | Página siguiente |