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++?
- Declare atributos como
privatepara impedir acesso externo direto. - 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.
