Clase Derivate

Previzualizare seminar:

Extras din seminar:

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);

}

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Clase Derivate.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
10/10 (2 voturi)
Nr fișiere:
1 fisier
Pagini (total):
8 pagini
Imagini extrase:
8 imagini
Nr cuvinte:
2 046 cuvinte
Nr caractere:
12 443 caractere
Marime:
12.58KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Seminar
Domeniu:
Automatică
Predat:
la facultate
Materie:
Automatică
Sus!