En C++ una CLASE es una tipo de dato que agrupa datos y funciones bajo un solo nombre y que representa un concepto o entidad del mundo real.
Las clases proporcionan una plantilla para crear instancias de la clase. Cada instancia tiene su propio estado *(almacenado en campos) y comportamiento (definido en métodos).
Las clases nos permiten encapsular datos y funcionalidades relacionadas, lo que facilita la reutilización de código y el mantenimiento de nuestras aplicaciones. Son la base de la programación orientada a objetos.
Si quieres aprender más sobre Objetos, Clases e Instancias
consulta el Curso de Programación Orientada a Objetos leer más
Clases en C++
La sintaxis básica para definir una clase en C++ es la siguiente:
class NombreDeLaClase
{
public:
// Definición de campos
TipoDeDato nombreDelCampo;
// Definición de propiedades (métodos de acceso)
TipoDeDato getNombreDeLaPropiedad() const;
void setNombreDeLaPropiedad(TipoDeDato valor);
// Definición de métodos
TipoDeRetorno nombreDelMetodo(Parametros);
};- NombreDeLaClase: Es el nombre de la clase, que debe ser único.
- TipoDeDato: Es el tipo de datos de los campos y propiedades.
- nombreDelCampo: Es el nombre del campo.
- nombreDelMetodo: Es el nombre del método.
- TipoDeRetorno: Es el tipo de datos que el método devuelve.
- Parametros: Son las variables que se utilizan para pasar información al método.
Las clases se definen generalmente en archivos con extensión .cpp o .h (header).
Composición de una Clase en C++
Una clase en C++ está compuesta por tres elementos principales: los campos (atributos), las propiedades (métodos de acceso) y los métodos (funciones miembro).
- stringfechaNacimiento
- stringdni
- stringSaludar()
- stringMandarEmail()
Ejemplo básico
Para crear una clase en C++, utilizamos la palabra clave class seguida del nombre de la clase y una lista de miembros (campos y métodos).
#include <iostream>
#include <string>
class Persona
{
public:
// Campos
std::string Nombre;
int Edad;
// Constructor
Persona(const std::string& nombre, int edad)
: Nombre(nombre), Edad(edad) {}
// Método
void Saludar()
{
std::cout << "¡Hola, soy " << Nombre << " y tengo " << Edad << " años!" << std::endl;
}
};
int main()
{
// Crear un objeto de la clase Persona
Persona persona("Luis", 25);
// Llamar al método Saludar
persona.Saludar();
return 0;
}En este ejemplo, hemos:
- Definido una clase
Personacon dos campos (Nombre,Edad). - Implementado un constructor que inicializa estos campos.
- Definido un método
Saludarque imprime un saludo con el nombre y la edad de la persona. - Creado una instancia de
Personay llamado al métodoSaludar.
Uso de clases
Creación de objetos
Para crear un objeto de una clase, simplemente declaramos una variable del tipo de la clase y, opcionalmente, llamamos al constructor.
Persona persona("Ana", 30);Acceso a campos y propiedades
Los campos y propiedades de una clase se acceden utilizando la notación de punto (.).
std::cout << persona.Nombre << std::endl;Llamado de métodos
Los métodos de una clase también se llaman usando la notación de punto (.).
persona.Saludar();Herencia y polimorfismo
C++ soporta la herencia, que permite crear una nueva clase basada en una clase existente, y el polimorfismo, que permite utilizar métodos de las clases base y derivadas de manera flexible.
Veremos estos conceptos en el resto del curso
Ejemplos prácticos
Representación de una persona
Aquí definimos una clase Persona que contiene propiedades para el nombre y la edad, un constructor para inicializar estos valores, y un método para saludar.
#include <iostream>
#include <string>
class Persona
{
private:
std::string nombre;
int edad;
public:
// Constructor
Persona(const std::string& nombre, int edad)
: nombre(nombre), edad(edad) {}
// Método
void Saludar() const
{
std::cout << "¡Hola, soy " << nombre << " y tengo " << edad << " años!" << std::endl;
}
};Representación de un producto
La clase Producto representa un producto con propiedades para el nombre y el precio. Incluye un constructor para inicializar estos campos y un método para mostrar la información del producto.
#include <iostream>
#include <string>
class Producto
{
private:
std::string nombre;
double precio;
public:
// Constructor
Producto(const std::string& nombre, double precio)
: nombre(nombre), precio(precio) {}
// Método
void MostrarInformacion() const
{
std::cout << "Producto: " << nombre << ", Precio: " << precio << std::endl;
}
};