Para elaborar diagramas de clases y objetos, vamos a ahacer uso de la herramient PlantUML, de la que podemos consultar la documentación en la página oficial. Es una herramienta muy básica para la visualización de diagramas UML. Podemos usarla on-line o bien descargarnos el archivo .jar y ejecutarlo localmente.

PlantUML — Apuntes rápidos (cheatsheet)

1) Estructura básica

  • Todo diagrama empieza y termina con @startuml / @enduml. plantuml
  • Se puede añadir comentarios con ' (apóstrofo) o // para líneas. gist.github

2) Diagrama de clases — sintaxis esencial

  • Declarar clase simple:

    class Nombre { 
      - atributoPrivado: Tipo
      + metodoPublico(param: Tipo): Retorno
    } 
    

    plantuml

  • Visibilidades: + público, - privado, # protegido, ~ package (por defecto). plantuml

  • Atributos estáticos y abstractos: {static} contador: int, {abstract} metodo(): void. gist.github

  • Relaciones comunes:

    • Herencia: A <|-- B (B extiende A). plantuml
    • Realización (interfaz): A <|.. B. plantuml
    • Composición (todo/parte, vida ligada): A *-- B. plantuml
    • Agregación (parte independiente): A o-- B. plantuml
    • Asociación: A -- B : etiqueta. gist.github
    • Dependencia: A ..> B. plantuml
  • Cardinalidad / multiplicidad: usar comillas en la relación: "1" -- "0..*". plantuml

  • Notas y etiquetas: añadir texto a una relación o clase con : o con note: class A note left of A : comentario. gist.github

Ejemplo de clase con relación y multiplicidad

@startuml
class Gym { -nombre: String }
class Socio { -id: String }
class Actividad { -nombre: String }
Socio "1" -- "0..*" Actividad : inscritoEn
Gym *-- Actividad
@enduml

(El ejemplo anterior muestra composición Gym *-- Actividad y multiplicidad.) plantuml

3) Diagrama de objetos — sintaxis esencial

  • Declarar objeto (instancia): object "NombreInstancia" as idInst { atributo = "valor" otro = 123 } plantuml
  • Relaciones entre objetos: usar flechas normales --> o -- y etiquetarlas: obj1 --> obj2 : "relación". plantuml
  • Mostrar snapshot con valores concretos para explicar casos de uso o tests. plantuml

Ejemplo de objeto

@startuml
object "Socio_S01" as S01 {
  id = "S01"
  nombre = "Ana"
  tipo = "mensual"
}
object "Actividad_A1" as A1 {
  id = "A1"
  nombre = "Zumba"
}
S01 --> A1 : inscrito
@enduml

(Ejemplo que representa una instancia concreta del modelo.) plantuml

4) Comandos y configuraciones útiles

  • Encabezados y pies: header, footer, title. plantuml
  • skinparam para estilo (colores, fuentes, bordes): skinparam classBackgroundColor #FEFECE skinparam ArrowColor red blog.anoff
  • Agrupación / paquetes: package "Módulo" { class A class B } gist.github
  • Incluir librerías y sprites: !include o !include common/icon.puml para iconos. blog.anoff

5) Flechas y estilos (resumen)

  • -- simple line, .. dotted line. gist.github
  • <|-- herencia, *-- composición, o-- agregación, ..> dependencia. plantuml
  • Se puede invertir, añadir multiplicidad y etiquetas: A "1" -- "0..*" B : contiene. plantuml

6) Buenas prácticas para clase/objeto en aula

  • Mantener las clases pequeñas: máximo 6–8 atributos visibles en ejemplos de clase; el resto en notas. gist.github
  • Se pueden usar objetos con valores realistas (fechas, booleanos) para el diagrama de objetos; facilita la comprensión. plantuml
  • Indicar claramente qué relaciones son composición (parte muere con el todo) y cuáles agregación. Añadir una nota si es necesario. plantuml
  • Añadir métodos relevantes en la clase que muestren la operativa (crear, inscribir, confirmar). plantuml

7) Ejemplos rápidos útiles en clase

- Crear clase con métodos y visibilidad:
@startuml
class Socio {
  - id: String
  + inscribir(a: Actividad): boolean
  + confirmar(asistenciaId: String): void
}
@enduml 

plantuml

  • Objeto con asociación y valor booleano:
@startuml
object Socio_S1 { id="S1" nombre="Luis" }
object Asis_1 { id="A1" fecha="2026-05-18" confirmado=true }
Socio_S1 --> Asis_1 : "asistió"
@enduml

plantuml

8) Recursos y referencias rápidas

  • Documentación oficial PlantUML (clases y objetos): PlantUML website. plantuml
  • Cheatsheets y guías cortas: Devhints, Gist con ejemplos. devhints
  • Sintaxis en español (diagrama de objetos y tablas de símbolos): plantuml.com/es-dark/object-diagram. plantuml