La Programación Orientada a Objetos (POO) es un paradigma que utiliza objetos y clases para modelar entidades del mundo real y sus interacciones. En C++, la POO permite crear programas más organizados, modulares y fáciles de mantener.
Una clase es un molde o plantilla que define atributos (datos) y métodos (funciones) comunes a un conjunto de objetos. En esencia, una clase describe las propiedades y comportamientos que tendrán los objetos creados a partir de ella.
Sintaxis básica de una clase:
class NombreClase {
public:
// Atributos y métodos públicos
private:
// Atributos y métodos privados
};
Un objeto es una instancia de una clase. Representa una entidad concreta que posee los atributos y métodos definidos en su clase.
Ejemplo:
Supongamos que queremos modelar un Coche:
class Coche {
public:
std::string marca;
std::string modelo;
int año;
void acelerar() {
std::cout << "El coche está acelerando." << std::endl;
}
void frenar() {
std::cout << "El coche está frenando." << std::endl;
}
};
// Creación de un objeto
Coche miCoche;
miCoche.marca = "Toyota";
miCoche.modelo = "Corolla";
miCoche.año = 2020;
miCoche.acelerar(); // Salida: El coche está acelerando.
La encapsulación es el principio que consiste en ocultar los detalles internos de una clase y exponer solo lo necesario a través de una interfaz pública. Esto se logra mediante los modificadores de acceso public, private y protected.
Ejemplo de encapsulación:
class Persona {
private:
std::string nombre;
int edad;
public:
void setNombre(const std::string& nuevoNombre) {
nombre = nuevoNombre;
}
std::string getNombre() const {
return nombre;
}
void setEdad(int nuevaEdad) {
if (nuevaEdad >= 0) {
edad = nuevaEdad;
}
}
int getEdad() const {
return edad;
}
};
// Uso de la clase
Persona persona1;
persona1.setNombre("Carlos");
persona1.setEdad(30);
std::cout << "Nombre: " << persona1.getNombre() << std::endl;
std::cout << "Edad: " << persona1.getEdad() << std::endl;