Pular para o conteúdo principal

Questão de Programação — Programação Orientada a Objetos — INSTITUTO AOCP 2024

ProgramaçãoProgramação Orientada a Objetos
Código
qg262668
Banca
INSTITUTO AOCP
Órgão
SANEPAR
Ano
2024
Nível
Médio
Cargo
Técnico Profissional - Técnico em Informática
Programação Orientada a Objetos (POO) é um paradigma que utiliza o conceito de “objetos” para estruturar e organizar o código, promovendo modularidade, reutilização e manutenção mais fácil. A prática de ocultar os detalhes internos do funcionamento de um objeto e expor apenas o que é necessário para a interação com ele, garantindo uma interface limpa e protegida, refere-se a um dos conceitos fundamentais da POO denominado
  1. Apolimorfismo.
  2. Babstração.
  3. Ccomposição.
  4. Dherança.
  5. Eencapsulamento.
Revelar gabarito e comentário

GabaritoE — encapsulamento.

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”.

Encapsulamento na Programação Orientada a Objetos

Gabarito: letra E. O conceito descrito no enunciado — ocultar os detalhes internos de funcionamento de um objeto e expor apenas o necessário para a interação, garantindo uma interface limpa e protegida — é exatamente o encapsulamento, um dos quatro pilares fundamentais da POO. Os demais pilares (abstração, herança e polimorfismo) tratam de aspectos diferentes do paradigma, como veremos a seguir.

O encapsulamento é um dos pilares da Programação Orientada a Objetos. Ele consiste em esconder os detalhes internos de um objeto — seus atributos e a implementação de seus métodos — e expor apenas uma interface pública para que outros objetos possam interagir com ele. Isso é feito, na prática, declarando os atributos como privados (private) e fornecendo métodos públicos de acesso, como os famosos getters e setters. O objetivo é proteger a integridade dos dados e evitar que o estado interno do objeto seja modificado de forma inadequada ou imprevisível.

A razão de ser do encapsulamento é a segurança e a manutenibilidade. Ao esconder a implementação, o objeto controla como seus dados são acessados e modificados, podendo validar entradas, impedir estados inválidos e mudar sua implementação interna sem quebrar o código que o utiliza. Isso promove o baixo acoplamento entre as classes e facilita a evolução do software. Por exemplo, imagine uma classe ContaBancaria com um atributo saldo privado. O método depositar(double valor) pode validar se o valor é positivo antes de alterar o saldo, garantindo que o objeto nunca fique em um estado inconsistente.

É importante distinguir o encapsulamento dos outros pilares da POO, pois a banca frequentemente explora essa confusão. A abstração é o processo de modelar um objeto do mundo real focando apenas nas características essenciais para o sistema, ignorando detalhes irrelevantes. A herança é o mecanismo que permite que uma classe (subclasse) reutilize atributos e métodos de outra classe (superclasse), estabelecendo uma hierarquia. O polimorfismo é a capacidade de um mesmo método ter comportamentos diferentes em classes distintas, ou de uma referência de superclasse apontar para um objeto de uma subclasse. A composição é um tipo de relacionamento entre classes onde uma classe contém instâncias de outras, representando uma relação "tem-um".

A pegadinha desta questão está em confundir encapsulamento com abstração. Embora ambos envolvam a ideia de "esconder" algo, o foco é diferente: a abstração esconde a complexidade do mundo real, modelando apenas o que importa; o encapsulamento esconde a implementação interna do objeto, protegendo seus dados. O enunciado fala explicitamente em "ocultar os detalhes internos do funcionamento" e "garantir uma interface limpa e protegida", o que aponta diretamente para o encapsulamento. Guarde essa fronteira: é nela que as alternativas se dividem.

1Encapsulamento
Oculta detalhes internos
Interface limpa e protegida
Atributos privados + getters/setters
2Abstração
Modela o essencial
Ignora detalhes irrelevantes
3Herança
Reutiliza código
Hierarquia superclasse/subclasse
4Polimorfismo
Um método, muitas formas
Sobrescrita (override)
Sobrecarga (overload)
5Composição
Relação "tem-um"
Classe contém instâncias de outras
Pilares da POO
LEVELsoulevel.com.br
Pilares da POO: Encapsulamento (Oculta detalhes internos, Interface limpa e protegida, Atributos privados + getters/setters); Abstração (Modela o essencial, Ignora detalhes irrelevantes); Herança (Reutiliza código, Hierarquia superclasse/subclasse); Polimorfismo (Um método, muitas formas, Sobrescrita (override), Sobrecarga (overload)); Composição (Relação "tem-um", Classe contém instâncias de outras)

Alternativa A — ❌ Incorreta

O polimorfismo é a capacidade de um objeto assumir "muitas formas". Na prática, permite que um mesmo método tenha comportamentos diferentes em classes distintas (sobrescrita/override) ou que métodos com o mesmo nome, mas assinaturas diferentes, coexistam (sobrecarga/overload). O enunciado não fala em comportamentos variados, mas em ocultar detalhes internos — conceito que não se relaciona com o polimorfismo.

Alternativa B — ❌ Incorreta

A abstração é o pilar que consiste em modelar um objeto do mundo real focando apenas nas suas principais propriedades e comportamentos, ignorando detalhes irrelevantes para o sistema. Embora também envolva a ideia de "esconder" complexidade, o foco está na modelagem conceitual, não na proteção da interface do objeto. O enunciado fala em "ocultar os detalhes internos do funcionamento" e "garantir uma interface limpa e protegida", o que é característica do encapsulamento, não da abstração.

Alternativa C — ❌ Incorreta

A composição é um tipo de relacionamento entre classes onde uma classe contém instâncias de outras classes, representando uma relação "tem-um" (por exemplo, um carro tem um motor). É um conceito de estruturação de objetos, não um mecanismo de ocultação de detalhes internos. O enunciado descreve a prática de esconder a implementação, que é o encapsulamento.

Alternativa D — ❌ Incorreta

A herança é o mecanismo que permite que uma classe (subclasse) herde atributos e métodos de outra classe (superclasse), promovendo a reutilização de código e estabelecendo uma hierarquia de classes. O enunciado não menciona hierarquia ou reutilização, mas sim a ocultação de detalhes internos — conceito que define o encapsulamento.

Alternativa E — ✅ Correta ⟵ GABARITO

O encapsulamento é exatamente o pilar que "oculta os detalhes internos do funcionamento de um objeto e expõe apenas o que é necessário para a interação com ele, garantindo uma interface limpa e protegida". Na prática, isso é implementado declarando os atributos como privados e fornecendo métodos públicos de acesso (getters e setters), ou métodos que encapsulam a lógica de negócio. O termo "encapsular" significa literalmente "colocar em uma cápsula", protegendo o conteúdo interno. A alternativa espelha perfeitamente a definição do conceito.

NÃO CAIA NESSA!

A banca explora a confusão entre abstração e encapsulamento. Ambos envolvem "esconder" algo, mas a abstração esconde a complexidade do mundo real (modelando apenas o essencial), enquanto o encapsulamento esconde a implementação interna do objeto (protegendo seus dados). O enunciado fala em "ocultar os detalhes internos do funcionamento" e "interface limpa e protegida" — palavras-chave que apontam diretamente para o encapsulamento. Com treino, você enxerga essa distinção de longe 💪.

PEGA ESSA DICA!

Para diferenciar os pilares da POO, foque na palavra-chave de cada um: abstração = modelar o essencial; encapsulamento = esconder a implementação e proteger os dados; herança = reutilizar código via hierarquia; polimorfismo = um método, muitas formas. Se a questão falar em "interface limpa e protegida" ou "ocultar detalhes internos", a resposta é encapsulamento.

Gabarito: letra E

Link permanente: /questoes/qg262668