Observer - EduardoMoreira/Desenho-UnB-2016-01 GitHub Wiki

Versão 1.1

Histórico da Revisão

Data Versão Descrição Autor
29/05/2016 1.0 Criação do documento Ebenezer Andrade e Omar Junior
30/05/2016 1.1 Inserção da parte do diagrama de classe com observer no contexto do FarmManager Ebenezer Andrade

1. Introdução

1.1. Finalidade

Este documento fornece uma visão geral da aplicação do padrão comportamental Observer aplicado no contexto do FarmManager.

1.2. Intenção

A definição de uma dependência de um para muitos entre objetos tal que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente.

1.3. Referência

Este documento possui como referência o livro: Design Patterns: Elements of Reusable Object-Oriented Software para prover de uma definição purista do observer e os trechos de código referente a implementação do padrão.

2. Observer

2.1 Participantes

Subject: Provém de uma interface para vincular e desvincular objetos observer

Observer: Define uma interface de atualização de objetos que devem ser notificados de mudanças em um Subject.

ConcreteSubject: Responsável por armazenar o estado de interesse dos objetos ConcreteObserver; e envia umas notificações ao seu observador quando seu estado é alterado.

ConcreteObserver: Implementa a Observer para manter seu estado consistente com o tema, sendo a referência de um ConcreteSubject.

2.2 Estrutura



3. Aplicabilidade do Observer no FarmManager

3.1 Necessidade

No contexto do FarmManager tem-se a necessidade de verificar se alguma quantidade de grãos (milho ou soja) entraram ou saíram do estoque. Dessa forma, ao serem atualizados tem seu estado modificado. Foi então inventada uma classe com o nome MovimentacaoGrao a qual é observada pelas classes Milho e Soja que terão suas quantidades atualizadas de acordo com que é feito uma movimentação.

3.2 Observer no diagrama de classe

Essa sessão apresenta um corte onde está modelado o observer no diagrama de classes.

3.3 Código

Esta sessão apresenta os link para os códigos de cada participante do padrão.

Subject:

IMovimentacaoGrao

Observer:

Grao

ConcreteSubject:

MovimentacaoGrao

ConcreteObserver:

Milho

Soja