Pular para o conteúdo principal

Questão de Engenharia de Software — Padrões de Projeto (Engenharia de Software) — CESPE / CEBRASPE 2024

Engenharia de SoftwarePadrões de Projeto (Engenharia de Software)
Código
ce403880
Banca
CESPE / CEBRASPE
Órgão
BACEN
Ano
2024
Cargo
Ana ( )

Julgue o item subsequente, relativo a padrões GoF.


Os padrões abstract factory e facade são, respectivamente, de criação e estrutural, uma vez que o abstract factory fornece uma interface para criação de famílias de objetos relacionados, ao passo que o facade separa a construção de um objeto complexo da sua representação.

  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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ões GoF: Abstract Factory e Facade

Gabarito: Errado (E). A afirmativa está incorreta porque, embora o abstract factory seja corretamente classificado como padrão de criação, o facade é um padrão estrutural, e não de criação. Além disso, a descrição de que o facade "separa a construção de um objeto complexo da sua representação" é a definição do padrão builder, não do facade. A fonte para essa distinção é a literatura clássica de padrões de projeto (GoF).

Os padrões de projeto (design patterns) são soluções gerais e reutilizáveis para problemas recorrentes no desenvolvimento de software. Eles são divididos em três categorias principais: criacionais, que lidam com o processo de criação de objetos; estruturais, que tratam da composição de classes e objetos para formar estruturas maiores; e comportamentais, que focam na comunicação e interação entre objetos. O abstract factory e o facade pertencem a categorias distintas, e a questão tenta confundir o candidato ao atribuir a descrição de um padrão (builder) a outro (facade).

O Abstract Factory é um padrão criacional que fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Ele centraliza a decisão de qual fábrica instanciar, permitindo que o cliente crie objetos de uma família sem conhecer os detalhes de implementação. Por exemplo, em um sistema de interface gráfica, o Abstract Factory pode criar botões e caixas de texto que seguem um mesmo estilo visual (Windows, Mac, Linux), garantindo consistência entre os componentes.

O Facade, por sua vez, é um padrão estrutural que fornece uma interface simplificada para um conjunto de interfaces de um subsistema. Ele não separa a construção de um objeto complexo da sua representação; essa é a função do padrão Builder. O Facade atua como uma fachada que esconde a complexidade do sistema, facilitando o uso pelo cliente. Por exemplo, em um sistema de compras online, o Facade pode encapsular as operações de verificação de estoque, processamento de pagamento e envio de e-mail, oferecendo um único método comprar() para o cliente.

A pegadinha da questão está na troca de definições: o enunciado atribui ao Facade a descrição do Builder. O Builder é um padrão criacional que separa a construção de um objeto complexo da sua representação, permitindo que o mesmo processo de construção crie diferentes representações. Já o Facade é estrutural e visa simplificar a interface de um subsistema. Essa confusão é comum em provas, e o candidato deve estar atento às definições exatas de cada padrão.

Guarde a fronteira entre os padrões: criacionais (Abstract Factory, Builder, Factory Method, Prototype, Singleton) lidam com a criação de objetos; estruturais (Adapter, Composite, Decorator, Facade, Proxy) lidam com a composição de classes e objetos; comportamentais (Observer, Strategy, Command) lidam com a interação entre objetos. É exatamente nessa fronteira que a questão se divide.

Critério

Abstract Factory

Facade

Builder

Categoria GoF

Criacional

Estrutural

Criacional

Função principal

Fornecer interface para criação de famílias de objetos relacionados

Fornecer interface simplificada para um subsistema complexo

Separar a construção de um objeto complexo da sua representação

Descrição no enunciado

Correta

Incorreta (atribuída ao Builder)

—

Item — ❌ Errado

A afirmativa está errada por dois motivos:

  1. Classificação do Facade: O enunciado afirma que o facade é um padrão estrutural, o que está correto. No entanto, a descrição dada para ele ("separa a construção de um objeto complexo da sua representação") é a definição do padrão Builder, que é um padrão criacional, não estrutural.

  2. Descrição do Abstract Factory: A descrição do abstract factory está correta ("fornece uma interface para criação de famílias de objetos relacionados"), mas a questão mistura as definições, tornando o item como um todo incorreto.

A banca explora a confusão entre os padrões Facade e Builder. O Facade fornece uma interface simplificada para um subsistema complexo, enquanto o Builder separa a construção de um objeto complexo da sua representação. O candidato que conhece as definições exatas identifica o erro imediatamente.

NÃO CAIA NESSA!

A banca troca a definição do padrão Builder pela do Facade. O Facade é estrutural e simplifica a interface de um subsistema; o Builder é criacional e separa a construção de um objeto complexo da sua representação. Fique atento a essa troca clássica!

Gabarito: Errado (E).

Link permanente: /questoes/ce403880