[Tutorial C/C++/C#] Mostenirea

Locked
User avatar
LaUR SNG
Fondator
Fondator
Posts: 9038
Joined: 8 years ago
Location: SNAGOV
Has thanked: 11 times
Been thanked: 6 times
Zodiac:
Age: 21
Contact:
Status: Offline
Romania

8 years ago

Nume Tutorial: Mostenirea
Descriere: Un tutorial folositor pentru cei care lucreaza in limbajul de programare C++
Download: -
Autor: Nu este specificat
Sursa (Link-ul oficial): -
tutorialeprogramare.ro


Propria parere: Folositor
Tutorialul:

Avand o CLASA oarecare "B", putem defini o alta CLASA "D" care sa MOSTENEASCA (sau sa PREIA) TOATE caracteristicile primeia, la care sa poata adauga ALTELE NOI, proprii doar acesteia din urma. Prima clasa se va numi "CLASA DE BAZA", iar cea de a doua "CLASA DERIVATA".
Desi MOSTENIREA sta la baza altor concepte novatoare (cum ar fi polimorfismul), cheia de bolta a programarii obiectuale ramane INCAPSULAREA. Pentru ca, in lipsa acesteia din urma, MOSTENIREA nu ar fi avut nici un suport practic.

Clase derivate.

Vom prezenta un exemplu de derivare a clasei "hard_disk_2" din clasa "floppy_disk":

Exemplu:

Code: Select all

enum stare_operatie {REUSIT, ESEC};
enum stare_protectie_la_scriere {PROTEJAT, NEPROTEJAT};

class floppy_disk {

protected:
// cuvantul cheie "protected" permite declararea unor
// membri ne-publici, care sa poata fi accesati de catre 
// eventualele clase derivate din "floppy_disk"

stare_protectie_la_scriere indicator_protectiel
int capacitate, nr_sectoare;

public:
stare_operatie formatare(void);
stare_operatie citeste_pista(int drive, int sector_de_start, int numar_sectoare, void *buffer);
stare_operatir protejeaza_la_scriere(void);
};

// clasa "hard_disk_1" defineste un hard-disk FARA
// a profita de avantajele mostenirii

class hard_disk_1 {
stare_protectie_la_scriere indicator_protectie;
int capacitate, nr_sectoare;
int numar_partitii;
public:
stare_operatie parcheaza_dis(void);
stare_operatie formatare(void);
stare_operatie citeste_pista(int drive, int sector_de_start, int numar_sectoare, void *buffer);
stare_operatie scrie_pista(int drive, int sector_de_start, int numar_sectoare, void *buffer);
stare_operatie protejeaza_la_scriere(void);
};

// clasa "hard_disk_2" defineste un hard-disk;
// se utilizeaza avantajele mostenirii 
//proprietatilor clasei "floppy_disk"

class hard_disk_2: public floppy_disk {
int numar_partitii;
public: stare_operatie parcheaza_disc(void);
};

// din definirea metodelor de mai jos reies drepturile
// de accesare ale membrilor clasei derivate

stare_operatie hard_disk_2::parcheaza_disc(void); {
// CORECT: accesare membru "protected"
indicator_protectie=PROTEJAT;
// ...

void functie(void)
{
hard_disk_2 hd1;
hd1.formatare(); // CORECT
hd1.indicator_protectie=NEPROTEJAT;
// EROARE: incercare de accesare a unui membru protejat
};
Prin enuntul class hard_disk_2 : public floppy_disk se indica compilatorului urmatoarele informatii:
- clasa "hard_disk_2" va fi DERIVATA din clasa "floppy_disk";
- toti membrii de tip "public" ai clasei "floppy_disk" vor fi mosteniti ca "public" de catre clasa "hard_disk_2";
- toti membrii "protected" ai lui floppy_disk" vor putea fi utilizati ca fiind "protected" in cadrul clasei "hard_disk_2".[/b]
„Iubiti totul cu toată inima ... căci viața se termină când vrea ea si pe nepusă masă !” – LaUR SNG

https://photos.app.goo.gl/WbQsF4C9QfvDvWSo6

Curios ? Nu il deschide :13:

[spoiler]Image[/spoiler]
[spoiler]Image[/spoiler]

https://www.facebook.com/10043517804227 ... 039605115/
Locked

Return to “C / C++ / C#”