Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FCC 2017

Arquitetura de SoftwarePadrões de projeto (Design Patterns)
Código
fc035589
Banca
FCC
Órgão
ARTESP
Ano
2017
Nível
Médio
Cargo
Agente de Fiscalização à Regulação de Transporte - Tecnologia de Informação
Suponha que em uma organização existe um conjunto de cargos e para cada cargo existem regras de cálculo da taxa de produtividade, cujo valor é determinado por uma porcentagem do salário base do funcionário. Este valor é acrescido ao salário do funcionário como um bônus. Um desenvolvedor deve criar uma solução que utilize um design pattern (padrão de projeto) cuja intenção é: “definir uma família de algoritmos, encapsular cada uma delas e torná-las intercambiáveis. O padrão de projeto permite que o algoritmo varie independentemente dos clientes que o utilizam”. Ou seja, o padrão sugere que algoritmos parecidos (métodos de cálculo da taxa de produtividade) sejam separados de quem os utiliza (funcionário). O padrão, além de encapsular os algoritmos da mesma família, também permite a reutilização do código. Nesta situação, caso a regra para cálculo da taxa de produtividade de dois tipos de funcionários, como Desenvolvedor e DBA, seja a mesma, não é necessário escrever código extra. Caso seja necessário incluir um novo cargo, basta implementar sua estratégia de cálculo da taxa ou reutilizar outra similar. Nenhuma outra parte do código precisa ser alterada.O design pattern mencionado na situação apresentada é
  1. AAbstract Method.
  2. BBuilder.
  3. CPrototype.
  4. DStrategy.
  5. ESingleton.
Revelar gabarito e comentário

GabaritoD — Strategy.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Padrão de Projeto Strategy

Gabarito: letra D. A descrição apresentada corresponde exatamente ao padrão Strategy, que tem como intenção "definir uma família de algoritmos, encapsular cada uma delas e torná-las intercambiáveis. O padrão de projeto permite que o algoritmo varie independentemente dos clientes que o utilizam". No cenário, os diferentes cálculos de taxa de produtividade representam algoritmos intercambiáveis, e o funcionário é o cliente que os utiliza.

Padrão de Projeto

Categoria (GoF)

Intenção Principal

Aplicação no Cenário

Strategy

Comportamental

Definir uma família de algoritmos, encapsulá-los e torná-los intercambiáveis

Cálculos de produtividade como algoritmos intercambiáveis; funcionário como cliente

Abstract Method

— (não é padrão GoF)

Não se aplica

Não é um padrão reconhecido; confunde-se com Template Method

Builder

Criacional

Construir objetos complexos passo a passo

Não se aplica a algoritmos intercambiáveis

Prototype

Criacional

Criar novos objetos a partir de um protótipo

Não se aplica a algoritmos

Singleton

Criacional

Garantir uma única instância de uma classe

Não se aplica a algoritmos intercambiáveis

Padrões GoF
  • 1Comportamentais
    • Strategy
      • Família de algoritmos
      • Encapsulamento
      • Intercambiáveis
    • Template Method
      • Esqueleto de algoritmo
  • 2Criacionais
    • Builder
      • Objeto complexo passo a passo
    • Prototype
      • Cópia a partir de protótipo
    • Singleton
      • Única instância
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Abstract Method não é um padrão de projeto GoF reconhecido. O padrão que define um esqueleto de algoritmo é o Template Method, que também é comportamental, mas não tem o foco em intercambiabilidade de algoritmos como o Strategy.

Alternativa B — ❌ Incorreta

Builder é um padrão criacional, usado para construir objetos complexos passo a passo. Não se aplica a algoritmos intercambiáveis.

Alternativa C — ❌ Incorreta

Prototype é um padrão criacional que cria novos objetos a partir de um protótipo, não tem relação com algoritmos.

Alternativa D — ✅ Correta

Strategy permite definir uma família de algoritmos (cálculos de produtividade), encapsulá-los e torná-los intercambiáveis. O cliente (funcionário) pode usar diferentes estratégias sem conhecer os detalhes de implementação, promovendo reutilização e facilidade de extensão.

Alternativa E — ❌ Incorreta

Singleton é um padrão criacional que garante uma única instância de uma classe. Não tem relação com algoritmos intercambiáveis.

Gabarito: letra D.

Link permanente: /questoes/fc035589