
En C++, una clase es un plano o plantilla para crear objetos. Define las características y comportamientos que tendrán esos objetos. Piensa en ella como un molde para galletas: el molde es la clase y las galletas son los objetos creados a partir de ese molde. Una clase encapsula datos (atributos) y funciones (métodos) que operan sobre esos datos.
Declaración de una Clase
La declaración de una clase se realiza utilizando la palabra clave class. La sintaxis general es: class NombreDeLaClase { /* miembros */ };. Es importante el punto y coma (;) al final de la definición de la clase. El NombreDeLaClase debe ser un identificador válido.
Dentro de las llaves {}, se definen los miembros de la clase. Estos miembros pueden ser variables (atributos) o funciones (métodos). Los atributos representan los datos que describen un objeto de esa clase. Los métodos definen las acciones que un objeto puede realizar.
Must Read
Miembros de una Clase
Los miembros de una clase se clasifican según su accesibilidad. Esta accesibilidad determina quién puede acceder a ellos. Los tres tipos principales de accesibilidad son: public, private y protected.
public: Los miembros públicos son accesibles desde cualquier parte del código.private: Los miembros privados solo son accesibles desde dentro de la propia clase. Este es el nivel de acceso por defecto si no se especifica ninguno.protected: Los miembros protegidos son accesibles desde la propia clase y desde las clases derivadas (herencia).
Por ejemplo: class Coche { public: string marca; void acelerar(); private: int velocidad; };. En este caso, marca y acelerar() son públicos, mientras que velocidad es privado.

Atributos (Variables Miembro)
Los atributos son las variables que almacenan el estado de un objeto. Se declaran dentro de la clase como cualquier otra variable. El tipo de dato de un atributo determina qué tipo de información puede almacenar. Por ejemplo: int edad;, string nombre;, float precio;.
Es buena práctica declarar los atributos como private. Esto asegura que los datos solo se modifiquen a través de los métodos de la clase, lo que permite un mayor control y encapsulamiento. Se usan métodos getter y setter para acceder y modificar los atributos privados.

Métodos (Funciones Miembro)
Los métodos son las funciones que definen el comportamiento de un objeto. Pueden acceder y modificar los atributos del objeto. Se declaran dentro de la clase como cualquier otra función. Por ejemplo: void mostrarInformacion();, int obtenerEdad();, void establecerNombre(string nuevoNombre);.
Un método especial es el constructor. Es un método que se llama automáticamente cuando se crea un objeto de la clase. Se utiliza para inicializar los atributos del objeto. El constructor tiene el mismo nombre que la clase y no tiene tipo de retorno. Si no se define un constructor, el compilador proporciona uno por defecto.
Por ejemplo: Coche() { velocidad = 0; } es un constructor que inicializa la velocidad del coche a 0.

Ejemplo Completo
Aquí hay un ejemplo más completo de una clase en C++:
class Rectangulo {
public:
Rectangulo(int ancho, int alto); // Constructor
int calcularArea();
void mostrarDimensiones();
private:
int ancho;
int alto;
};
Rectangulo::Rectangulo(int ancho, int alto) {
this->ancho = ancho;
this->alto = alto;
}
int Rectangulo::calcularArea() {
return ancho * alto;
}
void Rectangulo::mostrarDimensiones() {
cout << "Ancho: " << ancho << endl;
cout << "Alto: " << alto << endl;
}
Este código define una clase llamada Rectangulo. Tiene atributos privados para ancho y alto y métodos públicos para calcularArea() y mostrarDimensiones(). El constructor Rectangulo(int ancho, int alto) inicializa los atributos al crear un nuevo objeto Rectangulo.

Aplicaciones Reales
Las clases son fundamentales en la programación orientada a objetos (POO). Se utilizan para modelar entidades del mundo real. Por ejemplo, en un programa de gestión de una biblioteca, se pueden tener clases para Libro, Autor y Usuario. Cada clase encapsula la información y el comportamiento asociado a esas entidades.
En un juego, se pueden tener clases para Personaje, Enemigo y Objeto. Cada clase define los atributos (salud, fuerza, posición) y los métodos (atacar, moverse, interactuar) que caracterizan a esos elementos del juego.
Dominar la estructura de una clase es crucial para escribir código C++ bien organizado y reutilizable. Las clases permiten crear abstracciones poderosas y simplificar el desarrollo de software complejo.