UML Generados
Se tratan de diagramas basados en los recursos cargados (No deben de tomarse en cuenta para diseño final)
Diagramas de caso de uso
left to right direction
skinparam packageStyle rectangle
actor "Usuario Anónimo" as user
rectangle "HayPlan! - Cartelera de Espectáculos" {
usecase "Visualizar Catálogo de Actividades" as UC1
usecase "Ver Detalle de Actividad" as UC2
usecase "Filtrar Cartelera (gratis/zona/horario)" as UC3
usecase "Configurar Preferencias (categorías favoritas)" as UC4
usecase "Explorar 'MicroAventuras' / '¿Qué hago ahora?'" as UC5
usecase "Consultar Mapa de Lugar" as UC6
usecase "Guardar Preferencias Locally" as UC7
}
user --> UC1
user --> UC4
user --> UC5
UC1 ..> UC2 : <<include>>
UC1 <.. UC3 : <<extend>>
UC2 ..> UC6 : <<include>>
UC4 ..> UC7 : <<include>>
UC5 ..> UC2 : <<include>>
note right of UC7
Almacenado en
localStorage
del navegador.
end note
@enduml
Diagrama de Clases (Modelo de dominio / Estatico)
@startuml
skinparam classAttributeIconSize 0
class Actividad {
- id : String
- nombre : String
- descripcion : String
- horario : String
- lugar_nombre : String
- costo_detallado : String
- latitud : Float
- longitud : Float
- imagenUrl : String
+ obtenerFichaCompleta() : Actividad
+ esAbiertoAhora() : Boolean
+ esGratis() : Boolean
}
class Categoria {
- id : String
- nombre : String
- iconoUrl : String
}
class MicroAventura {
- duracionEstimadaMin : Integer
- nivelDificultad : String
+ obtenerDetallesMicro() : MicroAventura
}
Actividad <|-- MicroAventura
Actividad "*" -- "1..*" Categoria : pertenece a
note right of Actividad
Detalles mínimos exigidos:
horario, lugar, costo.
end note
class PreferenciasUsuario {
- categoriasFavoritas : List<String>
- zonaDeInteres : String
- presupuestoMaximo : Float
+ guardarEnLocalStorage() : void
+ cargarDesdeLocalStorage() : PreferenciasUsuario
}
PreferenciasUsuario ..> Categoria : depende de (ids)
PreferenciasUsuario ..> Actividad : usa para filtrar por zona/costo
@enduml
Diagrama de actvidad
@startuml
start
:Usuario carga la cartelera inicial;
:Sistema lee 'preferencias' del localStorage;
if (¿Existen preferencias guardadas?) then (Sí)
:Filtrar actividades por categorías favoritas;
else (No)
:Cargar cartelera completa (por defecto);
endif
:Mostrar Cartelera Actual;
repeat
:Usuario abre panel de filtros;
:Usuario selecciona 'Abierto Ahora' = Sí;
:Usuario selecciona Categoría = 'Cine';
:Aplicar Filtros Combinados;
if (¿Existen actividades que coincidan?) then (Sí)
:Generar lista de resultados filtrados;
else (No)
:Mostrar mensaje "No se encontraron planes para este criterio";
:Usuario decide qué hacer;
if (¿Volver a filtrar?) then (Sí)
:Regresar al panel de filtros;
else (No)
:Mostrar Cartelera Principal;
endif
endif
repeat while (Usuario sigue interactuando con filtros)
:Mostrar Resultados Finales;
stop
@enduml