Curso UML
🧱 1. Estructura de un diagrama de Clase
Una clase UML se representa mediante un rectángulo dividido en tres secciones:
- Nombre de la clase (en negrita)
- Atributos
- Métodos
Por convención, los atributos y métodos llevan antes un símbolo de visibilidad:
+público (public)-privado (private)#protegido (protected)~de paquete (package/internal)
Ejemplo UML:
🔓 2. Tipos de Visibilidad
| Símbolo | Visibilidad | Acceso desde: |
|---|---|---|
+ | public | cualquier parte del programa |
- | private | solo desde dentro de la clase |
# | protected | clase y subclases |
~ | package | clases del mismo paquete (Java) |
1@startuml 2class Persona { 3 -nombre: String 4 -edad: int 5 +getNombre(): String 6 +cumplirAnios(): void 7} 8@enduml
🔗 3. Tipos de Relaciones
3.1 Asociación
- Representa una relación genérica entre dos clases.
- Ejemplo: una persona tiene un perro.
1@startuml 2class Persona 3class Perro 4Persona --> Perro : tiene 5@enduml
3.2 Agregación
- Representa una relación "todo-parte" donde las partes pueden existir por separado.
- Ejemplo: un equipo está formado por jugadores, pero estos existen fuera del equipo.
1@startuml 2class Equipo 3class Jugador 4Equipo o-- "11" Jugador : incluye 5@enduml
3.3 Composición
- Relación fuerte de "todo-parte". Las partes no pueden vivir sin el todo.
- Ejemplo: una casa tiene habitaciones que desaparecen con ella.
1@startuml 2class Casa 3class Habitacion 4Casa *-- Habitacion : contiene 5@enduml
3.4 Herencia (Generalización)
- Una clase hija hereda atributos y comportamientos de una clase padre.
1@startuml 2class Animal 3class Perro 4Animal <|-- Perro 5@enduml
3.5 Implementación (Interfaces)
- Una clase se compromete a implementar métodos definidos por una interfaz.
1@startuml 2interface Volador 3class Pajaro 4Volador <|.. Pajaro 5@enduml
3.6 Dependencia
- Indica que una clase usa otra de forma temporal o puntual (parámetros, variables locales, etc.).
1@startuml 2class ServicioCorreo 3class Notificador 4Notificador ..> ServicioCorreo : usa 5@enduml
🧩 4. Clases Abstractas
Una clase abstracta no se puede instanciar directamente. Sirve como plantilla para otras clases.
1@startuml 2abstract class Figura { 3 +calcularArea(): double 4} 5class Circulo 6Figura <|-- Circulo 7@enduml
🧷 5. Métodos y Atributos Estáticos
Un atributo estático pertenece a la clase, no a sus instancias. Lo mismo con los métodos estáticos. Se representa subrayado el elemento.
1@startuml 2class Matematica { 3 +__PI__: double 4 +__sumar__(a: int, b: int): int 5} 6@enduml
📊 6. Enumeraciones
Las enumeraciones definen un conjunto fijo de valores posibles.
1@startuml 2enum DiaSemana { 3 Lunes 4 Martes 5 Miercoles 6} 7@enduml
📌 7. Multiplicidad y Navegabilidad
La multiplicidad indica cuántas instancias de una clase pueden estar asociadas a otra.
| Notación UML | Significado |
|---|---|
1 | uno |
0..1 | cero o uno |
0..* | cero o muchos |
1..* | uno o muchos |
1@startuml 2class Curso 3class Alumno 4 5Curso "1" --> "0..*" Alumno : inscribe 6@enduml