Introducció
En la programació orientada a objectes (POO), les classes i els objectes són conceptes fonamentals. Una classe és una plantilla o un model que defineix les propietats (atributs) i els comportaments (mètodes) que els objectes d'aquest tipus poden tenir. Un objecte és una instància d'una classe, és a dir, una entitat concreta que es crea a partir de la classe.
Conceptes Clau
- Definició de Classe
Una classe es defineix utilitzant la paraula clau class
seguida del nom de la classe. Dins de la classe, es poden definir atributs i mètodes.
class Persona { public: // Atributs std::string nom; int edat; // Mètodes void saludar() { std::cout << "Hola, el meu nom és " << nom << " i tinc " << edat << " anys." << std::endl; } };
- Creació d'Objectes
Un objecte es crea declarant una variable del tipus de la classe.
int main() { // Creació d'un objecte de la classe Persona Persona persona1; persona1.nom = "Joan"; persona1.edat = 30; persona1.saludar(); return 0; }
- Atributs i Mètodes
- Atributs: Són variables que emmagatzemen l'estat de l'objecte.
- Mètodes: Són funcions que defineixen els comportaments de l'objecte.
- Modificadors d'Accés
Els modificadors d'accés controlen la visibilitat dels atributs i mètodes de la classe. Els més comuns són:
public
: Accessible des de fora de la classe.private
: Accessible només des de dins de la classe.protected
: Accessible des de dins de la classe i les seves subclasses.
class Persona { private: std::string nom; int edat; public: void setNom(std::string n) { nom = n; } void setEdat(int e) { edat = e; } void saludar() { std::cout << "Hola, el meu nom és " << nom << " i tinc " << edat << " anys." << std::endl; } };
- Constructors
Un constructor és un mètode especial que s'invoca automàticament quan es crea un objecte. S'utilitza per inicialitzar els atributs de l'objecte.
class Persona { public: std::string nom; int edat; // Constructor Persona(std::string n, int e) { nom = n; edat = e; } void saludar() { std::cout << "Hola, el meu nom és " << nom << " i tinc " << edat << " anys." << std::endl; } }; int main() { // Creació d'un objecte utilitzant el constructor Persona persona1("Joan", 30); persona1.saludar(); return 0; }
- Destructors
Un destructor és un mètode especial que s'invoca automàticament quan un objecte es destrueix. S'utilitza per realitzar neteja de recursos.
class Persona { public: std::string nom; int edat; // Constructor Persona(std::string n, int e) { nom = n; edat = e; } // Destructor ~Persona() { std::cout << "Destruint l'objecte Persona" << std::endl; } void saludar() { std::cout << "Hola, el meu nom és " << nom << " i tinc " << edat << " anys." << std::endl; } }; int main() { // Creació d'un objecte utilitzant el constructor Persona persona1("Joan", 30); persona1.saludar(); return 0; }
Exercicis Pràctics
Exercici 1: Crear una Classe
Crea una classe Cotxe
amb els atributs marca
, model
i any
. Defineix un mètode mostrarInformacio
que imprimeixi la informació del cotxe.
Solució
class Cotxe { public: std::string marca; std::string model; int any; void mostrarInformacio() { std::cout << "Marca: " << marca << ", Model: " << model << ", Any: " << any << std::endl; } }; int main() { Cotxe cotxe1; cotxe1.marca = "Toyota"; cotxe1.model = "Corolla"; cotxe1.any = 2020; cotxe1.mostrarInformacio(); return 0; }
Exercici 2: Utilitzar Constructors
Modifica la classe Cotxe
per incloure un constructor que inicialitzi els atributs marca
, model
i any
.
Solució
class Cotxe { public: std::string marca; std::string model; int any; // Constructor Cotxe(std::string m, std::string mo, int a) { marca = m; model = mo; any = a; } void mostrarInformacio() { std::cout << "Marca: " << marca << ", Model: " << model << ", Any: " << any << std::endl; } }; int main() { Cotxe cotxe1("Toyota", "Corolla", 2020); cotxe1.mostrarInformacio(); return 0; }
Resum
En aquesta secció, hem après els conceptes bàsics de les classes i els objectes en C++. Hem vist com definir una classe, crear objectes, utilitzar atributs i mètodes, aplicar modificadors d'accés, i treballar amb constructors i destructors. Aquests conceptes són fonamentals per a la programació orientada a objectes i seran la base per a temes més avançats com l'herència i el polimorfisme.
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