Modelado de datos con UML: Clases especiales estereotipadas


Aunque la mayoría de atributos podemos representarlos mediante tipos primitivos (Integer, Double, Date, String, etc.), a veces nos puede interesar acotar los valores permitidos de un determinado atributo o bien definir un tipo de datos personalizado. Para ello, el lenguaje UML nos ofrece los estereotipos.
Un estereotipo es un mecanismo UML para extender vocabulario de la notación y añadir nuevos elementos con semántica nueva. Los estereotipos van siempre entre comillas latinas (« ») o similares (<<  >>).
Para transformar clases en especializaciones puedes usar los siguientes estereotipos predefinidos (aunque puedes crear los tuyos propios).
>
Se usa para especificar tipos primitivos y de valor único (por ejemplo, una edad, un peso, etc.). Abajo del nombre se explicita en lenguaje natural el rango posible de valores.
La clase CodigoPostal se ha definido como «primitive». Sus valores atómicos y acotados dentro de un rango (números de cinco cifras).
La opción de declarar un código postal como Integer es más peligrosa puesto que el tipo Integer admite valores negativos y números superiores a cinco cifras.
>
Se utiliza para especificar tipos cuyo rango es un conjunto de valores finito (por ejemplo, los días de la semana, los turnos de una fábrica, etc.) Se suelen usar para definir maestros de tipologías, estados y valores enumerados en general.
La clase TipoVía se ha especificado como «enumeration». Se entiendo por TipoVía al tipo de calle: calle, plaza, avenida, etc.
Las enumeraciones se usan para definir conjuntos de valores discretos (finitos).
>

Se emplea para especificar tipos de datos mixtos que contienen múltiples campos (por ejemplo, una dirección, un punto tridimensional, etc.), pero nunca para especificar "entidades" del dominio del problema.
La clase Dirección se ha definido como «data type» puesto que engloba múltiples atributos. Fíjate que en este caso hemos definido el atributo via como tipo TipoVia y el atributo CP como CodigoPostal.
La opción de declarar una dirección postal como String es peligrosa en diseños que requieren mayor nivel de detalle. ¿Te imaginas una empresa de mensajería que recibiera direcciones poco detalladas?

Comentarios