Programación Orientada a Objetos: Creación de Clases y Objetos en C++
Clase 8 de 16 • Curso 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:
-
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.
- 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
-
Atributos de la clase: Dentro de las llaves, definimos los atributos o propiedades de la clase, como
nombre
yedad
. También es posible asignar valores iniciales. -
Inicialización y uso de la clase: En la función principal (
main
), se puede crear una variable que instancie la clasePersona
.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.
-
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
-
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!