
Los diagramas de clases UML nos ayudan a entender cómo funciona el software. Muestran las partes de un sistema de software, qué hace cada parte y cómo estas partes se conectan entre sí. Este tutorial facilita el aprendizaje sobre diagramas de clases UML. Es excelente tanto para principiantes como para aquellos que ya saben algunas cosas sobre software. Veremos qué son estos diagramas, los símbolos que usan y cómo leerlos. Esta guía es muy útil para cualquiera que quiera mejorar en la creación de software.
En estos diagramas, vemos cómo diferentes partes de un sistema trabajan juntas. Este tutorial explica las diferentes formas en que las partes pueden conectarse, como asociación, agregación y herencia. Usamos ejemplos fáciles para mostrar estas ideas. Esto ayuda a cualquiera que esté planificando un nuevo proyecto de software o tratando de entender uno existente. Esta guía te enseñará cómo hacer diagramas de clases UML de una manera simple.
En este artículo
Parte 1. Qué es un Diagrama de Clases UML
Un diagrama de clases es uno de los tipos de diagramas UML más ampliamente utilizados en ingeniería de software. Los diagramas de clases son importantes ya que proporcionan una representación visual de cómo funciona un programa de computadora y detallan los componentes de un programa de computadora junto con sus propiedades y métodos. A continuación se presentan los componentes principales de un Diagrama de Clases UML:
Clase:
Representa un plano o plantilla para crear objetos.
Típicamente se representa como un rectángulo con tres compartimentos: el superior para el nombre de la clase, el medio para los atributos y el inferior para los métodos u operaciones.
Atributos:
Representan las propiedades o características de una clase. Los atributos generalmente se enumeran en el compartimento medio del rectángulo de la clase. Cada atributo tiene un nombre y un tipo.
Operaciones/Métodos:
Representan las funciones o acciones que pueden ser realizadas por los objetos de una clase. Se enumeran en el compartimento inferior del rectángulo de la clase. Cada operación tiene un nombre, parámetros y un tipo de retorno.
Relaciones:
La relación entre clases en UML se refiere a la asociación o conexión establecida entre diferentes clases dentro de un sistema. Estas relaciones definen cómo las clases interactúan entre sí, intercambian información y contribuyen a la funcionalidad general del sistema.
Parte 2. Notaciones y Símbolos del Diagrama de Clases
Los diagramas UML utilizan formas específicas para especificar objetos. A continuación veremos cómo se representan las clases con la ayuda de una clase Persona y su relación con Dirección.
▪ Representando una Clase
Una clase es un componente básico en un diagrama de clases UML. Una clase se representa mediante un rectángulo. El nombre de la clase aparece en la parte superior del rectángulo con un separador debajo. A continuación se muestra una representación de un diagrama de clase Persona

▪ Atributos de Clase
Ahora que tenemos una forma de clase con el nombre de la clase en la parte superior, es hora de agregar los atributos de la clase. Los atributos son propiedades de la clase. Recuerda que la clase es un plano. Así que cualquier instancia de la clase tendrá su propio conjunto de atributos.
Los atributos se muestran en la segunda partición debajo del título de la clase. Los nombres de los atributos se muestran con el tipo de atributo siguiendo dos puntos. Estos atributos corresponden a variables miembro (miembros de datos) en el código.
Así que una instancia de Persona puede tener estos atributos por ejemplo: Nombre, Fecha de Nacimiento, Género, Dirección y demás. A continuación se muestra cómo se puede representar una instancia de Persona usando la forma UML:

▪ Métodos
Se supone que cada clase funciona de alguna manera y cumple una funcionalidad específica. Estos métodos se especifican en la forma de clase debajo de la partición de atributos. Entonces, supongamos que nuestra Persona puede realizar una rutina diaria, entonces el método realizarRutinaDiaria podría agregarse en la forma de clase como:

Observa que si el método devuelve algún valor, entonces se muestra por tipo seguido de dos puntos.
▪ Visibilidad
En los lenguajes de programación orientada a objetos, es posible alterar la visibilidad tanto de los atributos como de los métodos para que puedan estar expuestos al mundo exterior, dentro de la herencia o simplemente visibles dentro de la clase.
- Público: Se representa por (+)
- Privado: Se representa por (-)
- Protegido: Se representa por (#)
Ahora que sabemos cómo definir clases en el diagrama de clases UML, ahora veamos qué tipo de información realmente se necesita mostrar en el diagrama UML.
Parte 3. Relaciones Entre Clases
En los diagramas UML las relaciones entre las clases se expresan mediante flechas.
Herencia
Esta es probablemente la relación más utilizada en UML. Se puede definir como la:
Conexión entre la totalidad y sus componentes de tal manera que los componentes derivan las propiedades de sus padres.

En el contexto de UML (Lenguaje de Modelado Unificado), la herencia, a menudo denominada generalización, delinea la conexión entre una superclase y su subclase. Una superclase se denomina alternativamente clase base, mientras que la subclase se denomina clase derivada. La subclase es capaz de incorporar información adicional junto con los elementos heredados de la superclase.
Composición
La composición se puede explicar brevemente como:
La conexión entre la totalidad y sus componentes es tal que son inseparables.
A continuación se muestra un ejemplo de cómo se ve la Composición en el diagrama UML:

Se lee como: La clase computadora está compuesta tanto de dispositivos de entrada como de salida.
Agregación
La agregación indica una relación más débil que la composición, donde una clase está asociada con otra clase como una parte, pero la parte puede existir independientemente.
La conexión entre la totalidad y sus componentes permite la separación entre el todo y sus partes.

Ahora Estudiante depende de la información de Semestre y Dirección. Sin embargo, Estudiante aún puede existir sin tener estas piezas de información. Cualquier instancia de Estudiante puede tener Semestre o Dirección o ninguno y aún así puede existir.
Asociación
La asociación es otra relación utilizada en los diagramas UML. Representa una relación genérica entre clases, indicando que están de alguna manera conectadas o interactúan entre sí.
En el contexto UML, una propiedad de clase es responsable de mantener una referencia a una instancia o múltiples instancias de otra clase.

Dependencias
- Una conexión de dependencia significa una relación de "uso", significando que las alteraciones en una entidad pueden impactar a otras que dependen de ella. El término "dependencia" se emplea cuando es esencial denotar que una entidad utiliza otra.

Interfaz/Implementación
La interfaz es cómo cambiamos o modificamos el comportamiento de una clase en otra. Aquí no necesitamos heredar cada atributo de la clase base. Más bien implementamos una interfaz que da a cualquier clase la adopción necesaria.
Significa la implementación de una interfaz o la realización de una clase abstracta por otra clase.

Perspectivas de un Diagrama de Clases
No siempre mostramos toda la información en el diagrama de clases UML. De necesidad en necesidad y de caso en caso los detalles de una clase pueden mostrarse en el diagrama.
En términos generales, puede haber tres formas de cómo se pueden crear los diagramas de clases UML:
- Conceptual: Esto solo se ocupa de los aspectos principales del negocio.
- Especificación: Esto es más detallado que un diagrama de clases UML conceptual y aquí mostramos los detalles de una clase en el diagrama.
- Implementación: Esta es más bien una forma detallada de crear un diagrama de clases UML.
Observa que la clase Persona depende de otra clase llamada Dirección. Aquí es donde entran las relaciones en los diagramas UML. Esto es lo que vamos a ver a continuación.
Parte 4. Ejemplos de Diagramas UML
Diagrama de Clases UML del Sistema de Pedidos
1.Este diagrama de clases cumple el propósito de realizar un pedido en cualquier tienda y luego procesarlo.
2.Hay esencialmente ocho tipos de clases que son:
① Cliente: Un cliente consiste en nombre y dirección. Un cliente realiza un pedido en el sistema y lo procesa. Un cliente puede realizar ninguno, uno o múltiples pedidos
② Pedido: Un pedido define la acción del cliente en la tienda. El pedido comprende fecha, estado del pedido y puede calcular totales e impuestos. Un pedido debe contener uno o más detalles de pedido.
③ Detalle de Pedido: Cada pedido consiste en múltiples líneas llamadas Detalle de Pedido. Aquí definimos la cantidad y el estado fiscal de esa línea. Una instancia de detalle de pedido solo puede tener un artículo.
④ Artículo: Para cada línea de pedido hay un artículo. Un artículo puede tener peso de envío y descripción.
⑤ Pago: En nuestro sistema, un cliente puede realizar un pedido que comprende múltiples artículos en el pedido. Estos conforman los detalles del pedido y luego un cliente puede finalizar la compra a través del Pago. Pueden ocurrir tres tipos de pagos, cada uno con sus propios atributos: Efectivo, Cheque y Crédito.
Diagrama UML de Supermercado:
1. Puede utilizarse para mostrar el proceso de cualquier negocio minorista, incluyendo supermercados o tiendas de comercio electrónico en línea.
2. El caso de uso que resuelve para cualquier negocio minorista es cómo realizar la facturación.
3. Hay esencialmente cinco clases:
① Facturación de Supermercado: Este es el corazón del diagrama UML donde realmente tiene lugar la funcionalidad.
② Clientes: Un cliente es facturado contra una compra.
③ Compra: Una compra es lo que el Cliente hace en el supermercado. La compra depende de otra entidad llamada Tarifas.
④ Tarifas: Aquí definimos los precios de diferentes artículos en nuestro mercado
⑤ Inventario: El inventario se actualiza cada vez que ocurre una facturación en nuestra tienda.
Parte 5. Cómo Dibujar un Diagrama de Clases
Dibujar un diagrama de clases implica representar la estructura de un sistema ilustrando sus clases, atributos, métodos y relaciones.
No importa qué software utilices o si estás dibujando manualmente o no, los pasos y conceptos generalmente van a permanecer iguales.
Aquí hay una guía paso a paso:
- Identificar Clases:
- Identifica las clases principales en tu sistema. Estos son típicamente los sustantivos en tu dominio del problema.
- Considera qué atributos (datos) y métodos (funciones) podría tener cada clase.
- Crear Cajas de Clases:
- Dibuja una caja para cada clase. Coloca el nombre de la clase en la parte superior de la caja.
- Agregar Atributos y Métodos:
- Dentro de cada caja de clase, enumera los atributos y métodos.
- Los atributos generalmente se muestran con sus tipos de datos.
- Los métodos se enumeran con sus parámetros y tipos de retorno.
- Dibujar Relaciones:
- Identifica las relaciones entre clases. Las relaciones comunes incluyen asociación, agregación y composición.
- Usa líneas con puntas de flecha para representar estas relaciones.
- Etiqueta las líneas con multiplicidad (por ejemplo, 1, *, 0..1) para indicar cuántos objetos están involucrados.
- Considerar la Multiplicidad:
- Define cuántas instancias de una clase están relacionadas con una instancia de otra clase. La multiplicidad a menudo se representa cerca de los extremos de las líneas de asociación.
- Incluir Herencia:
- Si tu sistema involucra herencia (es decir, una clase que hereda de otra), represéntala usando una flecha con un triángulo hueco apuntando a la superclase.
- Considerar la Visibilidad:
- Opcionalmente, puedes usar símbolos como '+' (público), '-' (privado) y '#' (protegido) para denotar la visibilidad de atributos y métodos.
- Revisar y Refinar:
- Asegúrate de que tu diagrama de clases refleje con precisión las relaciones y la estructura de tu sistema.
- Refina según sea necesario basándose en retroalimentación o cambios en los requisitos.
Parte 6. Conclusión
Los diagramas de casos de uso UML son indispensables en el modelado y diseño de sistemas. Mejoran la comunicación, mejoran la comprensión del sistema y apoyan la gestión efectiva de proyectos. Siguiendo esta guía completa, puedes aprovechar el poder de los diagramas de casos de uso y aplicarlos a varios dominios, asegurando que tus proyectos estén bien estructurados y sean exitosos.
