Modelado Estructural Avanzado
5.1 Definición general
Sección titulada «5.1 Definición general»El modelado estructural en UML (Unified Modeling Language) se refiere a la representación de la estructura estática del sistema, es decir, cómo están organizados sus elementos (clases, objetos, relaciones, interfaces, etc.).
Se diferencia del modelado dinámico, que se enfoca en el comportamiento (interacciones, eventos, flujos).
5.2. Niveles de abstracción
Sección titulada «5.2. Niveles de abstracción»La UML permite modelar un sistema en varios niveles de detalle, lo cual es crucial para diferenciar entre lo que se quiere hacer, cómo se piensa hacer y cómo se implementa finalmente.
✦ Conceptual
Sección titulada «✦ Conceptual»- Qué es: representación del dominio de forma abstracta, sin pensar en software aún.
- Ejemplo: En una tienda, tienes conceptos como
Cliente,Producto,Pedido.
✦ Especificación
Sección titulada «✦ Especificación»- Qué es: definición de interfaces del sistema (cómo interactúan los componentes entre sí).
- Ejemplo: Sabemos que
Clientepuede “realizarPedido()”, pero no cómo lo hace.
✦ Implementación
Sección titulada «✦ Implementación»- Qué es: ya vemos el detalle real en código, clases, métodos, campos.
- Ejemplo:
ClientetieneList<Pedido>como atributo, y un métodocrearPedido().
5.3 Elementos del modelo estructural
Sección titulada «5.3 Elementos del modelo estructural»Atributos
Sección titulada «Atributos»- A nivel conceptual: identifican propiedades relevantes. Ej:
nombrede unCliente. - A nivel de especificación: decides tipos y restricciones (e.g.,
nombre: String, obligatorio). - A nivel de implementación: el atributo es un campo real en una clase.
Operaciones
Sección titulada «Operaciones»- A nivel conceptual: representan responsabilidades. Ej:
realizarPedido(). - A nivel de especificación: se definen visibilidad, parámetros, excepciones.
- También se incluyen operaciones privadas y protegidas, no visibles externamente.
Alcance
Sección titulada «Alcance»Define si el atributo es de instancia (cada objeto lo tiene) o de clase (compartido).
- Ejemplo:
class Usuario { static int totalUsuarios; // atributo de clase (subrayado en UML) String nombre; // atributo de instancia} ```
# 5.4 Asociaciones y relaciones
### AsociaciónRelación estructural entre clases. A distintos niveles, implica cosas distintas:
- **Conceptual**: denota **navegabilidad**: puedes ir de `Pedido` a `Cliente`.- **Especificación**: muestra **responsabilidades** e **interfaces**.- **Implementación**: implica una **estructura de datos** (por ejemplo, una lista).
```javaclass Cliente { List<Pedido> pedidos; // Asociación 1 a muchos}Clase Asociación
Sección titulada «Clase Asociación»Una asociación que necesita atributos propios se modela como clase.
Ejemplo: Relación Matricula entre Estudiante y Curso con atributo nota.
Composición vs Agregación
Sección titulada «Composición vs Agregación»- Agregación: relación débil. Las partes pueden vivir sin el todo.
- Composición: relación fuerte. Las partes viven y mueren con el todo.
class Pedido { private List<LineaPedido> lineas; // Composición: LineaPedido no existe sin Pedido}5.5 Mecanismos de extensibilidad
Sección titulada «5.5 Mecanismos de extensibilidad»UML es extensible para adaptarse a dominios específicos:
✦ Estereotipos (<< >>)
Sección titulada «✦ Estereotipos (<< >>)»Permiten crear nuevos elementos especializados.
- Ej:
<<controller>>,<<entity>>,<<boundary>>en MVC.
✦ Valores etiquetados
Sección titulada «✦ Valores etiquetados»Metadatos asociados a elementos UML. Ej: versión = 1.0.
✦ Restricciones
Sección titulada «✦ Restricciones»Condiciones que deben cumplirse ({ordered}, {unique}, {readOnly}).
5.6 Clasificadores
Sección titulada «5.6 Clasificadores»Un clasificador es un concepto general que agrupa cosas como:
- Clases
- Interfaces
- Componentes
- Casos de uso
Tienen instancias, atributos, operaciones y pueden participar en relaciones.
5.7 Visibilidad
Sección titulada «5.7 Visibilidad»Controla quién puede acceder a atributos u operaciones:
| Símbolo | Nivel | Significado |
|---|---|---|
+ | Pública | Accesible desde cualquier clase |
- | Privada | Solo accesible dentro de la clase |
# | Protegida | Accesible desde subclases |
~ | De paquete | Accesible solo dentro del mismo paquete |
class Cliente { private String nombre; // (-) protected void validar(); // (#) public void comprar(); // (+)}5.8 Interfaces y realización
Sección titulada «5.8 Interfaces y realización»✦ ¿Qué es una interfaz?
Sección titulada «✦ ¿Qué es una interfaz?»Una colección de operaciones sin implementación ni atributos.
- No define estructura.
- Define qué se debe hacer, no cómo.
- Puede participar en:
- Generalización
- Dependencia
- Asociación
- Realización
interface Imprimible { void imprimir();}
class Factura implements Imprimible { public void imprimir() { // implementación concreta }}📌 Realización es la relación entre una interfaz y una clase que garantiza cumplir ese contrato.