Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Clases y objetos en C++: Guía práctica con ejemplos de código

¿Qué es una clase?

Una clase de C++ es un tipo de dato definido por el usuario que agrupa datos y las funciones que operan sobre esos datos en una sola entidad. Piénselo como un plano: define la forma y el comportamiento de los objetos que pueden crearse a partir de él.

Al igual que el plano de una casa especifica la ubicación de puertas, ventanas y habitaciones, una clase describe la disposición de sus miembros de datos y las operaciones que pueden manipularlos. Múltiples casas (objetos) pueden construirse a partir del mismo plano.

Clases y objetos en C++: Guía práctica con ejemplos de código

En la ilustración anterior, el único prototipo produce dos casas distintas con diferentes características.

En este tutorial aprenderá:

Declaración de clase

Declarar una clase es sencillo: use la palabra clave class seguida del nombre de la clase y encierre el cuerpo entre llaves.

Sintaxis

class nombreClase {
    // miembros de datos
    // funciones miembro
};

Modificadores de acceso: private vs. public

Los modificadores de acceso controlan la visibilidad de los miembros de la clase.

Creación de objetos (Instanciación)

Los objetos son instancias de una clase. Declarar un objeto sigue el mismo patrón que declarar una variable: nombreClase nombreObjeto;

Sintaxis

nombreClase nombreObjeto;

La instanciación asigna memoria para el objeto y puede disparar su constructor.

Acceso a miembros de datos

Los miembros de datos públicos se acceden usando el operador punto (.).

Ejemplo

#include <iostream>
using namespace std;
class Telefono {
public:
    double costo;
    int ranuras;
};
int main() {
    Telefono Y6;
    Telefono Y7;
    Y6.costo = 100.0;
    Y6.ranuras = 2;
    Y7.costo = 200.0;
    Y7.ranuras = 2;
    cout << "Costo de Huawei Y6: " << Y6.costo << endl;
    cout << "Costo de Huawei Y7: " << Y7.costo << endl;
    cout << "Número de ranuras para tarjetas Huawei Y6: " << Y6.ranuras << endl;
    cout << "Número de ranuras para tarjetas Huawei Y7: " << Y7.ranuras << endl;
    return 0;
}

Salida:

Clases y objetos en C++: Guía práctica con ejemplos de código

¿Por qué usar Getters/Setters?

Acceder o modificar datos directamente puede romper el encapsulamiento. Usar funciones miembro getter y setter proporciona acceso controlado.

Ejemplo con encapsulamiento

#include <iostream>
using namespace std;
class ClaseA {
public:
    void setA(int val);
    int getA() const;
private:
    int a;
};
int ClaseA::getA() const {
    return a;
}
void ClaseA::setA(int val) {
    a = val;
}
int main() {
    ClaseA obj;
    obj.setA(20);
    cout << "Valor de a es: " << obj.getA();
    return 0;
}

Salida:

Clases y objetos en C++: Guía práctica con ejemplos de código

Miembros protegidos y herencia

Los miembros protegidos son accesibles dentro de la clase y por clases derivadas, permitiendo herencia controlada.

Ejemplo

#include <iostream>
using namespace std;
class ClasePadre {
protected:
    int valor;
};
class ClaseHija : public ClasePadre {
public:
    void setId(int x) {
        valor = x;
    }
    void mostrarValor() {
        cout << "Valor es: " << valor << endl;
    }
};
int main() {
    ClaseHija c;
    c.setId(21);
    c.mostrarValor();
    return 0;
}

Salida:

Clases y objetos en C++: Guía práctica con ejemplos de código

Funciones miembro dentro vs. fuera de la clase

Las funciones miembro pueden definirse inline dentro de la clase o declararse dentro y definirse después usando el operador de resolución de ámbito ::.

Ejemplo

#include <iostream>
#include <string>
using namespace std;
class Guru99 {
public:
    string nombre_tutorial;
    int id;
    void imprimirNombre();
    void imprimirId() {
        cout << "ID del tutorial es: " << id;
    }
};
void Guru99::imprimirNombre() {
    cout << "Nombre del tutorial es: " << nombre_tutorial;
}
int main() {
    Guru99 guru;
    guru.nombre_tutorial = "C++";
    guru.id = 1001;
    guru.imprimirNombre();
    cout << endl;
    guru.imprimirId();
    return 0;
}

Salida:

Clases y objetos en C++: Guía práctica con ejemplos de código

Constructores y destructores

Los constructores inicializan objetos al crearlos, mientras que los destructores limpian justo antes de que un objeto sea destruido.

Ejemplo

#include <iostream>
using namespace std;
class ClaseA {
public:
    ClaseA() {
        cout << "Constructor de clase llamado" << endl;
    }
    ~ClaseA() {
        cout << "Destructor de clase llamado" << endl;
    }
};
int main() {
    ClaseA a; // constructor llamado
    int p = 1;
    if (p) {
        ClaseA b; // constructor llamado, destructor al final del bloque
    } // destructor para 'a' llamado aquí
    return 0;
}

Salida:

Clases y objetos en C++: Guía práctica con ejemplos de código

Conclusiones clave

Lenguaje C

  1. Clases y objetos en C#: Fundamentos para POO robusta
  2. Clases y Objetos en C++: Guía Práctica de Programación Orientada a Objetos
  3. Funciones y clases amigas en C++: dominando el control de acceso
  4. Dominando las plantillas de clase en C++: guía práctica
  5. Operadores en C++ explicados: Tipos, ejemplos y programas de muestra
  6. Dominando switch-case en C++: Sintaxis, uso y ejemplos prácticos
  7. Asignación dinámica de arrays en C++: Guía práctica con ejemplos de código
  8. Structs en C++ explicados con un ejemplo práctico
  9. Dominar std::list en C++: Sintaxis, Funciones y Ejemplos Prácticos
  10. Struct vs Class en C++: Diferencias Clave, Sintaxis y Mejores Casos de Uso
  11. Clases Abstractas en C#: Tutorial Práctico con Ejemplos de Código