Diagramas de Estructura Compuesta
1. Qué es un diagrama de estructura compuesta? #
Un diagrama de estructura compuesta (Composite Structure Diagram) en UML muestra la estructura interna de una clase, es decir, cómo está compuesta en términos de partes, puertos, conectores y otros elementos. Es útil para entender cómo interactúan los elementos internos de un sistema complejo.
2. Partes del Diagrama de Estructura Compuesta #
Clases o bloques estructurales #
Son las entidades que contienen la estructura interna. Se dibujan como rectángulos con nombre.
1@startuml 2class Motor { 3} 4@enduml
Partes (Parts) #
Son instancias internas que forman parte del todo. Se representan como rectángulos con un : para indicar el nombre de la instancia y su tipo.
1@startuml 2class Coche { 3 +motor: Motor 4} 5class Motor 6 7Coche *-- Motor : contiene 8@enduml
Puertos (Ports) #
Son puntos de interacción que permiten la comunicación entre la clase y el exterior (o entre partes internas). Se dibujan como pequeños círculos o cuadrados en el borde del rectángulo.
1@startuml 2class Sensor { 3 +data: int 4} 5class Controlador { 6 +procesar() 7} 8 9Sensor o-- Controlador : comunica por puerto 10@enduml
En PlantUML se pueden representar puertos utilizando la directiva
port(por ejemploport p1oportIn / portOut), o modelar la interacción mediante conectores y etiquetas entre partes internas.
Conectores (Connectors) #
Unen puertos o partes. Representan vínculos físicos o lógicos que permiten la interacción.
1@startuml 2class Procesador 3class Memoria 4 5Procesador --> Memoria : usa 6@enduml
3. Ejemplo completo en PlantUML #
Veamos un ejemplo realista: un sistema domótico con un controlador que se comunica con sensores y actuadores.
1@startuml 2class Controlador { 3 +iniciar() 4} 5class SensorTemperatura { 6 +leerTemperatura() 7} 8class ActuadorCalefaccion { 9 +encender() 10 +apagar() 11} 12 13Controlador o-- SensorTemperatura : obtiene datos 14Controlador o-- ActuadorCalefaccion : controla 15@enduml
4. Conceptos clave #
| Elemento | Descripción |
|---|---|
| Part | Parte interna que forma parte de una clase |
| Port | Punto de interacción entre el sistema y el entorno |
| Connector | Comunicación entre partes y puertos |
| Structured Class | Clase que incluye partes y puertos |
5. Práctica propuesta #
Ejercicio: #
Diseña un diagrama para una cafetera automática que incluya:
- Un módulo de agua
- Un calentador
- Un sensor de temperatura
- Un controlador central
Intenta identificar: partes, conectores y clases.
Solución:
1@startuml 2' Definición de clases 3class Controlador { 4 +prepararCafe() 5} 6 7class ModuloAgua { 8 +proveerAgua() 9} 10 11class Calentador { 12 +calentarAgua() 13} 14 15class SensorTemperatura { 16 +leerTemperatura() 17} 18 19' Relaciones de composición y uso 20Controlador *-- ModuloAgua : contiene 21Controlador *-- Calentador : contiene 22Controlador *-- SensorTemperatura : contiene 23 24ModuloAgua --> Calentador : suministra 25SensorTemperatura --> Calentador : mide 26@enduml
Resumen del tema
Conceptos clave #
- Estructura interna (Composite Structure): descomposición detallada del interior de un clasificador complejo o clase estructurada en tiempo de ejecución.
- Partes (
Parts): instancias internas contenidas dentro de la clase que cooperan para lograr la funcionalidad global. - Puertos (
Ports): puntos de interacción explícitos en el perímetro de la clase que median la comunicación entre el interior y el exterior sin exponer la implementación. - Conectores (
Connectors): enlaces de comunicación que unen puertos y partes para permitir el intercambio de mensajes o señales. - Ámbito de aplicación: diseño de sistemas embebidos, arquitectura de hardware/IoT y desglose fino de subsistemas complejos.
Qué debes recordar #
El diagrama de estructura compuesta abre la "caja negra" de una clase compleja para mostrar cómo se conectan sus partes internas y puertos en tiempo de ejecución.