Diagramas de Clases

Los diagramas de clases son el tipo más común de diagrama UML, usado para modelar la estructura estática de un sistema mostrando clases, sus atributos, operaciones y relaciones.

Crear Clases

Usando la Herramienta Class

En una página UML Class Diagram, presiona U o elige Class en el menú UML de la barra de herramientas. Haz clic en el lienzo para colocar una caja de clase, o arrastra para establecer su tamaño. Presiona Return con una clase seleccionada para renombrarla.

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 un 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

Propiedades de la Clase

Selecciona una clase y usa la pestaña Arrange del Inspector → sección UML para configurar sus propiedades:

Name

El nombre de la clase aparece en negrita en el compartimento superior. La convención usa PascalCase (p. ej., CustomerOrder).

Stereotype

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

Abstract

Actívalo para renderizar el nombre de la clase en cursiva, indicando una clase abstracta.

Constrained resize

Cuando está activado (el predeterminado), redimensionar conserva las proporciones de la caja de clase.

Atributos

Los atributos representan los datos/propiedades de una clase.

Agregar Atributos

  1. Selecciona la clase
  2. En la sección UML, busca Attributes — un editor multilínea con un atributo por línea
  3. Haz clic en + (o presiona Cmd+L) para agregar un nuevo atributo, luego escribe sus detalles

Sintaxis de Atributo

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 sus 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é privado del paquete

Operaciones

Las operaciones representan el comportamiento/métodos de una clase.

Agregar Operaciones

  1. Selecciona la clase
  2. En la sección UML, busca Operations — un editor multilínea con una operación por línea
  3. Haz clic en + (o presiona Shift+Cmd+L) para agregar una nueva operación, luego escribe sus detalles

Sintaxis de Operación

Las operaciones siguen este formato: visibilidad nombre(parámetros) : tipoDeRetorno

Ejemplos:

  • +getName(): String - Getter público que devuelve String
  • -validate(input: String): Boolean - Método de validación privado
  • +process(data: Data, options: Options): Result - Método con varios parámetros
  • +save(): void - Método sin valor de retorno

Relaciones

Presiona R para activar la herramienta Relationship, luego arrastra de una clase a otra para crear una conexión.

Tipos de Relación

TipoEstilo de LíneaFlechaCaso de Uso
AssociationLínea sólidaFlecha abiertaRelación general
DependencyLínea discontinuaFlecha abiertaRelación de "uso"
InheritanceLínea sólidaTriángulo huecoRelación "es-un" (extends)
RealizationLínea discontinuaTriángulo huecoImplementación de interfaz
AggregationLínea sólidaRombo hueco"Tiene-un" (propiedad débil)
CompositionLínea sólidaRombo relleno"Tiene-un" (propiedad fuerte)

Crear Relaciones

  1. Presiona R para activar la herramienta Relationship
  2. Haz clic en la clase de origen
  3. Arrastra hasta la clase de destino
  4. Suelta para crear la conexión
  5. Usa la sección UML del Inspector para establecer el Relationship Type — el estilo de línea y las puntas de flecha siguen el tipo

Etiquetas de Relación

Selecciona una relación y establece sus etiquetas en la sección UML del Inspector:

  • Label - Describe la relación (p. ej., "manages", "contains")
  • Multiplicity - Valores Source y Target que indican cuántas instancias (p. ej., "1", "0..", "1..")

Buenas Prácticas

  1. Mantenlo simple - No intentes modelarlo todo; enfócate en las clases clave
  2. Usa estereotipos - Marca claramente las interfaces y las clases abstractas
  3. Muestra las relaciones clave - No todas las asociaciones necesitan mostrarse
  4. Nomenclatura consistente - Usa PascalCase para las clases, camelCase para los miembros
  5. Agrupa clases relacionadas - Usa la proximidad visual para mostrar agrupaciones lógicas