Pular para o conteúdo principal

Questão de Programação — Conceitos básicos de programação — FGV 2024

ProgramaçãoConceitos básicos de programação
Código
fg098528
Banca
FGV
Órgão
TJ-MS
Ano
2024
Nível
Superior
Cargo
Técnico de Nível Superior - Analista de Sistemas Computacionais - Analista de Sistemas
O analista Lucas está desenvolvendo o sistema orientado a objeto JustiSul. Em determinado módulo do JustiSul, o sistema instancia um objeto da classe Terceirizado de forma dinâmica, em tempo de execução, por meio da interface I3rd. A classe Terceirizado pertence a uma biblioteca proprietária externa, de forma que o JustiSul conhece apenas a especificação de I3rd, e não a de Terceirizado. Dentro de outro módulo, o sistema precisa instanciar um segundo objeto Terceirizado. Devido ao alto custo de uma nova inicialização dinâmica, Lucas optou por chamar o método cp3rd do objeto Terceirizado já criado. O cp3rd, declarado em I3rd e implementado na classe Terceirizado, retorna uma nova instância da classe, com um estado idêntico ao do objeto chamador.Ao permitir a criação de novas instâncias pelo método cp3rd de uma instância existente, Terceirizado implementa o padrão de projeto:
  1. Abuilder;
  2. Bsingleton;
  3. Cprototype;
  4. Dfactory method;
  5. Eabstract factory.
Revelar gabarito e comentário

GabaritoC — prototype;

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 Prototype

Gabarito: letra C. O método cp3rd retorna uma nova instância da mesma classe com estado idêntico ao objeto chamador, característica central do padrão Prototype (GoF). O Prototype permite criar novos objetos a partir de um protótipo existente, clonando-o. As demais alternativas não se encaixam: Builder constrói objetos complexos passo a passo; Singleton garante uma única instância; Factory Method e Abstract Factory delegam a criação a fábricas, não a um método no próprio objeto.

Padrão de Projeto

Característica Central

Aplicação no Cenário

Correta?

Builder

Constrói objetos complexos passo a passo

Não há construção passo a passo; apenas clonagem

❌

Singleton

Garante uma única instância da classe

cp3rd cria novas instâncias, oposto ao Singleton

❌

Prototype

Cria novos objetos clonando um protótipo existente

cp3rd retorna nova instância com estado idêntico (clone)

✅

Factory Method

Define interface para criação, delegando a subclasses

Criação não é feita por método do próprio objeto

❌

Abstract Factory

Fornece interface para criar famílias de objetos

Não há criação via método do objeto existente

❌

Alternativa A — ❌ Incorreta

O padrão Builder separa a construção de um objeto complexo de sua representação, permitindo diferentes construções. Não há construção passo a passo via método cp3rd; apenas uma clonagem.

Alternativa B — ❌ Incorreta

O Singleton garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso. O método cp3rd cria novas instâncias, o que é oposto ao Singleton.

Alternativa C — ✅ Correta ⟵ GABARITO

O Prototype especifica os tipos de objetos a serem criados usando uma instância prototípica e cria novos objetos pela cópia desse protótipo. Exatamente o que cp3rd faz: retorna uma nova instância com estado idêntico (clone).

Alternativa D — ❌ Incorreta

Factory Method define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar. A criação não é feita por um método do próprio objeto instanciado.

Alternativa E — ❌ Incorreta

Abstract Factory fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Não há criação via método do objeto existente.

Link permanente: /questoes/fg098528