Skip to content

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

Notifications You must be signed in to change notification settings

Gwolner/Observer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

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ático
public class WeatherStation {
    public static void main(String[] args) {
        //Instanciando Monitorador
        WeatherData weatherData = new WeatherData();
        
        //Atribuindo o display aos dados da Estação
        CurrentConditionsDisplay ccd
            = new CurrentConditionsDisplay(weatherData);
    
        //Simulando variações de valores na Estação
        weatherData.setMeasurements(80, 65, 30.4f);
        weatherData.setMeasurements(82, 70, 29.2f);
        weatherData.setMeasurements(78, 90, 29.2f);
    }
}
//Saída
Current condition: 80.0Fº degress and 65.0 humididy
Current condition: 82.0Fº degress and 70.0 humididy
Current condition: 78.0Fº degress and 90.0 humididy

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

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages