Pular para o conteúdo principal

Questão de Engenharia de Software — Engenharia de Software Baseada em Componentes (ESBC) — FGV 2024

Engenharia de SoftwareEngenharia de Software Baseada em Componentes (ESBC)
Código
fg085525
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Júnior I - Desenvolvimento de Software para Operação de Satélites
No contexto de Projetos Orientados a Objetos, padrões de projetos são soluções generalizadas para problemas comuns de design de software.Considere uma situação em que um desenvolvedor foi incumbido de elaborar um sistema de criação de documentos de diversos formatos, como Texto, Planilha e Apresentação, a serem definidos com base nos comandos do usuário.Para lidar com esses requisitos, o padrão de design de software mais adequado seria o
  1. ASingleton.
  2. BFactory Method.
  3. CHeritage.
  4. DBuilder.
  5. EStrategy.
Revelar gabarito e comentário

GabaritoB — Factory 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 (GoF) – Criando documentos de diferentes formatos

Gabarito: letra B – Factory Method. O padrão Factory Method é ideal quando uma classe não pode antecipar a classe exata dos objetos que deve criar, delegando a decisão para subclasses. No cenário descrito, o sistema deve criar documentos de vários tipos (Texto, Planilha, Apresentação) conforme o comando do usuário. O Factory Method permite encapsular a lógica de criação, facilitando a adição de novos formatos sem alterar o código existente. Os demais padrões não se aplicam: Singleton garante uma única instância, Builder foca na construção passo a passo de objetos complexos, Strategy define famílias de algoritmos intercambiáveis, e "Heritage" nem é um padrão de projeto.

Padrão

Aplicação no Cenário

Adequação

Motivo

Factory Method

Criação de documentos de diferentes formatos (Texto, Planilha, Apresentação) conforme comando do usuário

✅ Adequado

Permite delegar a criação a subclasses, encapsulando a lógica e facilitando a adição de novos formatos

Singleton

Garantir instância única de uma classe

❌ Inadequado

Não resolve o problema de criar diferentes tipos de documento; restringe a criação a um único objeto

Heritage

Mecanismo de herança em POO

❌ Inadequado

Não é um padrão de projeto GoF; é um conceito de orientação a objetos

Builder

Construção passo a passo de objetos complexos

❌ Inadequado

Mais adequado para construções com múltiplas etapas; não é ideal para criação simples de um tipo específico

Strategy

Definição de famílias de algoritmos intercambiáveis

❌ Inadequado

Foca em comportamentos variáveis, não na criação de objetos

Alternativa A – ❌ Incorreta

Singleton. Este padrão assegura que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela. Não resolve o problema de criar diferentes tipos de documento; ao contrário, restringiria a criação a um único objeto.

Alternativa B – ✅ Correta ⟵ GABARITO

Factory Method. O padrão define uma interface para criar um objeto, mas permite que as subclasses decidam qual classe instanciar. No caso, pode-se ter uma fábrica abstrata DocumentCreator com um método fábrica createDocument(), e subclasses concretas TextCreator, SpreadsheetCreator, PresentationCreator que instanciam os respectivos documentos. Isso encapsula a lógica de criação e facilita a extensão com novos tipos.

Alternativa C – ❌ Incorreta

Heritage. "Heritage" (herança) não é um padrão de projeto GoF. A herança é um mecanismo de orientação a objetos, mas não constitui uma solução geral para o problema de criação de famílias de objetos.

Alternativa D – ❌ Incorreta

Builder. O padrão Builder separa a construção de um objeto complexo de sua representação, permitindo que o mesmo processo de construção crie diferentes representações. Embora possa ser usado para criar documentos, ele é mais adequado quando a construção envolve múltiplas etapas e variações na ordem ou composição. Para o problema simples de criar um documento de um tipo específico (escolhido pelo usuário), o Factory Method é mais direto e leve.

Alternativa E – ❌ Incorreta

Strategy. O padrão Strategy define uma família de algoritmos, encapsula cada um e os torna intercambiáveis. É usado para variar comportamentos, não para criação de objetos. A criação de documentos não é um algoritmo a ser selecionado em tempo de execução, mas sim a definição de qual objeto concreto instanciar.

NÃO CAIA NESSA!

A banca pode levar o candidato a confundir Factory Method com Builder ou Strategy. Lembre-se: Factory Method foca na criação de objetos de diferentes tipos com base em uma decisão; Builder lida com construção passo a passo de um objeto complexo; Strategy trata da seleção de algoritmos comportamentais. No cenário de "criar documentos de diferentes formatos conforme comando do usuário", a criação simples de um objeto de uma classe (sem necessidade de construção complexa) aponta claramente para Factory Method.

Gabarito: letra B – Factory Method.

Link permanente: /questoes/fg085525