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.

Lienzo Vacío con Herramienta de Clase

Estructura de la Caja de Clase

Una caja de clase UML consta de tres compartimentos:

  1. Compartimento de nombre - Contiene el nombre de la clase y el estereotipo opcional
  2. Compartimento de atributos - Lista las propiedades/campos de la clase
  3. Compartimento de operaciones - Lista los métodos/funciones de la clase

Estructura de la Caja de 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.

Inspector de Clase

Atributos

Los atributos representan los datos/propiedades de una clase.

Agregar Atributos

  1. Selecciona la clase
  2. En el Inspector, busca la sección de Atributos
  3. Haz clic en el botón + para agregar un nuevo atributo
  4. Introduce los detalles del atributo

Sintaxis de Atributos

Los atributos siguen este formato: visibilidad nombre : tipo

Modificadores de Visibilidad:

SímboloSignificadoDescripción
+PúblicoAccesible desde cualquier lugar
-PrivadoAccesible solo dentro de la clase
#ProtegidoAccesible dentro de la clase y subclases
~PaqueteAccesible 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

  1. Selecciona la clase
  2. En el Inspector, busca la sección de Operaciones
  3. Haz clic en el botón + para agregar una nueva operación
  4. 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

TipoEstilo de LíneaFlechaCaso de Uso
AsociaciónLínea sólidaFlecha abiertaRelación general
DependenciaLínea discontinuaFlecha abiertaRelación "usa"
HerenciaLínea sólidaTriángulo huecoRelación "es-un" (extends)
RealizaciónLínea discontinuaTriángulo huecoImplementación de interfaz
AgregaciónLínea sólidaDiamante hueco"Tiene-un" (propiedad débil)
ComposiciónLínea sólidaDiamante relleno"Tiene-un" (propiedad fuerte)

Relaciones de Clases

Crear Relaciones

  1. Presiona R para activar la herramienta de Relación
  2. Haz clic en la clase de origen
  3. Arrastra a la clase de destino
  4. Suelta para crear la conexión
  5. 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

  1. Mantenlo simple - No intentes modelar todo; enfócate en las clases clave
  2. Usa estereotipos - Marca claramente las interfaces y clases abstractas
  3. Muestra relaciones clave - No toda asociación necesita ser mostrada
  4. Nomenclatura consistente - Usa PascalCase para clases, camelCase para miembros
  5. Agrupa clases relacionadas - Usa proximidad visual para mostrar agrupaciones lógicas