Diagramas de Clases
Los diagramas de clases son el tipo más común de diagrama UML, usados para modelar la estructura estática de un sistema mostrando clases, sus atributos, operaciones y relaciones.
Crear Clases
Usando la Herramienta de Clase
Presiona A o C para activar la herramienta de Clase, luego haz clic en cualquier lugar del lienzo para colocar una nueva caja de clase.

Estructura de la Caja de Clase
Una caja de clase UML consta de tres compartimentos:
- Compartimento de nombre - Contiene el nombre de la clase y el estereotipo opcional
- Compartimento de atributos - Lista las propiedades/campos de la clase
- Compartimento de operaciones - Lista los métodos/funciones de la clase

Propiedades de la Clase
Selecciona una clase y usa el panel Inspector para configurar sus propiedades:
Nombre
El nombre de la clase aparece en negrita en el compartimento superior. La convención usa PascalCase (ej., CustomerOrder).
Estereotipo
Clasificador opcional que aparece encima del nombre de la clase entre comillas angulares:
<<interface>>- Para definiciones de interfaz<<abstract>>- Para clases abstractas<<enumeration>>- Para tipos enum<<entity>>- Para entidades de dominio- También se admiten estereotipos personalizados
Abstracta
Activa para renderizar el nombre de la clase en cursiva, indicando una clase abstracta.

Atributos
Los atributos representan los datos/propiedades de una clase.
Agregar Atributos
- Selecciona la clase
- En el Inspector, busca la sección de Atributos
- Haz clic en el botón
+para agregar un nuevo atributo - Introduce los detalles del atributo
Sintaxis de Atributos
Los atributos siguen este formato: visibilidad nombre : tipo
Modificadores de Visibilidad:
| Símbolo | Significado | Descripción |
|---|---|---|
+ | Público | Accesible desde cualquier lugar |
- | Privado | Accesible solo dentro de la clase |
# | Protegido | Accesible dentro de la clase y subclases |
~ | Paquete | Accesible dentro del mismo paquete |
Ejemplos:
-id: Int- ID entero privado+name: String- Nombre de cadena público#createdAt: Date- Campo de fecha protegido~cache: Map<String, Any>- Caché de paquete privado
Operaciones
Las operaciones representan el comportamiento/métodos de una clase.
Agregar Operaciones
- Selecciona la clase
- En el Inspector, busca la sección de Operaciones
- Haz clic en el botón
+para agregar una nueva operación - Introduce los detalles de la operación
Sintaxis de Operaciones
Las operaciones siguen este formato: visibilidad nombre(parámetros) : tipoRetorno
Ejemplos:
+getName(): String- Getter público que retorna String-validate(input: String): Boolean- Método de validación privado+process(data: Data, options: Options): Result- Método con múltiples parámetros+save(): void- Método sin valor de retorno
Relaciones
Presiona R para activar la herramienta de Relación, luego arrastra de una clase a otra para crear una conexión.
Tipos de Relaciones
| Tipo | Estilo de Línea | Flecha | Caso de Uso |
|---|---|---|---|
| Asociación | Línea sólida | Flecha abierta | Relación general |
| Dependencia | Línea discontinua | Flecha abierta | Relación "usa" |
| Herencia | Línea sólida | Triángulo hueco | Relación "es-un" (extends) |
| Realización | Línea discontinua | Triángulo hueco | Implementación de interfaz |
| Agregación | Línea sólida | Diamante hueco | "Tiene-un" (propiedad débil) |
| Composición | Línea sólida | Diamante relleno | "Tiene-un" (propiedad fuerte) |

Crear Relaciones
- Presiona
Rpara activar la herramienta de Relación - Haz clic en la clase de origen
- Arrastra a la clase de destino
- Suelta para crear la conexión
- Usa el Inspector para cambiar el tipo de relación y las puntas de flecha
Etiquetas de Relaciones
Haz doble clic en una línea de relación para agregar etiquetas:
- Nombre - Describe la relación (ej., "gestiona", "contiene")
- Multiplicidad - Indica cuántas instancias (ej., "1", "0..*", "1..n")
- Nombres de rol - Etiquetas en cada extremo describiendo el rol
Mejores Prácticas
- Mantenlo simple - No intentes modelar todo; enfócate en las clases clave
- Usa estereotipos - Marca claramente las interfaces y clases abstractas
- Muestra relaciones clave - No toda asociación necesita ser mostrada
- Nomenclatura consistente - Usa PascalCase para clases, camelCase para miembros
- Agrupa clases relacionadas - Usa proximidad visual para mostrar agrupaciones lógicas