cpp-clases

Qué son y cómo usar clases en C++

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).

Persona
  • stringfechaNacimiento
  • stringdni
  • stringSaludar()
  • stringMandarEmail()

Los campos representan las variables o datos que forman parte de una clase. Estos pueden ser de diferentes tipos (como enteros, cadenas de texto, booleanos, etc)

Los campos son la forma en la que almacenamos información dentro de una clase y nos permiten manipularla según nuestras necesidades. llos.

Los métodos son las acciones o comportamientos que puede realizar una clase. Estos pueden ser funciones que devuelven un valor o procedimientos que no retornan nada.

Los métodos nos permiten modularizar el código y dividir las tareas en partes más pequeñas y manejables.

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("Juan", 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étodo Saludar.

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