Introducción
¿Qué es un diagrama de clases en UML?
Un diagrama de clases describe la estructura de un sistema orientado a objetos mostrando las clases en ese sistema y las relaciones entre las clases. Un diagrama de clases también muestra restricciones y atributos de las clases.

💡 ¡Pruébalo!¿Buscando una herramienta en línea para diagramas de clases? Solo haz clic en el botón Dibujar de abajo para crear tu diagrama de clases en línea. Visual Paradigm Online es gratuito* e intuitivo. También puedes revisar esta guía sobre diagramas de clases antes de comenzar.
Notaciones de diagramas de clases
Clase
La representación de una clase en UML es un rectángulo que contiene tres compartimentos apilados verticalmente, como se muestra en la figura:

Atributo
La sección de atributos de una clase enumera cada uno de los atributos de la clase en una línea separada. La sección de atributos es opcional, pero cuando se utiliza, contiene cada atributo de la clase mostrado en formato de lista. La línea utiliza este formato:
nombre : tipo de atributo
Ejemplo: numeroTarjeta : Entero
Operación
Las operaciones se documentan en el compartimento inferior del rectángulo del diagrama de clases, que también es opcional. Al igual que los atributos, las operaciones de una clase se muestran en formato de lista, con cada operación en una línea separada. Las operaciones se documentan usando esta notación:
nombre (lista de parámetros) : tipo de valor devuelto
Ejemplo: calcularImpuesto (País, Estado) : Moneda
Relaciones
Asociación
Algunos objetos están compuestos por otros objetos. La asociación especifica una relación de tipo “tiene-un” o “todo/parte” entre dos clases. En una relación de asociación, un objeto de la clase todo tiene objetos de la clase parte como datos de instancia.
En un diagrama de clases, una relación de asociación se representa como una línea sólida dirigida.
Asociación unidireccional
En una asociación unidireccional, dos clases están relacionadas, pero solo una clase conoce que existe la relación. Una asociación unidireccional se dibuja como una línea sólida con una flecha abierta que apunta hacia la clase conocida.

Asociación bidireccional (estándar)
Una asociación es una conexión entre dos clases. Las asociaciones siempre se suponen bidireccionales; esto significa que ambas clases son conscientes la una de la otra y de su relación, a menos que califiques la asociación como otro tipo. Una asociación bidireccional se indica mediante una línea sólida entre las dos clases.

Multiplicidad
Coloque las notaciones de multiplicidad cerca de los extremos de una asociación. Estos símbolos indican el número de instancias de una clase vinculadas a una instancia de la otra clase.
Ejemplo:Una empresa tendrá una o más empleados, pero cada empleado trabaja para una empresa únicamente.

| Notación | Significado |
|---|---|
1 |
Exactamente uno |
0..1 |
Cero o uno |
* o 0..* |
Cero o más |
1..* |
Uno o más |
0..3 |
De cero a tres |
Visibilidad
La visibilidad se utiliza para indicar quién puede acceder a la información contenida dentro de una clase denotada con +, -, # y ~ como se muestra en la figura:

| Símbolo | Visibilidad | Descripción |
|---|---|---|
+ |
Público | Accesible desde cualquier otra clase |
- |
Privado | Accesible solo dentro de la propia clase |
# |
Protegido | Accesible dentro de la clase y sus subclases |
~ |
Paquete | Accesible dentro del mismo paquete |
Generalización
Una generalización es una relación entre una cosa general (llamada superclase) y una clase más específica de esa cosa (llamada subclase). A veces se denomina a la generalización una relación de tipo «es un tipo de» y se establece mediante el proceso de herencia.
En un diagrama de clases, la relación de generalización se representa como una línea sólida dirigida con una flecha abierta grande que apunta hacia la clase padre.

Clases y métodos abstractos
En una jerarquía de herencia, las subclases implementan detalles específicos, mientras que la clase padre define el marco que sus subclases utilizarán. La clase padre también sirve como plantilla para métodos comunes que serán implementados por sus subclases.

-
El nombre de un clase abstracta se muestra normalmente en cursivas; alternativamente, una clase abstracta puede mostrarse utilizando la anotación textual, también llamada estereotipo
{abstracto}después o debajo de su nombre. -
Un método abstracto es un método que no tiene implementación. Para crear un método abstracto, crea una operación y haz que sea cursiva.
Realización
Una realización es una relación entre dos elementos donde uno de ellos (una interfaz) especifica un contrato que otro elemento (una clase) garantiza cumplir mediante la implementación de las operaciones especificadas en dicho contrato.
En un diagrama de clases, la relación de realización se representa como una línea punteada dirigida con una flecha abierta que apunta hacia la interfaz.

Dependencia
La dependencia indica una relación de «uso» entre dos clases. En un diagrama de clases, una relación de dependencia se representa como una línea punteada dirigida.
Si una clase A «usa» la clase B, entonces una o más de las siguientes afirmaciones generalmente son verdaderas:
-
La clase B se utiliza como tipo de una variable local en uno o más métodos de la clase A.
-
La clase B se utiliza como tipo de parámetro para uno o más métodos de la clase A.
-
La clase B se utiliza como tipo de retorno para uno o más métodos de la clase A.
-
Uno o más métodos de la clase A invocan uno o más métodos de la clase B.

¿Cuándo dibujar diagramas de clases?
La mayoría de los diagramas UML no pueden mapearse directamente con ningún lenguaje de programación orientado a objetos, excepto los diagramas de clases. En otras palabras, los diagramas de clases pueden tener idealmente un mapeo uno a uno con los diagramas de clases UML. Además, los diagramas de clases son útiles en las siguientes situaciones:
-
Describir la vista estática del sistema – Capturar la estructura de las clases y sus relaciones en un momento dado.
-
Modelar la colaboración entre los elementos de la vista estática – Mostrar cómo las clases interactúan mediante asociaciones y dependencias.
-
Describir las funcionalidades realizadas por el sistema – Vincular operaciones a clases para ilustrar el comportamiento.
-
Construcción de aplicaciones de software utilizando lenguajes orientados a objetos – Servir como plano de construcción para la implementación en lenguajes como Java, C# o Python.
-
Realizar ingeniería de código hacia adelante para los sistemas objetivo – Generar código esqueleto directamente a partir de diagramas de clases.
-
Clasificar clases o componentes como biblioteca para reutilizaciones futuras – Documentar componentes reutilizables para el desarrollo modular.
¿Cómo dibujar un diagrama de clases?
Siga estas instrucciones paso a paso para crear diagramas de clases efectivos:
-
Identifique los objetos en el dominio del problema, y cree clases para cada uno de ellos.
Ejemplo: Profesor, Estudiante, Curso para un sistema de matrícula. -
Agregue atributos para esas clases.
Ejemplo:nombre,dirección,teléfonopara la clase Estudiante. -
Agregue operaciones para esas clases.
Ejemplo:addStudent(estudiante)para la clase Curso. -
Conecte las clases con relaciones apropiadas.
Ejemplo: Relacione Profesor y Curso con una asociación. -
Opcionalmente especifique las multiplicidades para los extremos de los conectores de asociación.
Ejemplo: Ingrese0..3para el lado Curso de la asociación que conecta Profesor y Curso, para indicar que un profesor puede impartir hasta tres cursos.
Prácticas recomendadas adicionales
-
Dibuje paquetes para la categorización lógica de clasespara mejorar la organización y legibilidad:

-
Use nombres significativos y en singular para los nombres de las clases (por ejemplo,
Cliente, noClientes). -
Mantenga los diagramas enfocados: un diagrama por subsistema o área de funcionalidad.
-
Aplicar convenciones de nomenclatura consistentes para atributos y operaciones.
-
Documente las restricciones usando notas o OCL (Lenguaje de Restricciones de Objetos) cuando sea necesario.
Ejemplos de Diagramas de Clases
Ejemplo 1: Sistema de Pedidos de Venta
El ejemplo de diagrama de clases a continuación muestra las clases involucradas en un sistema de pedidos de venta. Observe el uso de <<enumeración>> clase en el modelo de clases.

Ejemplo 2: Sistema de Gestión de Vuelos
El ejemplo de diagrama de clases a continuación muestra un conjunto de clases relacionadas con la gestión de vuelos. Las clases están agrupadas bajo un paquete.

¿Quieres dibujar un diagrama de clases?
Has aprendido qué es un diagrama de clases y cómo dibujarlo paso a paso. Es momento de poner las manos en la masa dibujando un diagrama de clases propio. Dibuje diagramas UML gratis* con Visual Paradigm Online. Es fácil de usar e intuitivo.
* La edición gratuita permite el uso gratuito de Visual Paradigm Online para uso no comercial solo.
Conclusión
🎯 Punto clave: Un gran diagrama de clases no trata de la perfección, sino de la claridad, la comunicación y la creación de una comprensión compartida que impulsa un mejor software. Comienza de forma simple, itera con frecuencia y deja que tus diagramas evolucionen junto con tu sistema.
Lista de referencias
-
¿Qué es UML? Una guía completa sobre el Lenguaje Unificado de Modelado: Esta introducción detallada explica el propósito de UML, sus tipos clave de diagramas y cómo apoya el diseño de software y la modelización de sistemas.
-
¿Qué es un diagrama de clases? – Una guía para principiantes sobre modelado UML: Esta visión general informativa explica el propósito, los componentes y la importancia crítica de los diagramas de clases en ambos el desarrollo de software y el diseño de sistemas.
-
Tutorial completo de diagramas de clases UML para principiantes y expertos: Una tutorial paso a paso diseñado para guiar a los usuarios a través de todo el proceso de creación y comprensión de diagramas de clases UML para dominar la modelización de software.
-
Generador de diagramas de clases UML impulsado por IA por Visual Paradigm: Esta herramienta avanzada asistida por IA utiliza descripciones en lenguaje natural para generar automáticamente diagramas de clases UML, simplificando significativamente la fase de diseño,.
-
Visión general de los 14 tipos de diagramas UML – Visual Paradigm: Un recurso que detalla la gran cantidad de notación de diagramas categorizada en 14 modelos UML distintos, cada uno con propósitos únicos en ingeniería de software.
-
Diagramas de clases frente a diagramas de objetos en UML: Diferencias clave: Esta guía proporciona una comparación clara entre diagramas de clases y diagramas de objetos, destacando sus estructuras específicas y aclarando cuándo usar cada tipo.
-
Desde la descripción del problema hasta el diagrama de clases: Análisis textual impulsado por IA: Una exploración de cómo IA generativa convierte las descripciones de problemas en lenguaje natural en diagramas de clases precisos para el modelado de software estructurado.
-
Dominar los diagramas de clases: Una exploración detallada con Visual Paradigm: Una guía técnica completa que ofrece una visión detallada sobre la creación de diagramas de clases dentro del entorno de modelado de Visual Paradigm.
-
Estudio de caso real: Generación de diagramas de clases UML con la IA de Visual Paradigm: Este estudio demuestra cómo una asistente de IA transformó con éxito los requisitos textuales en diagramas de clases UML precisos para un proyecto de ingeniería del mundo real.
-
Tutorial paso a paso de diagramas de clases usando Visual Paradigm: Una guía instructiva práctica que cubre los pasos específicos del software para abrir un proyecto, agregar clases y crear un diagrama completo para arquitectura del sistema.


