Questão de Engenharia de Software — Orientação a Objetos — FGV 2023
- Código
- fg071490
- Banca
- FGV
- Órgão
- TCE-SP
- Ano
- 2023
- Nível
- Superior
- Cargo
- Agente da Fiscalização - TI
- AInformation Expert;
- BCreator;
- CPure Fabrication;
- DController;
- EPolymorphism.
GabaritoA — Information Expert;
Gabarito: letra A (Information Expert). A situação descrita segue o padrão Information Expert do GRASP: a responsabilidade de calcular o valor total por item é atribuída à classe ItemCesta, que possui a informação necessária (quantidade e preço do produto), e o cálculo do valor total da compra é atribuído à classe Cesta, que possui a lista de itens. Esse padrão recomenda que a responsabilidade seja dada à classe que detém as informações para cumpri-la.
A questão testa o conhecimento dos padrões de atribuição de responsabilidades (GRASP) propostos por Craig Larman. Vamos analisar cada alternativa:
Padrão GRASP | Descrição | Aplicação no Cenário | Correta? |
|---|---|---|---|
Information Expert | Responsabilidade atribuída ao objeto que possui as informações necessárias | ItemCesta (quantidade e preço) calcula subtotal; Cesta (lista de itens) calcula total | ✅ Sim |
Creator | Define quem cria instâncias de objetos | Questão não trata de criação de objetos | ❌ Não |
Pure Fabrication | Cria classe artificial para baixo acoplamento | Classes são do domínio, não fabricações | ❌ Não |
Controller | Recebe e coordena mensagens do sistema | Cálculo de totais não é papel de controller | ❌ Não |
Polymorphism | Usa herança/polimorfismo para variações de comportamento | Não há variação de comportamento por tipo | ❌ Não |
Information Expert. O padrão Information Expert afirma que a responsabilidade deve ser atribuída ao objeto que possui as informações necessárias para executá-la. No cenário, a classe ItemCesta sabe a quantidade e o preço do produto, então é a expert para calcular o subtotal. A classe Cesta possui a coleção de itens, sendo a expert para somar os subtotais. Aplicação clássica do padrão.
Creator. O padrão Creator define quem deve criar instâncias de objetos, tipicamente quando a classe agrega, contém ou usa intensamente os objetos a serem criados. A questão não trata de criação de objetos, mas de cálculo de valores.
Pure Fabrication. Esse padrão recomenda criar uma classe artificial (que não representa um conceito do domínio) para manter baixo acoplamento e alta coesão, quando a solução natural viola esses princípios. No exemplo, as classes Produto, ItemCesta e Cesta são classes do domínio, não fabricações.
Controller. O padrão Controller atribui a responsabilidade de receber e coordenar as mensagens do sistema a uma classe que representa o sistema como um todo ou um cenário de caso de uso. O cálculo de totais não é um papel de controller, é responsabilidade das próprias classes de domínio.
Polymorphism. O padrão Polymorphism usa herança e polimorfismo para tratar variações de comportamento com base no tipo. Não há variação de comportamento por tipo no problema descrito; os cálculos são lineares e não dependem de subtipos.
A banca (FGV) cobrou um conceito fundamental do GRASP, frequentemente explorado em provas de análise e projeto orientado a objetos. Lembre-se: Information Expert coloca a responsabilidade onde está a informação.
Link permanente: /questoes/fg071490