Clase Derivate

Imagine preview
(10/10 din 3 voturi)

Acest seminar prezinta Clase Derivate.
Mai jos poate fi vizualizat un extras din document (aprox. 2 pagini).

Arhiva contine 1 fisier doc de 8 pagini .

Iti recomandam sa te uiti bine pe extras si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, il poti descarca.

Fratele cel mare te iubeste, acest download este gratuit. Yupyy!

Domenii: Automatica, Calculatoare, Inteligenta Artificiala, Limbaje de Programare

Extras din document

Daca exista o ierarhie de clase derivate, atributele sunt mostenite prin aplicarea recursiva a regulilor din tabelul de mai sus. In esenta deci, atributul protected al unui membru al clasei face ca el sa fie vizibil intr-o clasa derivata cu specificatorii de acces public sau protected.

Trebui inteles ca un obiect de tipul DERIVATA este un obiect de tip BAZA, reciproca nefiind adevarata. Aceasta face ca un pointer de tipul:

DERIVATA *pd;

sa poata primi ca valoare o adresa de tipul & BAZA fara nici o conversie de tip.

Constructorul unei clase derivate se defineste astfel:

DERIVATA (lista argumente) : BAZA (lista argumente)

{

...

}

ceea ce inseamna ca se va apela intii constructorul clasei BAZA cu argumentele specificate. Unele argumente din apelul constructorului BAZA pot fi preluate din lista de argumente a clasei DERIVATA. Sa consideram exemplul definirii unor clase pentru gestiunea informatiilor despre studenti.

enum an_studii { unu, doi, trei, patru, cinci, graduate };

class student {

public:

student (char *, int, double, an_studii);

void print() const;

protected:

int student_id;

double medie;

an_studii an;

char nume[50];

};

Constructorul se defineste in mod evident:

student::student (char *n, int id, double m, an_studii i)

{

student_id = id;

medie = x;

an = i;

strcpy (nume, n);

}

O forma alternativa este:

student::student (char *n, int id, double m, an_studii i) :

student_id(id), medie(x), an(i) {

strcpy (nume, n);

}

ca si cum student_id, medie si an ar fi clase de baza ale clasei student (desi acestea sunt tipuri elementare).

Sa definim acum o clasa grad_student, bazata pe student:

class grad_student public student {

protected:

char titlu_teza[50];

char catedra[25];

public:

grad_student(char *, int, double, char *, char *);

void print() const;

};

care introduce cimpurile suplimentare titlu_teza si catedra, constructorul adecvat si redefineste (overloading) functia print. Ceilalti membri ai clasei de baza student sunt mosteniti ca atare. Constructorul clasei este de forma:

grad_student::grad_student(char *n, int id, double m, char *titlu, char *cat) :

student(n, id, m), an_studii(graduate) {

strcpy(titlu_teza, titlu);

strcpy(catedra, cat);

}

Fisiere in arhiva (1):

  • Clase Derivate.doc