Skip to content

4. Notación UML para Clases

La notación UML (Unified Modeling Language) para clases proporciona un conjunto estándar de símbolos y convenciones que permiten representar clases y sus relaciones de manera clara y consistente. Esta notación es esencial para crear diagramas de clases efectivos que comuniquen correctamente la estructura de un sistema orientado a objetos.

4.1. Representación gráfica de una clase

Section titled “4.1. Representación gráfica de una clase”

En UML, una clase se representa mediante un rectángulo dividido en tres compartimentos o secciones. Cada sección tiene un propósito específico y sigue reglas de notación particulares.

Estructura básica de una clase en UML
[NombreClase]
-----------------
| atributos |
-----------------
| operaciones |
-----------------
Diagrama UML

Contiene el nombre de la clase con las siguientes características:

  • Se escribe centrado
  • La primera letra en mayúscula (convención PascalCase)
  • Puede incluir el nombre del paquete: paquete::NombreClase
  • Se puede mostrar en negrita o cursiva para indicar propiedades especiales
    • Cursiva: Clase abstracta
    • Negrita: Clase estática
Clase simplificada (solo nombre)
[NombreClase]
-----------------
Clase con nombre y atributos
[NombreClase]
-----------------
| atributos |
-----------------
Interfaz en UML
[<<interfaz>>]
[NombreInterfaz]
-----------------
| operaciones |
-----------------
Diagrama UML

Los atributos en UML siguen una sintaxis específica que permite expresar diversas propiedades y características.

Sintaxis de atributos en UML
visibilidad nombre: tipo [multiplicidad] = valorPredeterminado {propiedades}

Indica el nivel de acceso al atributo:

  • + Público - Accesible desde cualquier clase
  • - Privado - Accesible solo desde la propia clase
  • # Protegido - Accesible desde la clase y sus subclases
  • ~ Paquete - Accesible desde clases del mismo paquete
Ejemplos de atributos en UML
- nombre: String
+ edad: Integer = 0
# saldo: Double {readOnly}
- cuentas: Cuenta[0..*] {ordered}
~ activo: Boolean = true
Diagrama UML

Las operaciones (métodos) en UML siguen una sintaxis específica que permite expresar parámetros, tipos de retorno y otras propiedades.

Sintaxis de operaciones en UML
visibilidad nombre(parametro1: tipo1, ..., parametroN: tipoN): tipoRetorno {propiedades}
  • visibilidad: Nivel de acceso (igual que en atributos)
  • nombre: Identificador del método (generalmente en camelCase)
Ejemplos de operaciones en UML
+ calcularTotal(): Double
- validarDatos(usuario: String, clave: String): Boolean
# actualizarSaldo(monto: Double): void
+ obtenerHistorial(): Transaccion[*] {query}
+ crearInstancia(): Producto {static}
Diagrama UML

Representación de constructores y destructores

Section titled “Representación de constructores y destructores”
Constructores y destructores en UML
+ NombreClase(parametros): void // Constructor
+ ~NombreClase(): void // Destructor

Los estereotipos y etiquetas permiten extender la notación UML para representar conceptos específicos o propiedades adicionales.

Los estereotipos extienden el vocabulario de UML y se representan entre comillas angulares dobles (<<estereotipo>>).

Clase con estereotipo de interfaz
[<<interfaz>>]
[InterfazUsuario]
-----------------
+ autenticar(): Boolean
+ cerrarSesion(): void
-----------------
Diagrama UML
EstereotipoDescripciónAplicación
&lt;&lt;interface&gt;&gt;Define una interfazClase que solo declara métodos sin implementación
&lt;&lt;abstract&gt;&gt;Clase abstractaClase que no puede ser instanciada directamente
&lt;&lt;entity&gt;&gt;Entidad persistenteClase que representa datos persistentes
&lt;&lt;control&gt;&gt;Clase controladoraClase que implementa lógica de negocio o control
&lt;&lt;boundary&gt;&gt;Clase límiteClase que interactúa con actores externos
&lt;&lt;utility&gt;&gt;Clase utilitariaClase con métodos estáticos y sin estado

Las etiquetas permiten añadir propiedades personalizadas a los elementos UML.

Clase con etiquetas
[Producto]
-----------------
| - id: String {id}
| - precio: Double
-----------------
{version = 1.0}
{author = "Juan Pérez"}
Diagrama UML

Las restricciones especifican condiciones que deben cumplirse y se representan entre llaves.

Clase con restricciones
[Cuenta]
-----------------
| - saldo: Double {saldo >= 0}
-----------------
| + retirar(monto: Double): Boolean
-----------------
Diagrama UML
Ejemplo completo de notación UML
[<<entity>>]
[Cliente]
-----------------
| + id: String {id, unique}
| - nombre: String [1]
| - apellido: String [1]
| - email: String [0..1]
| # fechaRegistro: Date = "hoy" {readOnly}
| ~ activo: Boolean = true
-----------------
| + getNombreCompleto(): String {query}
| + actualizarDatos(datos: DatosCliente): Boolean
| + desactivar(): void
| - validarEmail(email: String): Boolean
-----------------
{version = "2.0"}
{author = "Equipo de Desarrollo"}
Diagrama UML
🐝