Clases y objetos

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.

¿Qué es una clase?

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
};

¿Qué es un objeto?

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.

Encapsulación

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.

Beneficios de la encapsulación:

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;

Miembros de clase: atributos y métodos