Guía de sintaxis de diagramas de clases de PlantUML

¿Qué es un diagrama de clases?

Un UML Diagrama de claseses el plano estructural fundamental de la modelización orientada a objetos. Representa un sistema de software visualizando sus clases, sus atributos internos (campos de datos), sus métodos (funciones) y las relaciones estructurales entre ellos. Mientras que las bases de código pueden volverse extensas y difíciles de interpretar, un diagrama de clases limpio proporciona a los ingenieros una referencia visual inmediata sobre cómo interactúan los objetos de código, heredan comportamientos y gestionan los límites de datos.

Usando VPasCode, puedes diseñar disposiciones detalladas de clases completamente en texto plano, dejando la ingeniería de diseño, el tamaño de los cuadros y el espaciado de líneas completamente a nuestros motores en la nube integrados.

Guía de sintaxis principal: Elementos y construcciones

Para escribir diagramas de clases de alta calidad, necesitas comprender tres marcadores estructurales fundamentales: definir el cuerpo de la clase, asignar modificadores de visibilidad a los miembros y mapear las relaciones entre objetos.

1. Declaración de clases y miembros

Declaras una plantilla estándar de objeto usando la classpalabra clave. Dentro de las llaves de cierre, listas tus campos y métodos en líneas separadas:

class CustomerAccount {
    String accountId
    String emailAddress
    Boolean isActive()
}

2. Modificadores de visibilidad (control de acceso)

PlantUML mapea las reglas estándar de encapsulación orientada a objetos (público, privado, protegido y privado de paquete) usando prefijos de texto simples justo antes del nombre del campo o método:

  • + Acceso público claro (accesible por cualquier otra clase)
  • - Acceso privado estricto (accesible solo dentro de esta clase específica)
  • # Acceso protegido (accesible dentro de esta clase y sus subclases)
  • ~ Acceso de paquete/interno (accesible solo dentro del módulo de código local)

3. Definición de relaciones entre objetos

Conectar clases requiere notaciones específicas de flechas para indicar la dependencia estructural o composición del código de tu aplicación:

  • Herencia / Generalización (Es-Un):Utiliza una punta de flecha triangular abierta que apunta hacia la clase padre:SubClase --|> ClasePadre
  • Implementación / Realización:Utiliza una línea punteada con una triangular abierta para mostrar la ejecución de una interfaz:ClaseConcreta ..|> IInterfaz
  • Composición (Propiedad Estricta):Utiliza un diamante sólido para mostrar que el objeto hijo no puede existir sin el contenedor padre:Padre *-- Hijo
  • Agregación (Colección Compartida):Utiliza un diamante abierto para mostrar una relación de colección temporal:Departamento o-- Empleado

Mejores Prácticas para Mapas de Clases Prácticos

  • Separar diseños con clases abstractas:Utilice la clase abstractaointerfazpalabras clave para diferenciar visualmente sus límites estructurales de los modelos de base de datos concretos.
  • Etiquetar multiplicidades temprano:Siempre agregue multiplicidades numéricas (como"1"o"0..*") en ambos extremos de sus flechas de relación para hacer explícitas las restricciones de datos para los desarrolladores.
  • Controlar el espaciado vertical:Los diagramas de clases pueden volverse extremadamente altos. Si su diseño se extiende demasiado verticalmente, reemplace una doble raya (--) con una raya simple (-) dentro de sus flechas de relación para forzar una alineación horizontal lado a lado.

Ejemplos de diagramas de clases PlantUML del mundo real

Ejemplo 1: Modelo de dominio de comercio electrónico (Visibilidad y encapsulamiento)

Este plano muestra modificadores de acceso estándar, objetos de datos básicos y asignaciones básicas de multiplicidad de datos entre entidades centrales de compras en línea.

@startuml
class Usuario {
    - String idUsuario
    - String secretoCifrado
    + Boolean verificarInicioSesion(String entrada)
}

class Pedido {
    + String idPedido
    + Date fechaHora
    - Double calcularTotal()
}

Usuario "1" --> "0..*" Pedido : "realiza y posee"
@enduml

Desglose de sintaxis: El - prefijo mantiene los campos sensibles como credenciales estrictamente privados dentro del Usuario bloque de clase, mientras que las funciones de acceso público usan el + marcador. La cadena de conexión destaca explícitamente que un usuario puede buscar cero o muchos pedidos de forma fluida.

Ejemplo 2: Pasarela de pago avanzada (Herencia e interfaces)

Este mapa completo de ingeniería de software muestra cómo organizar interfaces, bucles de herencia de clases y composiciones complejas dentro de un marco unificado.

@startuml
interface IProcesadorPago {
    + Boolean autorizarMonto(Double efectivo)
    + void capturarFondos()
}

clase abstracta BasePasarela {
    # String claveApiComerciante
    # String urlPuntoAcceso
    + void registrarTransaccion(String carga)
}

class PasarelaStripe {
    - String tokenStripe
    + Boolean autorizarMonto(Double efectivo)
    + void capturarFondos()
}

class PasarelaPayPal {
    - String correoPayPal
    + Boolean autorizarMonto(Double efectivo)
    + void capturarFondos()
}

class CarritoCompras {
    - List items
    + void finalizarCompra(IPaymentProcessor motor)
}

' Declaraciones de relaciones estructurales
BasePasarela ..|> IProcesadorPago
PasarelaStripe --|> BasePasarela
PasarelaPayPal --|> BasePasarela
CarritoCompras *-- IProcesadorPago
@enduml

Desglose de sintaxis: El ..|> notación establece que la clase abstracta implementa nuestra interfaz raíz principal. Las líneas sólidas triangulares (--|>) dirigen limpiamente a las pasarelas hijas hacia su clase padre base, mientras que el diamante sólido (*--) declara que una Carrito de compras posee fundamentalmente su procesador de motor de pago durante el ciclo de vida de una sesión.

Scroll al inicio