Diagrama de Clases

El diagrama de clases se utiliza para modelar las clases que intervienen en la solución, con sus propiedades, sus métodos y las relaciones entre ellas. Es un diagrama de tipo estático, en el sentido que modela entidades que se mantienen constantes durante la ejecución. Recordemos que las clases son fijas, y lo que varía son las instancias, o sea, los objetos.

El diagrama de clases resulta muy útil tanto para especificar los requerimientos como para documentar los detalles del diseño. Además, mediante técnicas de ingeniería directa, permite generar el código de las clases, no sólo la definición, si- no también las propiedades y el esqueleto de los métodos. Veremos a continuación las principales características del diagrama de clases, para empezar, cómo y cuándo utilizarlo.

CLASES
Las clases se representan mediante un rectángulo dividido horizontalmente en tres partes. En la primera parte, se coloca el nombre de la clase; en la segunda, las propiedades; y en la tercera, los métodos. Recordemos que UML es un lenguaje y, por lo tanto, debemos respetar sus nomenclaturas y estándares, o el modelo que definamos no será un diagrama UML válido.

En el diagrama de clases, cada una se representa mediante un rectángulo con el nombre de la clase en la parte superior.

De las tres partes, sólo es obligatorio el nombre de la clase en la primera; las otra dos pueden quedar vacías. Además, no es necesario especificar todas las propiedades y operaciones de la clase, sólo las que resultan útiles para el modelo.

Para darle más precisión al modelo, se puede especificar el tipo de dato de cada propiedad, separándolo del nombre de la propiedad con dos puntos (Nombre: String). Si el tipo de dato de una determinada propiedad es otra clase, estamos ante un caso de composición, que tiene una forma específica en UML (que veremos luego), sin embargo, en casos en que no haya lugar a dudas es posible indicarlo como si fuese un tipo de dato básico.

Si bien es un caso de composición, a veces, podemos usar clases como tipo de las propiedades.

Visibilidad
En UML, se puede especificar la visibilidad de cada elemento de una clase (propiedad o método). Si bien la visibilidad es algo más relacionado a la implementación en un lenguaje particular, es importante indicarla en el modelo de diseño, ya que permite dejar definidas ciertas normas de encapsulamiento que el analista o el diseñador detectan durante las primeras fases del proyecto. Si bien UML prevé notaciones para los tipos de alcance básicos, el lenguaje está abierto y permite utilizar modificadores propios del lenguaje que se utilice luego para la implementación.

La visibilidad se expresa mediante un signo a la izquierda del nombre de la propiedad o del método, y los utilizados son el signo más (+) para los elementos públicos, el signo menos (-) para los privados y el numeral (#) para los protegidos. Recordemos que los elementos protegidos sólo son visibles por la clase y por sus descendientes, mientras que los privados sólo son visibles dentro de la clase.

INGENIERÍA DIRECTA E INVERSA Cuando se habla de modelos y, sobre todo de UML, es muy común mencionar a la Ingeniería Directa y a la Ingeniería Inversa. Mediante la ingeniería directa, se puede generar el código fuente que implemente el modelo, mientras que, a través de la ingeniería inversa, se puede obtener un modelo completo o parcial a partir de código fuente ya escrito.