# luladev/taller-poo-2026 architecture

> Architecture diagram of the GitHub repository luladev/taller-poo-2026, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/luladev/taller-poo-2026
- Repository: https://github.com/luladev/taller-poo-2026

## Overview

This is a Spanish-language meteorological monitoring and response application, operated through a console menu. Users manage the system’s stations and zones, register precipitation readings, issue alerts, and request operational and historical reports. The domain covers sensor readings and anomaly checks, station and maintenance operations, zone-level risk and alert handling, and emergency response teams. The graph focuses on those runtime responsibilities; the README is empty, and unsampled implementation details are not assumed.

Main entry points: [`src/meteorologia/domain/models/ZonaGeografica.java`](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/ZonaGeografica.java) (Geographic Zone), [`src/meteorologia/domain/models/EstacionMeteorologica.java`](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/EstacionMeteorologica.java) (Weather Station), [`src/meteorologia/domain/models/Sensor.java`](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Sensor.java) (Rain Sensor), [`src/meteorologia/Main.java`](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/Main.java) (Menu Workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_main["Menu Workflow<br/>[Main.java]"]
  node_system["System State"]
  node_reports["Reports"]
end

subgraph group_monitoring["Monitoring"]
  node_station["Weather Station"]
  node_sensor["Rain Sensor<br/>[Sensor.java]"]
  node_measurement["Precipitation Reading<br/>[Medicion.java]"]
  node_history["Historical Values"]
  node_invalid_reading["Invalid Reading Error"]
end

subgraph group_risk["Risk Response"]
  node_zone["Geographic Zone"]
  node_alert["Weather Alert<br/>[Alerta.java]"]
  node_response["Response Team"]
end

subgraph group_support["Operations Support"]
  node_maintenance["Maintenance Record<br/>[Mantenimiento.java]"]
  node_technician["Technical Staff"]
  node_person["Person Base<br/>[Persona.java]"]
  node_domain_enums["Domain Enums"]
end

node_operator(("Console User"))

node_operator -->|"uses menu"| node_main
node_main -->|"requests reports"| node_reports
node_main -->|"registers alert"| node_zone
node_main -.->|"uses system"| node_system
node_main -.->|"selects station"| node_station
node_main -.->|"records reading"| node_sensor
node_zone -->|"creates alert"| node_alert
node_zone -->|"stores history"| node_history
node_zone -.->|"manages stations"| node_station
node_zone -.->|"aggregates readings"| node_sensor
node_alert -.->|"assigns team"| node_response
node_response -.->|"includes staff"| node_technician
node_station -->|"installs sensor"| node_sensor
node_station -->|"records maintenance"| node_maintenance
node_sensor -->|"records reading"| node_measurement
node_sensor -->|"throws on range"| node_invalid_reading
node_technician -->|"extends"| node_person
node_technician -.->|"supervises"| node_station
node_technician -->|"records work"| node_maintenance
node_reports -->|"inspects operations"| node_station
node_reports -->|"checks status"| node_sensor
node_reports -->|"summarizes rainfall"| node_measurement
node_reports -->|"compares rainfall"| node_zone
node_reports -->|"reads history"| node_history
node_sensor -.->|"uses status"| node_domain_enums
node_station -.->|"uses classifications"| node_domain_enums
node_zone -.->|"uses risk levels"| node_domain_enums

click node_main "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/Main.java"
click node_system "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/aplication/SistemaMeteorologico.java"
click node_reports "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/aplication/ReporteService.java"
click node_zone "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/ZonaGeografica.java"
click node_alert "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Alerta.java"
click node_response "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/EquipoRespuesta.java"
click node_station "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/EstacionMeteorologica.java"
click node_sensor "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Sensor.java"
click node_measurement "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Medicion.java"
click node_maintenance "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Mantenimiento.java"
click node_technician "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/ResponsableTecnico.java"
click node_person "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Persona.java"
click node_history "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/ValorHistorico.java"
click node_domain_enums "https://github.com/luladev/taller-poo-2026/tree/master/src/meteorologia/domain/enums"
click node_invalid_reading "https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/exception/LecturaInvalidaException.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_system,node_reports,node_operator toneBlue
class node_station,node_sensor,node_measurement,node_history,node_invalid_reading toneAmber
class node_zone,node_alert,node_response toneMint
class node_maintenance,node_technician,node_person,node_domain_enums toneRose
```

## Components

### Application

- [Menu Workflow](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/Main.java): `src/meteorologia/Main.java`
- [System State](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/aplication/SistemaMeteorologico.java): `src/meteorologia/aplication/SistemaMeteorologico.java`
- [Reports](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/aplication/ReporteService.java): `src/meteorologia/aplication/ReporteService.java`

### Monitoring

- [Weather Station](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/EstacionMeteorologica.java): `src/meteorologia/domain/models/EstacionMeteorologica.java`
- [Rain Sensor](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Sensor.java): `src/meteorologia/domain/models/Sensor.java`
- [Precipitation Reading](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Medicion.java): `src/meteorologia/domain/models/Medicion.java`
- [Historical Values](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/ValorHistorico.java): `src/meteorologia/domain/models/ValorHistorico.java`
- [Invalid Reading Error](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/exception/LecturaInvalidaException.java): `src/meteorologia/exception/LecturaInvalidaException.java`

### Risk Response

- [Geographic Zone](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/ZonaGeografica.java): `src/meteorologia/domain/models/ZonaGeografica.java`
- [Weather Alert](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Alerta.java): `src/meteorologia/domain/models/Alerta.java`
- [Response Team](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/EquipoRespuesta.java): `src/meteorologia/domain/models/EquipoRespuesta.java`

### Operations Support

- [Maintenance Record](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Mantenimiento.java): `src/meteorologia/domain/models/Mantenimiento.java`
- [Technical Staff](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/ResponsableTecnico.java): `src/meteorologia/domain/models/ResponsableTecnico.java`
- [Person Base](https://github.com/luladev/taller-poo-2026/blob/master/src/meteorologia/domain/models/Persona.java): `src/meteorologia/domain/models/Persona.java`
- [Domain Enums](https://github.com/luladev/taller-poo-2026/tree/master/src/meteorologia/domain/enums): `src/meteorologia/domain/enums`

### Other components

- **Console User**

## Connections

- Console User → Menu Workflow: uses menu
- Menu Workflow → Reports: requests reports (evidence: `src/meteorologia/Main.java`)
- Menu Workflow → Geographic Zone: registers alert (evidence: `src/meteorologia/Main.java`)
- Menu Workflow → System State: uses system (evidence: `src/meteorologia/Main.java`)
- Menu Workflow → Weather Station: selects station (evidence: `src/meteorologia/Main.java`)
- Menu Workflow → Rain Sensor: records reading (evidence: `src/meteorologia/Main.java`)
- Geographic Zone → Weather Alert: creates alert (evidence: `src/meteorologia/domain/models/ZonaGeografica.java`)
- Geographic Zone → Historical Values: stores history (evidence: `src/meteorologia/domain/models/ZonaGeografica.java`)
- Geographic Zone → Weather Station: manages stations (evidence: `src/meteorologia/domain/models/ZonaGeografica.java`)
- Geographic Zone → Rain Sensor: aggregates readings (evidence: `src/meteorologia/domain/models/ZonaGeografica.java`)
- Weather Alert → Response Team: assigns team (evidence: `src/meteorologia/domain/models/Alerta.java`)
- Response Team → Technical Staff: includes staff (evidence: `src/meteorologia/domain/models/EquipoRespuesta.java`)
- Weather Station → Rain Sensor: installs sensor (evidence: `src/meteorologia/domain/models/EstacionMeteorologica.java`)
- Weather Station → Maintenance Record: records maintenance (evidence: `src/meteorologia/domain/models/EstacionMeteorologica.java`)
- Rain Sensor → Precipitation Reading: records reading (evidence: `src/meteorologia/domain/models/Sensor.java`)
- Rain Sensor → Invalid Reading Error: throws on range (evidence: `src/meteorologia/domain/models/Sensor.java`)
- Technical Staff → Person Base: extends (evidence: `src/meteorologia/domain/models/ResponsableTecnico.java`)
- Technical Staff → Weather Station: supervises (evidence: `src/meteorologia/domain/models/ResponsableTecnico.java`)
- Technical Staff → Maintenance Record: records work (evidence: `src/meteorologia/domain/models/ResponsableTecnico.java`)
- Reports → Weather Station: inspects operations (evidence: `src/meteorologia/aplication/ReporteService.java`)
- Reports → Rain Sensor: checks status (evidence: `src/meteorologia/aplication/ReporteService.java`)
- Reports → Precipitation Reading: summarizes rainfall (evidence: `src/meteorologia/aplication/ReporteService.java`)
- Reports → Geographic Zone: compares rainfall (evidence: `src/meteorologia/aplication/ReporteService.java`)
- Reports → Historical Values: reads history (evidence: `src/meteorologia/aplication/ReporteService.java`)
- Rain Sensor → Domain Enums: uses status (evidence: `src/meteorologia/domain/models/Sensor.java`)
- Weather Station → Domain Enums: uses classifications (evidence: `src/meteorologia/domain/models/EstacionMeteorologica.java`)
- Geographic Zone → Domain Enums: uses risk levels (evidence: `src/meteorologia/domain/models/ZonaGeografica.java`)
