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
