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.

Motor
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.

coche_motor
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.

sensor temp
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

ElementoDescripción
PartParte interna que forma parte de una clase
PortPunto de interacción entre el sistema y el entorno
ConnectorComunicación entre partes y puertos
Structured ClassClase 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:

Calentador
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