Saltar al contenido principal

POJO y UML Básico

¿Qué es un POJO?

POJO (Plain Old Java Object) es un objeto Java sencillo y autónomo que no depende de ninguna tecnología, framework o API externa (como Spring, Hibernate, etc.). Es la forma más limpia y pura de representar una entidad del dominio.

Características de un POJO:

  • Tiene atributos privados.
  • Posee constructores, setters y getters.
  • Puede implementar toString(), equals() y hashCode().
  • No extiende de clases específicas ni implementa interfaces no necesarias.

Ejemplo real: Representar un libro (Book) solo con su título, autor, año y código ISBN.

Código en Java

¿Qué es UML?

UML (Unified Modeling Language) es un lenguaje gráfico que permite modelar sistemas orientados a objetos. También podríamos definirlo como un lenguaje visual estandarizado para representar la estructura, comportamiento e interacciones de un sistema orientado a objetos.

En la Programación Orientada a Objetos tenemos los siguientes tipos de diagramas UML más comunes:

Tipo de diagramaPropósito
Diagrama de clasesRepresentar entidades del sistema (clases, atributos, métodos, relaciones)
Diagrama de casos de usoRepresentar interacciones entre actores y el sistema
Diagrama de secuenciaModelar la interacción temporal entre objetos
Diagrama de actividadesMostrar flujos de trabajo o procesos

Por ejemplo, en el diagrama de clases UML se representan:

  • Clases
  • Atributos
  • Métodos
  • Relaciones (asociación, herencia, composición, etc.)

Símbolos básicos:

  • + público
  • - privado
  • # protegido
  • ~ estático
  • * multiplicidad (número de instancias)

¿Qué es PlantUML?

PlantUML es una herramienta que permite crear diagramas UML mediante código textual. En lugar de arrastrar y soltar elementos gráficos, el usuario escribe una especie de "lenguaje de marcado" para generar los diagramas automáticamente.

Ventajas:

  • Ligero y rápido.
  • Versionable en Git.
  • Compatible con Markdown, Docusaurus y VSCode.
  • Ideal para generar documentación automática de código.

Un diagrama en PlantUML se vé de la siguiente manera:

@startuml
class Book {
- title: String
- author: String
+ getTitle(): String
+ setTitle(String): void
}
@enduml

Este código genera una imagen de un diagrama de clase con la clase Book, sus atributos y métodos.

Para trabajar con PlantUML en VSCode debes:

  1. Tener conexión a internet para renderizado online, o instalar Graphviz para render local.
  2. Instalar la extensión "PlantUML" con mayor número de usuarios.
  3. Crear un archivo .puml o .plantuml con el código del diagrama.
  4. Presionar Alt + D o hacer click derecho y luego seleccionar "Preview Current Diagram".
  5. Puedes exportar el diagrama a formato PNG o SVG usando el comando "Export Current Diagram"

Analogía Básica

  1. POJO como un envase limpio y etiquetado

    Imagina que un POJO es como una botella transparente con etiqueta:

    • Contiene un líquido (datos como title, author, etc.).
    • Tiene tapa (acceso controlado con getters/setters).
    • No hace nada más que guardar datos de forma ordenada.
    • No tiene chips, sensores, ni botones (no depende de frameworks ni librerías externas).

    Es una estructura de datos pura, como un frasco que contiene información pero no interactúa con el mundo por sí solo.

  2. UML como el plano de una casa

    Antes de construir una casa, necesitas un plano arquitectónico. Este no tiene cemento, ladrillos ni electricidad, pero:

    • Dice dónde estará cada habitación (clase).
    • Qué tendrá dentro (atributos y métodos).
    • Qué puertas conectan una habitación con otra (relaciones entre clases).

    UML no construye el sistema, pero lo visualiza antes de codificarlo.

Actividad

  • Construcción manual de una clase User con atributos básicos (id, name, email).
  • Dibujar en grupo el diagrama UML en papel (nombre, atributos, métodos).
  • Uso de PlantUML o draw.io para digitalizar el diagrama.

Mini proyecto: Sistema de Biblioteca (versión POJO)

  • Clase Book: título, autor, año, ISBN
  • Clase User: id, nombre, correo
  • Clase Loan: fecha, libro, usuario

Reto: Modelar y construir los tres POJOs + sus UMLs + documentación.

Pistas:

  • Loan debe tener referencias a Book y User.

  • Uso de agregación en UML.

    @startuml
    class Loan {
    - date: LocalDate
    - book: Book
    - user: User
    + getDate(): LocalDate
    + getBook(): Book
    + getUser(): User
    }
    Loan o-- Book
    Loan o-- User
    @enduml

Resultado:

Reflexión final

Principios SOLID aplicados:

  • S – Single Responsibility: cada POJO representa solo una entidad (sin lógica extra).
  • O – Open/Closed: se pueden extender funcionalidades sin modificar la clase base.

Patrones aplicados:

  • Value Object: los POJOs representan datos sin lógica de negocio compleja.
  • Composition: en Loan, se incluyen objetos Book y User.

Aplicación práctica

  • Sistemas universitarios: Student, Course, Enrollment
  • E-commerce: Product, Customer, Order
  • Videojuegos: Character, Weapon, Inventory

Recursos y Bibliografía