Pular para o conteúdo principal

Questão de Engenharia de Software — Orientação a Objetos — INSTITUTO AOCP 2025

Engenharia de SoftwareOrientação a Objetos
Código
qg539712
Banca
INSTITUTO AOCP
Órgão
IF-PB
Ano
2025
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Um analista de tecnologia da informação do IFPB está desenvolvendo um sistema informatizado que será utilizado por diversos setores da instituição. Durante a implementação, ele identifica que há uma classe que deve garantir que apenas uma instância seja criada em toda a aplicação, fornecendo um ponto de acesso global a essa instância.Considerando os padrões de projeto (Design Patterns), é correto afirmar que o padrão criacional utilizado nessa situação foi o
  1. AAdapter.
  2. BDecorator.
  3. CSingleton.
  4. DStrategy.
  5. EObserver
Revelar gabarito e comentário

GabaritoC — Singleton.

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): o padrão Singleton

Gabarito: letra C. O padrão criacional que garante que apenas uma instância de uma classe seja criada em toda a aplicação, fornecendo um ponto de acesso global a essa instância, é o Singleton. Esse é o objetivo central do padrão, conforme a classificação clássica dos 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 não são código pronto, mas sim descrições de como resolver um problema em um determinado contexto. A classificação mais conhecida é a do livro "Design Patterns: Elements of Reusable Object-Oriented Software" (GoF), que divide os padrões em três famílias:

  • Padrões Criacionais (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. Exemplos: Adapter, Decorator, Composite, Facade, Proxy.

  • Padrões Comportamentais (Behavioral): focam na comunicação e interação entre objetos. Exemplos: Observer, Strategy, Command, State, Template Method.

O Singleton é um padrão criacional que garante a existência de uma única instância de uma classe em toda a aplicação e fornece um ponto de acesso global a ela. Isso é útil em situações como conexões de banco de dados, configurações globais, logs, entre outros, onde múltiplas instâncias poderiam causar inconsistências ou desperdício de recursos.

Na prática, o Singleton é implementado com um construtor privado (impedindo a criação direta com new), um atributo estático que guarda a única instância e um método estático (geralmente getInstance()) que retorna essa instância, criando-a na primeira chamada se ainda não existir.

A pegadinha da banca nesta questão é justamente a classificação dos padrões: o candidato pode confundir o Singleton com padrões estruturais ou comportamentais, mas a descrição do enunciado — "garantir que apenas uma instância seja criada" — aponta diretamente para um padrão criacional. As alternativas Adapter, Decorator, Strategy e Observer pertencem a outras famílias, como veremos a seguir.

Guarde a fronteira entre as três famílias: criacional (criação de objetos), estrutural (composição de classes/objetos) e comportamental (interação entre objetos). É exatamente nessa fronteira que as alternativas se dividem.

Alternativa A — ❌ Incorreta

O Adapter é um padrão estrutural que permite que classes com interfaces incompatíveis trabalhem juntas, convertendo a interface de uma classe em outra interface esperada pelo cliente. Ele não tem relação com a criação de uma única instância. A banca o incluiu como distrator por ser um padrão conhecido, mas sua finalidade é completamente diferente.

Alternativa B — ❌ Incorreta

O Decorator também é um padrão estrutural. Ele permite adicionar responsabilidades a um objeto dinamicamente, envolvendo-o em um objeto decorador que fornece funcionalidades extras. Não se trata de controlar a criação de instâncias, mas sim de estender comportamentos.

Alternativa C — ✅ Correta ⟵ GABARITO

O Singleton é o padrão criacional que garante a existência de uma única instância de uma classe em toda a aplicação, fornecendo um ponto de acesso global a ela. A descrição do enunciado — "garantir que apenas uma instância seja criada em toda a aplicação, fornecendo um ponto de acesso global" — é exatamente a definição do Singleton. É a alternativa correta.

Alternativa D — ❌ Incorreta

O Strategy é um padrão comportamental que permite definir uma família de algoritmos, encapsulá-los e torná-los intercambiáveis. Ele permite que o algoritmo varie independentemente dos clientes que o utilizam. Não tem relação com a criação de uma única instância.

Alternativa E — ❌ Incorreta

O Observer é um padrão comportamental que define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente. Não se trata de controle de instanciação.

NÃO CAIA NESSA!

A banca tenta confundir o candidato misturando padrões de famílias diferentes. A palavra-chave é "criacional": o Singleton é o único padrão da lista que trata da criação de objetos. Se você memorizar a família de cada padrão, elimina as alternativas erradas rapidamente. 💪

PEGA ESSA DICA!

Para questões de design patterns, monte uma tabela mental com as três famílias e seus principais exemplos. Isso ajuda a identificar rapidamente a qual família o padrão pertence e a responder com segurança.

Gabarito: letra C

Link permanente: /questoes/qg539712