Curso UML
✅ ¿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.
🧩 Partes del Diagrama de Estructura Compuesta
1. 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
2. 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
3. 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 no hay una notación exacta para puertos, pero se puede representar la relación con etiquetas o conectores personalizados.
4. 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
🛠 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
🧠 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 |
🧪 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