Elementos básicos en un diagrama de estructura estática
Un diagrama de estructura estática muestra el conjunto de clases
y objetos importantes que hacen parte de un sistema, junto con las relaciones
existentes entre estas clases y objetos. Muestra de una manera estática
la estructura de información del sistema y la visibilidad que tiene
cada una de las clases, dada por sus relaciones con las demás en
el modelo.
Supongamos el modelamiento de una máquina
de cafe. Un diagrama de estructura estática inicial podría
ser:
Clase
Representada por un rectángulo con tres divisiones internas, son
los elementos fundamentales del diagrama.Una clase describe un conjunto
de objetos con caracteristicas y comportamiento idéntico. En el
ejemplo se encuentran las clases Ingrediente, Producto, Maquina, DepositoMonedas
y DepositoMonedasIguales.
Los tres compartimientos estándares alojan el nombre de la clase,
sus atributos y sus mensajes, respectivamente.
Atributo
Identifican las características propias de cada clase. Generalmente
son de tipos simples, ya que los atributos de tipos compuestos se representan
mediante asociaciones de composición con otras clases. La sintáxis
de un atributo es
visibility name : type-expression = initial-value { property-string
}
Donde visibility es uno de los siguientes:
+ public visibility
# protected visibility
- private visibility
type-expression es el tipo del atributo con nombre name.
Puede especificarse como se ve un valor inicial y un conjunto de propiedades
del atributo.
En el caso del ejemplo, la clase Ingrediente tiene dos atributos: uno
denominado cantidad, de tipo float y con valor inicial 0; y el atributo
nombre de tipo string sin valor inicial. En este caso, la herramienta utilizada
ha cambiado la representación de la visibilidad, utilizando el símbolo
para
indicar visibilidad privada, el símbolo
para
visibilidad protegida y el símbolo
para
indicar visibilidad pública.
Operacion
El conjunto de operaciones describen el comportamiento de los objetos de
una clase. La síntaxis de una operación en UML es
visibility name ( parameter-list ) : return-type-expression
{ property-string }
Cada uno de los parámetros en parameter-list se denota
igual que un atributo. Los demás elementos son los mismos encontrados
en la notación de un atributo.
Asociación (rol, multiplicidad, cualificador)
Una asociación en general es una línea que une dos o más
símbolos. Pueden tener varios tipos de adornos, que definen su semántica
y características. Los tipos de asociaciones entre clases presentes
en un diagrama estático son:
-
Asociación binaria
-
Asociación n-aria
-
Composición
-
Generalización
-
Refinamiento
Cada asociación puede presentar algunos elementos adicionales que
dan detalle a la relación, como son:
Rol: Identificado como un nombres al los finales de la linea, describe
la semántica de la relación en el sentido indicado. Por ejemplo,
la asociación de composición entre Maquina e Ingrediente
recibe el nombre de existencias, como rol en ese sentido
Multiplicidad: Describe la cardinalidad de la relación. En el
ejemplo anterior se utilizan 1, 1 ..*, 5, *,
como indicadores de multiplicidad.
Asociación binaria
Se identifica como una línea sólida que une dos clases. Representa
una relación de algún tipo entre las dos clases, no muy fuerte
( es decir, no se exige dependencia existencial ni encapsulamiento).
En posible ejemplo es la relación entre una compañía
y sus empleados
en este caso la relación recibe el nombre genérico Trabaja
Para, la compañía tiene uno o más instancias de
la clase Persona denominadas empleado y cada empleado conoce su
empleador (en este caso único).
Composición
Es una asociación fuerte, que implica tres cosas
-
Dependiencia existencial. El elemento dependiente desaparece al destruirse
el que lo contiene y, si es de cardinalidad 1, es creado al mismo tiempo.
-
Hay una pertenencia fuerte. Se puede decir que el objeto contenido es parte
constitutiva y vital del que lo contiene
-
Los objetos contenidos no son compartidos, esto es, no hacen parte del
estado de otro objeto.
Se denota dibujando un rombo relleno del lado de la clase que contiene
a la otra en la relación. En el ejemplo inicial de esta hoja se
presentan varios ejemplos de relaciones de composición entre Maquina
y Producto, Maquina y DepositoMonedas y Maquina y DepositoMonedasIguales.
Existe tambien una relación de composición menos fuerte
(no se exige dependencia existencial, por ejemplo) que es denotada por
una un rombo sin rellenar en uno de los extremos. Un ejemplo puede encontrarse
entre Producto e Ingrediente.
Generalización
La relación de generalización denota una relación
de herencia entre clases. Se representa dibujando un triángulo sin
rellenar en el lado de la superclase. La subclase hereda todos los atributos
y mensajes descritos en la superclase. En el ejemplo se encuentra una generalización
entre DepositoMonedas (superclase) y DepositoMonedasIguales (subclase).
Clase paramétrica
Una clase paramétrica representa el concepto de clase genérica
en los conceptos básicos OO o de template en C++. Se dibuja como
una clase acompañada de un rectángulo en la esquina superior
derecha, con los parámetros del caso.
Por ejemplo, la clase Lista que utiliza un parámetro formal Tipo
se vería de la siguiente manera
Paquete
Un paquete es una forma de agrupar clases (u otros elementos en otro tipo
de diagramas) en modelos grandes. Pueden tener asociaciones de dependencia
o de generalización entre ellos. Un ejemplo puede ser el siguiente
En este caso existen tres paquetes (que se muestran vacios en este caso,
con su contenido encapsulado), con dos de ellos dependiendo del Modelo
del Mundo
Dependencia
Denota una relación semántica entre dos elementos (clases
o paquetes, por el momento) del modelo. Indica que cambiar el elemento
independiente puede requerir cambios en los dependientes. Se muestra como
una linea punteada direccional, indicando el sentido de la dependencia.
Puede tener por medio de estereotipos una explicación del tipo de
dependencia presentada.
En el ejemplo anterior pueden verse dos relaciones de dependencia hacia
el paquete Modelo del Mundo.
Nota
Es un comentario dentro de un diagrama. Puede estar relacionado con uno
o más elementos en el diagrama mediante lineas punteadas. Pueden
representar aclaraciones al diagrama o restricciones sobre los elementos
relacionados (cuando el texto se encuentra entre '[
'y ']
').
Se representa mediante un rectángulo con su borde superior derecho
doblado.
En el ejemplo inicial de esta hoja se encuentran dos notas: Una relacionada
con la clase máquina y otra con el depósito de monedas iguales.
Vea más conceptos aquí.
Pablo
Figueroa
Versión 1.1