Encapsulamento

O encapsulamento em Programação Orientada a Objetos (POO) em C++ é uma técnica fundamental que consiste em ocultar os detalhes internos de uma classe e expor apenas o que é necessário para o uso externo. Isso é feito principalmente por meio dos modificadores de acesso: private, protected e public.

Por que usar encapsulamento?

  • Protege os dados: impede que atributos sejam alterados diretamente de fora da classe, garantindo a integridade do objeto.
  • Facilita manutenção: mudanças internas não afetam quem usa a classe, desde que a interface pública permaneça igual.
  • Promove modularidade: cada classe controla seu próprio estado e comportamento, tornando o código mais organizado e seguro.

Como implementar encapsulamento em C++?

  1. Declare atributos como private para impedir acesso externo direto.
  2. Forneça métodos públicos (getters e setters) para aceder e modificar os atributos de forma controlada.

Exemplo prático:

#include <iostream>
#include <string>

class Pessoa {
private:
std::string nome;
int idade;

public:
void set_nome(const std::string& nome) {
this->nome = nome;
}

std::string get_nome() const {
return nome;
}

void set_idade(int idade) {
if (idade >= 0) {
this->idade = idade;
}
}

int get_idade() const {
return idade;
}

void apresentar() const {
std::cout << "Nome: " << nome << "\nIdade: " << idade << std::endl;
}
};

int main() {
Pessoa pessoa;
pessoa.set_nome("Joao");
pessoa.set_idade(30);
pessoa.apresentar();
return 0;
}

Neste exemplo, os atributos nome e idade são privados e só podem ser acedidos/modificados por meio dos métodos públicos da classe. Isso garante que o objeto Pessoa mantenha seu estado consistente e protegido contra alterações indevidas.

Resumo dos modificadores de acesso:

  • private: acesso apenas dentro da própria classe.
  • protected: acesso na classe e em suas subclasses.
  • public: acesso livre de qualquer parte do código.

O encapsulamento é um dos pilares da POO e deve ser aplicado sempre que possível para garantir segurança, organização e facilidade de manutenção no código.