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
Persona
con dos campos (Nombre
,Edad
). - Implementado un constructor que inicializa estos campos.
- Definido un método
Saludar
que imprime un saludo con el nombre y la edad de la persona. - Creado una instancia de
Persona
y 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;
}
};