|

Programarea Orientată pe Obiecte – Clase și Obiecte 16


1. Obiectivele lecției:

  • Să înțeleagă conceptul de programare orientată pe obiecte (POO).
  • Să învețe definiția claselor și obiectelor.
  • Să implementeze exemple practice care utilizează clase și obiecte.

2. Ce este Programarea Orientată pe Obiecte (POO)?

  1. Definiție:
    Programarea orientată pe obiecte este un stil de programare care se concentrează pe utilizarea obiectelor – entități care combină date (atribute) și comportament (metode).
  2. Principiile POO:
    • Încapsulare: Gruparea datelor și metodelor care le operează într-o clasă.
    • Moștenire: Posibilitatea de a crea noi clase bazate pe clase existente.
    • Polimorfism: Capacitatea de a utiliza aceeași interfață pentru diferite tipuri de obiecte.
    • Abstracție: Ascunderea detaliilor complexe ale implementării.

3. Clase și Obiecte


1. Clase

  1. Definiție:
    • O clasă este un șablon care definește structura și comportamentul obiectelor. Ea descrie ce atribute și metode vor avea obiectele create pe baza sa.
  2. Structura unei clase:

class NumeClasa {

private:

    // Atribute private

public:

    // Constructori

    // Metode publice

};

  1. Exemplu:

class Masina {

private:

    string marca;

    int vitezaMaxima;

public:

    // Constructor

    Masina(string m, int v) {

        marca = m;

        vitezaMaxima = v;

    }

    // Metodă pentru afișare

    void afiseazaDetalii() {

        cout << „Marca: ” << marca << „, Viteza maxima: ” << vitezaMaxima << ” km/h” << endl;

    }

};


2. Obiecte

  1. Definiție:
    • Un obiect este o instanță a unei clase. El reprezintă o entitate concretă care urmează structura și comportamentul definite de clasă.
  2. Crearea unui obiect:

Masina masina1(„Toyota”, 180); // Obiect de tip Masina

masina1.afiseazaDetalii();


4. Exemple practice


Exemplu 1: Crearea unei clase simple

  1. Definiția clasei:

class Student {

private:

    string nume;

    int varsta;

public:

    // Constructor

    Student(string n, int v) {

        nume = n;

        varsta = v;

    }

    // Metodă pentru afișare

    void afiseazaDetalii() {

        cout << „Nume: ” << nume << „, Varsta: ” << varsta << ” ani” << endl;

    }

};

  1. Utilizarea obiectelor:

int main() {

    Student s1(„Andrei”, 20);

    Student s2(„Maria”, 22);

    s1.afiseazaDetalii();

    s2.afiseazaDetalii();

    return 0;

}


Exemplu 2: Clase cu metode pentru operații

  1. Definiția clasei:

class Dreptunghi {

private:

    int lungime;

    int latime;

public:

    // Constructor

    Dreptunghi(int l, int L) {

        lungime = l;

        latime = L;

    }

    // Metode pentru calcul

    int calculeazaAria() {

        return lungime * latime;

    }

    int calculeazaPerimetrul() {

        return 2 * (lungime + latime);

    }

};

  1. Utilizarea obiectelor:

int main() {

    Dreptunghi d(5, 10);

    cout << „Aria: ” << d.calculeazaAria() << endl;

    cout << „Perimetrul: ” << d.calculeazaPerimetrul() << endl;

    return 0;

}


Exemplu 3: Încapsularea datelor

  1. Definiția clasei:

class ContBancar {

private:

    string titular;

    double sold;

public:

    // Constructor

    ContBancar(string t, double s) {

        titular = t;

        sold = s;

    }

    // Metode pentru operare

    void depune(double suma) {

        sold += suma;

    }

    void retrage(double suma) {

        if (suma <= sold) {

            sold -= suma;

        } else {

            cout << „Fonduri insuficiente!” << endl;

        }

    }

    void afiseazaSold() {

        cout << „Titular: ” << titular << „, Sold: ” << sold << ” lei” << endl;

    }

};

  1. Utilizarea obiectelor:

int main() {

    ContBancar cont(„Ioan Popescu”, 1000.0);

    cont.afiseazaSold();

    cont.depune(500);

    cont.afiseazaSold();

    cont.retrage(2000);

    cont.retrage(100);

    cont.afiseazaSold();

    return 0;

}


5. Avantajele utilizării claselor și obiectelor

AvantajDescriere
ModularitateCodul este organizat în module independente.
ReutilizareClasele pot fi utilizate în mai multe programe.
Întreținere ușoarăModificările în cod sunt izolate și ușor de gestionat.
AbstracțieAscunde detaliile implementării, punând accent pe utilizare.
Moștenire și extensibilitateClasele pot fi extinse pentru a adăuga funcționalități noi.

6. Activități practice pentru elevi

  1. Creați o clasă Carte cu atributele titlu, autor și numarPagini. Implementați metode pentru afișarea detaliilor și actualizarea numărului de pagini.
  2. Implementați o clasă Cerc care calculează aria și circumferința.
  3. Scrieți un program care folosește o clasă Elev pentru a gestiona numele, vârsta și media elevilor.

7. Scheme logice

  1. Crearea unui obiect:
    • Start -> Declarare clasă -> Definire constructor -> Inițializare obiect -> Utilizare metode -> Stop.
  2. Flux de utilizare a unei clase:
    • Definiție clasă -> Declarare metode -> Creare obiect -> Apelare metode.

8. Concluzie

  • Clasele și obiectele sunt fundamentul programării orientate pe obiecte.
  • Încapsularea datelor și metodelor permite organizarea clară a codului și reducerea erorilor.
  • Practica este esențială pentru a înțelege și a aplica eficient conceptul de clase și obiecte.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *