La encapsulación es un principio fundamental de la programación orientada a objetos (OOP) que permite proteger los datos y controlar su acceso. En C++, se logra mediante el uso de clases, definiendo los datos como privados (private) y proporcionando métodos públicos (public) para interactuar con ellos. Esto asegura que los datos no sean manipulados directamente, fomentando la seguridad y la modularidad del código.
La encapsulación consiste en agrupar datos y métodos en una sola entidad (clase), restringiendo el acceso directo a los datos internos. En C++, puedes utilizar los modificadores de acceso private
, protected
y public
para definir qué elementos son accesibles desde fuera de la clase.
1. Seguridad de los datos: Protege los datos sensibles de modificaciones no deseadas.
2. Modularidad: Permite actualizar y mantener el código de forma más eficiente.
3. Control: Define cómo interactúan otras partes del programa con los datos internos.
#include <iostream>
#include <string>
class Persona {
private:
std::string nombre;
int edad;
public:
// Setter para asignar valores
void setDatos(const std::string& nuevoNombre, int nuevaEdad) {
nombre = nuevoNombre;
edad = nuevaEdad;
}
// Getter para obtener valores
void mostrarDatos() const {
std::cout << "Nombre: " << nombre << "\nEdad: " << edad << std::endl;
}
};
int main() {
Persona persona1;
persona1.setDatos("Juan", 25);
persona1.mostrarDatos();
return 0;
}
nombre
y edad
no pueden ser accedidas directamente fuera de la clase.
setDatos
y mostrarDatos
permiten modificar y leer los valores, respectivamente.
Modificador | Descripción |
---|---|
private
|
Los miembros solo son accesibles dentro de la misma clase. |
protected
|
Los miembros son accesibles dentro de la clase y las clases derivadas. |
public
|
Los miembros son accesibles desde cualquier parte del programa. |
class CuentaBancaria {
private:
double saldo;
public:
CuentaBancaria() : saldo(0) {}
void depositar(double cantidad) {
if (cantidad > 0) {
saldo += cantidad;
} else {
std::cout << "Cantidad inválida.\n";
}
}
void mostrarSaldo() const {
std::cout << "Saldo: " << saldo << std::endl;
}
};
protected
class Base {
protected:
int valorProtegido;
};
class Derivada : public Base {
public:
void setValor(int valor) {
valorProtegido = valor;
}
};
Para más información sobre encapsulación en C++, puedes visitar la documentación oficial de C++.
Jorge García
Fullstack developer