Questão de Engenharia de Software — Engenharia de Software Baseada em Componentes (ESBC) — FGV 2024
Engenharia de Software›Engenharia 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
ASingleton.
BFactory Method.
CHeritage.
DBuilder.
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.