Pular para o conteúdo principal

Questão de Engenharia de Software — Padrões de Projeto (Engenharia de Software) — VUNESP 2023

Engenharia de SoftwarePadrões de Projeto (Engenharia de Software)
Código
vu196430
Banca
VUNESP
Órgão
Pref Pindamonhangaba
Ano
2023
Cargo
WDes (Pref Pinda)
Assinale a alternativa que apresenta apenas padrões de projeto (design patterns) comportamentais:
  1. AIterator, Object Pool e Composite.
  2. BMediator, Facade e Decorator.
  3. CIterator, Mediator e Template Method.
  4. DPrototype, Decorator e Composite.
  5. EObject Pool, Bridge e Composite.
Revelar gabarito e comentário

GabaritoC — Iterator, Mediator e Template Method.

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 de projeto (Design Patterns) comportamentais

Gabarito: letra C. A alternativa correta é a que apresenta apenas padrões comportamentais: Iterator, Mediator e Template Method — todos pertencentes à família comportamental dos padrões GoF (Gang of Four). As demais alternativas misturam padrões de outras famílias (criacionais e estruturais), como veremos na análise de cada uma.

Os padrões de projeto (design patterns) são soluções gerais e reutilizáveis para problemas recorrentes no projeto de software. Eles foram popularizados pelo livro Design Patterns: Elements of Reusable Object-Oriented Software (1994), escrito por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides — os chamados "Gang of Four" (GoF). O livro cataloga 23 padrões, organizados em três famílias conforme a finalidade:

  • Padrões de Criação (Creational): lidam com o processo de criação de objetos, abstraindo a forma como eles são instanciados. Exemplos: Singleton, Factory Method, Abstract Factory, Builder, Prototype.

  • Padrões Estruturais (Structural): tratam da composição de classes e objetos para formar estruturas maiores, definindo como os objetos se relacionam. Exemplos: Adapter, Decorator, Composite, Facade, Bridge, Proxy, Flyweight.

  • Padrões Comportamentais (Behavioral): focam na comunicação e interação entre objetos, definindo responsabilidades e algoritmos. Exemplos: Iterator, Mediator, Template Method, Observer, Strategy, Command, State, Chain of Responsibility, Visitor, Memento, Interpreter.

A classificação é essencial para resolver questões como esta: a banca mistura padrões de famílias diferentes e espera que o candidato saiba identificar a qual família cada um pertence. A pegadinha clássica é confundir padrões estruturais (como Composite, Decorator, Facade, Bridge) com comportamentais, ou incluir padrões criacionais (como Prototype, Object Pool) no meio.

Vamos analisar cada alternativa, identificando a família de cada padrão listado.

Alternativa A — ❌ Incorreta

A alternativa A traz Iterator, Object Pool e Composite. O Iterator é comportamental, mas o Object Pool é um padrão criacional (gerencia um conjunto de objetos reutilizáveis, controlando sua criação e disponibilização) e o Composite é estrutural (compõe objetos em estruturas de árvore para representar hierarquias parte-todo). Portanto, não são apenas comportamentais.

Alternativa B — ❌ Incorreta

A alternativa B traz Mediator, Facade e Decorator. O Mediator é comportamental, mas o Facade é estrutural (fornece uma interface unificada para um conjunto de interfaces de um subsistema) e o Decorator também é estrutural (adiciona responsabilidades a um objeto dinamicamente). Logo, mistura famílias.

Alternativa C — ✅ Correta ⟵ GABARITO

A alternativa C traz Iterator, Mediator e Template Method. Todos os três são padrões comportamentais:

  • Iterator: fornece uma maneira de acessar sequencialmente os elementos de um objeto agregado sem expor sua representação interna.

  • Mediator: define um objeto que encapsula a interação entre um conjunto de objetos, promovendo baixo acoplamento.

  • Template Method: define o esqueleto de um algoritmo em uma operação, deixando alguns passos para as subclasses.

Portanto, esta é a única alternativa que contém apenas padrões comportamentais.

Alternativa D — ❌ Incorreta

A alternativa D traz Prototype, Decorator e Composite. O Prototype é criacional (cria novos objetos copiando um protótipo existente), enquanto Decorator e Composite são estruturais. Nenhum dos três é comportamental.

Alternativa E — ❌ Incorreta

A alternativa E traz Object Pool, Bridge e Composite. O Object Pool é criacional, o Bridge é estrutural (separa uma abstração de sua implementação) e o Composite é estrutural. Novamente, nenhum comportamental.

NÃO CAIA NESSA!

A banca adora misturar padrões de famílias diferentes para confundir. O candidato que decora apenas os nomes, sem saber a classificação, tende a marcar alternativas com padrões famosos como Composite e Decorator, achando que são comportamentais. Lembre-se: Composite, Decorator, Facade e Bridge são estruturais; Prototype e Object Pool são criacionais; Iterator, Mediator e Template Method são comportamentais. Com treino, você identifica essas trocas de longe 💪.

PEGA ESSA DICA!

Para fixar, monte uma tabela mental com os padrões mais cobrados por família:

Família

Padrões típicos

Criacionais

Singleton, Factory Method, Abstract Factory, Builder, Prototype, Object Pool

Estruturais

Adapter, Decorator, Composite, Facade, Bridge, Proxy, Flyweight

Comportamentais

Iterator, Mediator, Template Method, Observer, Strategy, Command, State, Chain of Responsibility, Visitor, Memento

Na prova, ao ver um padrão, pergunte-se: "ele resolve um problema de criação, de estrutura ou de interação/comportamento?". Essa pergunta resolve a questão.

Gabarito: letra C

Link permanente: /questoes/vu196430