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:

persona

🔓 2. Tipos de Visibilidad

SímboloVisibilidadAcceso desde:
+publiccualquier parte del programa
-privatesolo desde dentro de la clase
#protectedclase y subclases
~packageclases 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.
persona_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.
equpo_jugador
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.
casa_habitacion
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.
animal_perro
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.
pajaro
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.).
notificador_servicio
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.

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

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

dia_semana
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 UMLSignificado
1uno
0..1cero o uno
0..*cero o muchos
1..*uno o muchos
curso_alumno_multiplicidad
1@startuml
2class Curso
3class Alumno
4
5Curso "1" --> "0..*" Alumno : inscribe
6@enduml