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
Cotxeté tres atributs (marca,model,any) i un mètode (mostrarInformacio). - Creació de l'Objecte: Es crea un objecte
cotxe1de la classeCotxei s'assignen valors als seus atributs. - Ús del Mètode: Es crida el mètode
mostrarInformacioper 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
