Expert (padrão de projeto de software)
Especialista na Informação (ou Especialista da Informação, ou apenas Especialista, ou ainda seus equivalentes em inglês Information Expert e Expert) é um padrão de projeto de software, parte do conjunto de princípios conhecido como GRASP (General Responsibility Assignment Software Patterns). É uma abordagem genérica que visa atribuir a responsabilidade de fazer ou conhecer algo ao "especialista na informação" — a classe que possui a informação necessária para cumprir tal responsabilidade.[1]
Funcionamento
[editar | editar código-fonte]- Obrigações de fazer algo
- Fazer algo a si mesmo
- Iniciar ações em outros objetos
- Controlar ou coordenar atividades em outros objetos
- Obrigações de conhecer algo
- Conhecer dados encapsulados
- Conhecer objetos relacionados
- Conhecer coisas que se pode calcular
Exemplos
[editar | editar código-fonte]Uma classe Venda possui a informação de uma venda composta por um ou mais itens. Cada item é representado pela classe ItemVendido, que pode ser composta por um objeto da classe Produto (que, por sua vez, possui a informação do seu preço unitário) e a quantidade vendida.
Para calcular o total da venda dos itens, a classe Venda poderia primeiro calcular os subtotais dos itens obtendo os preços unitários da classe Produto por meio da classe ItemVendido e as respectivas quantidades, e por fim somar os subtotais.
Entretanto, segundo o padrão Especialista, a modelagem adequada é passar para a classe ItemVendido a responsabilidade de calcular seus próprios subtotais, uma vez que ela possui (ou pode obter) as informações necessárias. A classe Venda é, por sua vez, a responsável por obter os subtotais dos objetos da classe ItemVendido e somá-los, calculando assim o total da venda.
Portanto, o especialista em informar os preços unitários é a classe Produto, o especialista em calcular os subtotais é a classe ItemVendido e o especialista em calcular o total da venda é a classe Venda.[2]
Referências
- ↑ Craig Larman. Utilizando UML e Padrões. [S.l.]: Bookman Editora. ISBN 9788577800476
- ↑ Jacques Philippe Sauvé. «Padrões Para Atribuir Responsabilidades». Departamento de Sistemas e Computação da Universidade Federal de Campina Grande