La Programació Orientada a Objectes (POO) és un paradigma de programació que utilitza "objectes" per dissenyar aplicacions i programes. Els objectes poden ser considerats com entitats que contenen dades i mètodes per manipular aquestes dades. La POO és una manera poderosa i flexible d'organitzar el codi, i és fonamental per a la programació en C++.
Conceptes Clau de la POO
- Classes i Objectes
- Classe: És una plantilla o plànol per crear objectes. Defineix les propietats (atributs) i els comportaments (mètodes) que els objectes creats a partir de la classe tindran.
- Objecte: És una instància d'una classe. Quan es crea un objecte, es diu que es "instancia" una classe.
- Encapsulació
- Encapsulació: És el procés de combinar dades i mètodes que operen sobre aquestes dades en una sola unitat, la classe. Això ajuda a protegir les dades de l'accés no autoritzat i a mantenir la integritat de l'objecte.
- Herència
- Herència: Permet crear una nova classe (classe derivada) a partir d'una classe existent (classe base). La classe derivada hereta els atributs i mètodes de la classe base, i pot afegir-ne de nous o modificar els existents.
- Polimorfisme
- Polimorfisme: Permet que una interfície comuna sigui utilitzada per diferents tipus d'objectes. Això es pot aconseguir mitjançant la sobrecàrrega de mètodes i l'ús de funcions virtuals.
- Abstracció
- Abstracció: Consisteix en ocultar els detalls d'implementació i mostrar només la funcionalitat essencial. Això ajuda a reduir la complexitat i a augmentar la comprensió del codi.
Exemples Pràctics
Definició d'una Classe i Creació d'un Objecte
#include <iostream> using namespace std; // Definició de la classe class Cotxe { public: // Atributs string marca; string model; int any; // Mètode void mostrarInformacio() { cout << "Marca: " << marca << ", Model: " << model << ", Any: " << any << endl; } }; int main() { // Creació d'un objecte de la classe Cotxe Cotxe cotxe1; cotxe1.marca = "Toyota"; cotxe1.model = "Corolla"; cotxe1.any = 2020; // Ús del mètode de l'objecte cotxe1.mostrarInformacio(); return 0; }
Explicació del Codi
- Definició de la Classe: La classe
Cotxe
té tres atributs (marca
,model
,any
) i un mètode (mostrarInformacio
). - Creació de l'Objecte: Es crea un objecte
cotxe1
de la classeCotxe
i s'assignen valors als seus atributs. - Ús del Mètode: Es crida el mètode
mostrarInformacio
per mostrar la informació del cotxe.
Exercicis Pràctics
Exercici 1: Crear una Classe
Crea una classe Persona
amb els atributs nom
, edat
i ciutat
. Afegeix un mètode mostrarInformacio
que imprimeixi la informació de la persona.
Solució
#include <iostream> using namespace std; class Persona { public: string nom; int edat; string ciutat; void mostrarInformacio() { cout << "Nom: " << nom << ", Edat: " << edat << ", Ciutat: " << ciutat << endl; } }; int main() { Persona persona1; persona1.nom = "Joan"; persona1.edat = 30; persona1.ciutat = "Barcelona"; persona1.mostrarInformacio(); return 0; }
Exercici 2: Herència
Crea una classe Estudiant
que hereti de la classe Persona
i afegeix un atribut curs
. Afegeix un mètode mostrarInformacio
que imprimeixi la informació de l'estudiant, incloent el curs.
Solució
#include <iostream> using namespace std; class Persona { public: string nom; int edat; string ciutat; void mostrarInformacio() { cout << "Nom: " << nom << ", Edat: " << edat << ", Ciutat: " << ciutat << endl; } }; class Estudiant : public Persona { public: string curs; void mostrarInformacio() { cout << "Nom: " << nom << ", Edat: " << edat << ", Ciutat: " << ciutat << ", Curs: " << curs << endl; } }; int main() { Estudiant estudiant1; estudiant1.nom = "Anna"; estudiant1.edat = 22; estudiant1.ciutat = "Girona"; estudiant1.curs = "Informàtica"; estudiant1.mostrarInformacio(); return 0; }
Resum
En aquesta secció, hem introduït els conceptes bàsics de la Programació Orientada a Objectes (POO) en C++. Hem après sobre classes, objectes, encapsulació, herència, polimorfisme i abstracció. També hem vist exemples pràctics de com definir classes, crear objectes i utilitzar herència. Aquests conceptes són fonamentals per a la programació en C++ i seran la base per a temes més avançats en els següents mòduls.
Curs de Programació en C++
Mòdul 1: Introducció al C++
- Introducció al C++
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Entrada i Sortida
Mòdul 2: Estructures de Control
Mòdul 3: Funcions
- Introducció a les Funcions
- Paràmetres de Funció i Tipus de Retorn
- Sobrecàrrega de Funcions
- Recursivitat
Mòdul 4: Arrays i Strings
Mòdul 5: Punteres i Referències
- Introducció als Punteres
- Aritmètica de Punteres
- Punteres i Arrays
- Referències
- Assignació Dinàmica de Memòria
Mòdul 6: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Constructors i Destructors
- Herència
- Polimorfisme
- Encapsulació i Abstracció
Mòdul 7: Temes Avançats
- Plantilles
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Biblioteca de Plantilles Estàndard (STL)
- Expressions Lambda
- Multifil