Programación Orientada a Objetos: Creación de Clases y Objetos en C++

Clase 8 de 16Curso de Programación Orientada a Objetos con C++

Resumen

¿Cómo crear tu primera clase en programación orientada a objetos?

La programación orientada a objetos (POO) es un paradigma que nos permite estructurar nuestro código y datos de una manera clara y eficiente. Si bien el concepto puede parecer abstracto al principio, a través de ejemplos prácticos podremos comprender su utilidad real en el desarrollo de software.

¿Cómo definir una clase en el código?

Para comenzar a trabajar con POO, es fundamental aprender a crear una clase. Veamos cómo estructurarla en el código:

  1. Declaración de la clase: Utilizamos la palabra class seguida del nombre de la clase, en este caso, Persona.

    class Persona {
        public:
            std::string nombre;
            int edad;
    };
    
    • Encapsulación: Los atributos, por defecto, son privados en una clase, lo que significa que no se pueden acceder desde fuera de ella. Sin embargo, se puede modificar este comportamiento usando public para que sean accesibles externamente.
  2. Atributos de la clase: Dentro de las llaves, definimos los atributos o propiedades de la clase, como nombre y edad. También es posible asignar valores iniciales.

  3. Inicialización y uso de la clase: En la función principal (main), se puede crear una variable que instancie la clase Persona.

    Persona p;
    p.nombre = "Diana";
    p.edad = 26;
    
    std::cout << p.nombre << std::endl;  // Salida: Diana
    

¿Cómo gestionar la memoria utilizando punteros?

El manejo de la memoria es crucial en el control de objetos. Podemos utilizar punteros para gestionar la creación de objetos dinámicamente.

  • Creando objetos dinámicamente: Usamos new para reservar memoria y el operador -> para acceder a los atributos o métodos.

    Persona* p = new Persona();
    p->nombre = "Diana";
    p->edad = 26;
    
    std::cout << p->nombre << std::endl;  // Salida: Diana
    

La principal diferencia entre las memorias estática y dinámica es el momento en que se reserva; la memoria dinámica se asigna en tiempo de ejecución.

¿Cómo añadir comportamiento a los objetos?

Una de las principales ventajas de las clases respecto a las estructuras radica en que no sólo almacenan datos, sino que también pueden tener comportamientos o métodos.

  • Definiendo métodos: Podemos crear funciones dentro de la clase que realicen acciones específicas. En el siguiente ejemplo, añadimos un método saludar.

    class Persona {
        public:
            std::string nombre;
            int edad;
            
            void saludar() {
                std::cout << "Hola, mi nombre es " << nombre << std::endl;
            }
    };
    
  • Ejecutando métodos: Una vez definida la función saludar, podemos llamarla usando la instancia de Persona.

    Persona* p = new Persona();
    p->nombre = "Diana";
    p->saludar();  // Salida: Hola, mi nombre es Diana
    

¿Cómo personalizar cada instancia de una clase?

Cada instancia de una clase puede tener atributos diferentes, lo que significa que cada objeto mantiene su propia copia de datos, incluso si comparte el mismo código base.

  1. Creando múltiples instancias: Al instanciar la clase con new, cada objeto es independiente. Por ejemplo, al tener una segunda persona:

    Persona* p2 = new Persona();
    p2->nombre = "Ximena";
    p2->saludar();  // Salida: Hola, mi nombre es Ximena
    
  2. Manteniendo identificación exclusiva: Cada objeto puede tener atributos únicos, y al ejecutar métodos, como saludar, acceden a su propio estado.

La programación orientada a objetos facilita la tarea de modelar el mundo real en código, proporcionando una estructura clara para gestionar datos complejos y comportamientos asociados. Como desarrolladores, entender y aplicar estos principios nos permitirá escribir código más mantenible y robusto. ¡Sigue explorando y aplicando estas técnicas en tus proyectos!