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

  1. 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;
    }
};

  1. 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;
}

  1. 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.

  1. 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;
    }
};

  1. 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;
}

  1. 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.

© Copyright 2024. Tots els drets reservats