Skip to content

Latest commit

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Weather Monitoring - Monitorador climático

Estação climática que simula o fornecimento de dados atmosféricos para as telas de monitoramento sempre que estes dados sofrem alterações.

Problema

A estação registra os valores para temperatura, umidade e pressão atmosférica e precisa enviá-los para o monitorador. Quando qualquer uma dessas grandezas variar, o novo valor registrado pela estação deverá ser enviado ao monitorador climático para que este possa tratá-los conforme necessário e exibir nas telas apropriadas.

A grande questão é manter todas as telas atualizadas com estas variações, sem precisar realizar consultas constantes à estação climática. Para isto, o padrão Observer é usado neste projeto.

Monitorador

O monitorador é composto por três telas (displays) principais, podendo ser expansível caso necessário.

Cada display possui uma finalidade: Condições atuais exibe temperatura, umidade e pressão conforme registrado na estação climática, Condições futuras exibe uma previsão do tempo com base na pressão e um índice específico e Status meteorológico exibe as temperaturas média, mínima e máxima.

Para uma nova tela ser adicionada no monitorador, basta que sua classe implemente a interface DisplayElement.

GoF Observer

Para permitir que cada display fosse atualizado com os novos valores foi utilizado o padrão comportamental Observer, um dos tipos de Padrões de Projetos conhecido como GoF (Gang of Four). Com ele é possível que uma classe (chamada de Subject) envie informações para várias outras classes (chamadas de Observer) e, sempre que essas informações sofrerem modificações, envie a nova informação para cada Observer.

Assim, cada Observer se mantem atualizado da informação fornecido pelo Subject a medida que ela for sendo alterada (Como no exemplo, a cada variação de temperatura, pressão ou umidade, as telas do monitorador são atualziadas).

//Estação de Monitoramento ClimáticopublicclassWeatherStation {
publicstaticvoidmain(String[] args) {
//Instanciando MonitoradorWeatherDataweatherData = newWeatherData();
//Atribuindo o display aos dados da EstaçãoCurrentConditionsDisplayccd
= newCurrentConditionsDisplay(weatherData);
//Simulando variações de valores na EstaçãoweatherData.setMeasurements(80, 65, 30.4f);
weatherData.setMeasurements(82, 70, 29.2f);
weatherData.setMeasurements(78, 90, 29.2f);
}
}
//SaídaCurrentcondition: 80.0Fºdegressand65.0humididyCurrentcondition: 82.0Fºdegressand70.0humididyCurrentcondition: 78.0Fºdegressand90.0humididy

Ideia do projeto

A estação climática e seu monitorador foram inspirados no exemplo-problema abordado no livro "Use a Cabeça! Padrões de Projetos", 2ª edição revisada da Editora Alta Books.

About

Monitorador climático que utiliza o Padrão de Projeto (Design Patterns) Observer. ☔

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages