Diagramas de clases UML: Guía completa
Explicación de los diagramas de clases UML
Cuando se construye una casa o un edificio, los arquitectos e ingenieros redactan un conjunto de planos para visualizar todos los aspectos de la construcción antes de que comience cualquier trabajo. Los diagramas de clases del Lenguaje Unificado de Modelado (UML) cumplen la misma función que un plano, pero para el desarrollo de software.
Igual que no construirías una casa sin un plano, no es buena idea construir un sistema sin un diagrama UML durante el inicio y la actualización. Los diagramas de clases UML forman parte de una serie de diagramas UML que visualizan distintos aspectos del desarrollo, todos ellos utilizando el mismo lenguaje para facilitar su interpretación.
Considera esta guía como tu hoja de trucos del diagrama de clases UML. Aprende las ventajas de utilizarlos para el diseño conceptual, cómo funcionan y cómo crear un diagrama de clases UML.
¿Qué es un diagrama de clases en UML?
Los diagramas de clase son uno de los varios tipos de diagramas de estructura UML. Los diagramas de estructura muestran la estructura estática de un sistema, en lugar de mostrar cómo cambia un objeto con el tiempo.
Los diagramas de clases visualizan las clases de un sistema y las relaciones entre ellas.
En el diseño orientado a objetos, las clases crean y operan sobre objetos. Los objetos son instancias de clases. Así que las clases son elementos críticos de alto nivel de un sistema. Se derivan durante el diseño y se utilizan para la comunicación sobre el diseño, o los cambios en el diseño.
En un diagrama de clases, los nombres de las clases son los mismos que los de los objetos, porque la finalidad de una clase es definir los atributos y operaciones de cada instancia de objeto del sistema. Una clase es el plano de un objeto, y un diagrama de clases es el plano estático del sistema.
En el desarrollo de software, los diagramas de clases UML no existen por sí solos. Dependen de los diagramas de casos de uso y están estrechamente ligados a los diagramas de objetos y de comunicación. En conjunto, todos los diagramas UML modelan, conceptualizan y documentan el funcionamiento de un sistema antes, durante y después de la implementación.
¿Qué es una clase en UML?
Una clase es un elemento de modelado que define las características del objeto que representa, incluidos sus atributos y comportamientos.
Utilicemos la clase "Coche" como ejemplo. Coche" tiene un conjunto de atributos estáticos, como marca, modelo, año y color. La clase "Coche" también tiene métodos (cosas que pueden hacer los coches) como acelerar, desacelerar, parar y arrancar. Puesto que un objeto es una instancia de la clase: una instancia de ese objeto puede ser: Subaru, Forester, 2023, verde oscuro. En este ejemplo, los atributos de este coche son marca, modelo, año y color.
¿Cuál es la finalidad de los diagramas de clases UML?
Un diagrama de clases UML tiene dos finalidades principales como modelo estático de un sistema orientado a objetos:
Para visualizar las clases de un sistema y sus propiedades.
Mostrar y analizar las relaciones entre las clases.
Aparte de éstos, los diagramas de clases UML también son la base de los diagramas de componentes y de despliegue, que muestran los aspectos de hardware y software de un sistema.
Ventajas de los diagramas de clases UML
Los diagramas de clases UML son herramientas prácticas de modelado para construir una arquitectura de software. Junto con otros diagramas UML, los desarrolladores y las partes interesadas visualizan distintos puntos de vista de un sistema. Estos diagramas nos ayudan a comprender cómo funciona el sistema, cómo se comporta y cómo se relacionan sus partes.
Crear diagramas de clases durante el diseño facilita el proceso de desarrollo al mostrar claramente las clases, sus atributos y sus métodos. También muestran cómo se relacionan las clases entre sí. Ver una construcción conceptual de un sistema antes de escribir el código ayuda a los desarrolladores a comunicarse entre sí y con otras partes interesadas.
Los diagramas de clases también soportan cambios en el sistema mostrando un esquema de toda una aplicación. Aplicar cambios o adiciones a un diagrama de clases UML proporciona una vista previa de las nuevas clases y de cómo afecta el cambio a las clases existentes.
Componentes clave de los diagramas de clases UML
Los diagramas de clases UML contienen clases y sus interacciones. Cada clase se muestra en un rectángulo con, de arriba abajo, el nombre de la clase, sus atributos y sus métodos. Sólo es necesario el nombre de la clase. El nivel de detalle necesario determina si se muestran los atributos y métodos.
Las interacciones en un diagrama de clases UML muestran las relaciones entre las clases mediante líneas y puntas de flecha. Las puntas de flecha tienen significados específicos para diferenciar los tipos de relaciones. Estas relaciones incluyen la herencia y las relaciones bidireccionales y unidireccionales. Las clases pueden agruparse en paquetes de clases estrechamente relacionadas.
Anotaciones del diagrama de clases UML
La notación básica en un diagrama de clases UML incluye las etiquetas de los miembros de la clase, su visibilidad (quién puede acceder a ellos) y los paquetes eventuales. Al crear un modelo de clases UML, utiliza la fuente aprobada por la app web, Open Sans. Por lo general, los diagramas de clase UML siguen convenciones de estilo como el camel case, en el que la segunda palabra y las siguientes van en mayúsculas, y no hay espacios entre las palabras.
Clases
El nombre de una clase refleja el nombre de un objeto o entidad. El nombre de la clase va en el centro de la sección superior, en negrita y en mayúsculas. En el modelo, la sección del nombre de la clase es la única obligatoria en una clase. Los otros dos son opcionales, según el objetivo y el punto de vista del diagrama.
Atributos
La sección central del modelo incluye los atributos que describen las características estáticas de una clase que se aplicarán a las instancias de los objetos definidos por esa clase. Imagina que estamos construyendo un diagrama de clases para visualizar el funcionamiento de un cajero automático. Los atributos de la clase Tarjeta de débito son el número de tarjeta y el propietario; cada instancia tiene su propio número y propietario.
Métodos (operaciones y comportamientos)
La tercera sección del modelo de clase es lo que la clase "hace". ¿Cuáles son las acciones que podrá realizar la instancia del objeto? En la clase Tarjeta de débito, la operación sería algo así como dar acceso.
Visibilidad
Los signos más y menos representan si los atributos y operaciones de una clase son públicos (visibles desde cualquier parte del sistema) o privados (visibles sólo dentro de la clase). El hashtag (almohadilla) indica visibilidad protegida.
Paquete
Un grupo de clases o un grupo de otros paquetes se visualizan como cajas con una etiqueta. El nombre del envase va en la etiqueta y se escribe en mayúsculas. Al utilizar paquetes, las clases no necesitan tener las tres secciones a la vista en todo momento.
Anotaciones de relación del diagrama de clases UML
Los modelos de diagramas de clases UML se conectan visualmente mediante líneas, notaciones textuales y números de multiplicidad. La siguiente lista cubre las notaciones básicas de relación necesarias para crear un diagrama de clases UML para tu sistema.
Todas las notaciones de relación, excepto la de Realización, implican un nombre escrito junto a la línea y al lado de la clase a la que pertenece. Mantén todos los tamaños de texto equilibrados y las líneas ordenadas para conseguir un diagrama fácil de leer.
Asociación
Una asociación conecta dos clases en cualquier conexión lógica, es la notación de relación más utilizada y tiene el aspecto de una línea recta. Las asociaciones son intrínsecamente bilaterales, lo que significa que ambas clases asociadas saben que la otra clase existe. Cuando la asociación es unilateral, tiene una punta de flecha lisa de aspecto diferente a la flecha triangular de herencia y realización.
N-ario determina las asociaciones que conectan más de dos modelos de clase. La asociación N-aria siguiente a la binaria es la asociación ternaria. Estas notaciones son líneas conectadas con un rombo vacío en la conjunción.
Agregación y composición
La agregación y la composición son subconjuntos de la relación de asociación.
La relación de agregación conecta las clases mediante una línea recta y una forma de diamante hueco junto a la clase padre. En la agregación, las clases hijas existen independientemente de la padre. Si se elimina la clase padre, la clase hija sigue existiendo.
La composición es lo contrario. Cuando dos clases se conectan con una notación de composición mediante una línea recta y una forma de rombo relleno, no existen independientemente. Cuando se elimina la clase padre, también se elimina la clase hija.
Asociación reflexiva
La asociación reflexiva es la única asociación unilateral disponible en los diagramas de clase. Están formados por una línea recta que hace un bucle a lo largo del modelo de clase. Su finalidad es visualizar una relación entre una instancia de clase y otra instancia de la misma clase.
Herencia y generalización
La notación de herencia o generalización visualiza una relación entre clases que heredan propiedades. Una relación de herencia se visualiza con una línea recta y una forma de triángulo hueco apuntando a la clase independiente.
Dependencia
Las notaciones de dependencia se visualizan con una línea escalonada y una simple punta de flecha que identifica la dirección de la relación. Al igual que la notación de herencia, la flecha apunta de la clase dependiente a su superclase. Los cambios que se produzcan en la superclase provocarán cambios en la subclase.
Realización
Una relación de realización conecta una clase que realiza o implementa el comportamiento definido por otra. Los modelos de esta relación se denominan elementos proveedor y cliente o superclase y subclase. El proveedor es la fuente, y el cliente es el elemento de especificación. La notación de realización se visualiza con una línea escalonada y una forma de triángulo hueco.
Multiplicidad
La notación de multiplicidad es un conjunto de números situados en la intersección de una línea de relación y un modelo de clase. La multiplicidad de instancias define cuántas instancias de un objeto participan en una relación. Los dígitos muestran el número de instancias de una clase que están vinculadas a una instancia de otra clase. Se denotan así:
0..1 = Cero o uno
1 = Sólo uno
0.. = Cero o más
1..* = Uno o más
3 = Sólo tres
0..5 = De cero a cinco
5..15 = De cinco a quince
Crear un diagrama de clases UML
Ahora es el momento de crear tu propio diagrama de clases UML. Por supuesto, siempre puedes hacer un diagrama desde cero. Si eres nuevo en la creación de diagramas UML, lo mejor que puedes hacer es utilizar una plantilla prediseñada con todas las formas del modelo y las opciones de notación. Miro tiene una plantilla de diagrama de clases UML que sirve de base para cualquier diagrama de clases UML que necesites hacer.
Utilizando Miro, u otra herramienta de diagramas, sigue este tutorial paso a paso sobre cómo hacer un diagrama de clases personalizado para conceptualizar y modelar visualmente un sistema.
Definir las clases
Para definir estos objetos/clases, escribe un escenario de caso de uso para tu sistema y extrae los sustantivos del enunciado. Un Cliente introduce su Tarjeta de Débito en el Cajero Automático y retira Dinero en Efectivo. Los sustantivos en negrita son los objetos y, por tanto, también las clases.
Crea un modelo de tres partes para cada clase y añade los nombres a la sección superior. Puedes acceder a las formas de clase preconstruidas en Miro a través de la pestaña de diagramación de la izquierda. Construye los modelos, pero no conectes nada todavía hasta que tengas todas las clases.
Describe los atributos de la clase
En el segundo compartimento de cada modelo de clase, añade los atributos. Los atributos del modelo de clase Cajero automático son la ubicación, el ID de la máquina y el banco que la gestiona. Hasta ahora, la clase ATM con la lista de atributos tiene este aspecto:
ATM
+localización : dirección
+machineId : entero
+managedBy : cadena
Añade los métodos de la clase (operaciones)
En el tercer compartimento, añade las operaciones de cada clase en una lista, como los atributos. Para la clase cajero automático, una operación podría ser que leyera la tarjeta, identificara una transacción y pidiera un pin. Ahora el modelo de clase tiene este aspecto:
ATM
+localización : dirección
+machineId : entero
+managedBy : cadena
+readsCard
+identificaTransacción
#PidePin
Visualiza las relaciones y la multiplicidad
Coloca los modelos de clase en tu tablero de Miro para empezar a asociarlos y visualizar las relaciones. Elige el tipo de línea que quieras en el panel de objetos y selecciona el estilo de línea y el final de línea según la relación.
Añade los roles y los numerales de multiplicidad a lo largo de las líneas haciendo clic en el botón +T del menú Objetos. Ajusta su posición y tamaño en consecuencia.
Mantenlo vivo
Los diagramas de clases UML no son mapas grabados en piedra: son mecanismos vivos que te ayudan a visualizar un sistema en cualquier punto, desde el inicio hasta la implementación y más allá. Cuando creas un diagrama de clases UML con Miro, siempre puedes volver a él y revisar cualquier cambio antes de cambiar cualquier código en el sistema.