Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde...

49
LECTOR ADRIAN RUNCEANU Programare orientată pe obiecte Universitatea Constantin Brâncuşi” din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu

Transcript of Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde...

Page 1: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

LECTOR ADRIAN RUNCEANU

Programare orientată pe obiecte

Universitatea “Constantin Brâncuşi” din Târgu-Jiu

Facultatea de Inginerie

Departamentul de Automatică, Energie şi Mediu

Page 2: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

2

Curs 10

Derivarea(moştenirea) claselor template

Page 3: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Moştenirea claselor template

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

3

Mostenirea (derivarea) claselor template se face la fel ca si in cazul claselor obisnuite.

Nu exista restrictii in ceea ce priveste derivarea claselor.

Regulile sunt aceleasi.

Page 4: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Moştenirea claselor template

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

4

O clasa derivata template se declara astfel:

template<class T> class clasa_derivata : public clasa_baza<T> { . . . . }

template<class T> class clasa_derivata : public clasa_baza<T> { . . . . }

Page 5: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

5

Un constructor al unei clase derivate template, care apeleaza un constructor al clasei de baza se declara astfel:

Moştenirea claselor template

template<class T> class clasa_derivata::clasa_derivata(lista parametri formali) : clasa_baza<T>(lista parametri efectivi) { . . . . }

template<class T> class clasa_derivata::clasa_derivata(lista parametri formali) : clasa_baza<T>(lista parametri efectivi) { . . . . }

Page 6: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Exemplu 1

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

6

Clasa valoare este o clasa template care depinde de tipul formal T.

Aceasta clasa are ca data membru pe v, care este tot de tipul T.

In plus, clasa are si un constructor care are rolul de a-i atribui o valoare lui v.

Clasa val mosteneste clasa valoare, iar constructorul ei, apeleaza constructorul clasei valoare.

In plus clasa val mai are o metoda de afisare a lui v.

Page 7: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Exemplu 1

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

7

class valoare

T v;

constructor

class val:valoare

constructor

afisez()

Page 8: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

8

#include<iostream.h>

template <class T> class valoare{

protected:

T v;

public:

valoare(T v);

};

Exemplu 1

Page 9: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

9

template<class T> valoare<T>::valoare(T v)

{

this->v=v;

}

Exemplu 1

Page 10: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

10

// clasa derivata din clasa valoare

template<class T> class val:public valoare<T>

{

public:

void afisez();

val(T v);

};

Exemplu 1

Page 11: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

11

template<class T> val<T>::val ( T v ) : valoare<T> (v) { };

template<class T> void val<T>::afisez()

{

cout<<this->v<<endl;

}

Exemplu 1

Page 12: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

12

int main()

{

val<int> ob(100);

ob.afisez();

}

Exemplu 1

Executia programului are ca efect:

Page 13: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Exemplu 2

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

13

Clasa matrice poate prelucra matrici de tipul formal T.

Acestea vor fi alocate dinamic pentru a putea utiliza eficient memoria.

Dimensiunile matricei si anume, numarul de linii, notat cu m si numarul de coloane notat cu n vor fi citite de la tastatura, iar matricea va fi alocata dinamic dupa valorile lui m si n.

Page 14: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

14

Clasa matrice va supraîncărca şi operatorul () pentru ca să se poată utiliza un obiect de tip matrice:

într-o operaţie de atribuire ( exemplu: A(2,3)=5 )

sau pentru a se afişa elementul din matrice ( exemplu: cout<<A(3,4) )

Exemplu 2

Page 15: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

15

Se va defini o clasă cu numele matrice_op care va deriva din clasa de bază matrice şi deci, va moşteni proprietăţile clasei respective.

Matricea sumă este alocată în memorie (pentru aceasta vom folosi referirea prin intermediul operatorului this), iar pentru a putea dubla spaţiul necesar alocării memoriei, am utilizat un constructor al clasei matrice_op, fără parametri, care rezervă spaţiu pentru matrice.

Astfel, o atribuire nu face decât să copieze pointer-ul reţinut de adr pentru matricea sumă.

Exemplu 2

Page 16: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

16

Exemplu 2

class matrice

T **adr; int m,n

Constructor implicit Constructor de initializare

Operator ()

class matrice_op : matrice

Constructor implicit Constructor de initializare

Operator +

Page 17: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

17

#include<iostream.h> template <class T> class matrice{ T** adr; protected: int m,n; public: matrice(); matrice(int m, int n); T& operator()(int i, int j); };

Exemplu 2

Page 18: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

18

template<class T> matrice<T> :: matrice() { }; template<class T> matrice<T> :: matrice ( int m,

int n ) { this->m=m; this->n=n; adr=new T*[m]; // alocam un vector de m elemente de

tip pointer catre T

for(int i=0;i<m;i++) adr[i]=new T[n]; // alocam n elemente de tipul T

}

Exemplu 2

Page 19: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

19

template<class T> T& matrice<T> :: operator() (int i, int j)

{

T* adr_linie=adr[i]; // in variabila vector

adr_linie retinem linia i din matrice

return adr_linie[j]; // in vectorul

adr_linie, elementul cautat se afla pe pozitia j

}

Exemplu 2

Page 20: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

20

// clasa matrice_op derivata din clasa matrice

template<class T> class matrice_op:public matrice<T>{

public: matrice_op(); matrice_op(int m,int n); matrice_op

operator+(matrice_op<T> M); };

Exemplu 2

Page 21: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

21

// constructorul implicit mosteneste constructorul implicit al clasei de baza

template<class T> matrice_op <T> :: matrice_op() { }

// constructorul mosteneste constructorul clasei de baza

template<class T> matrice_op <T> :: matrice_op(int m, int n) : matrice<T> (m, n) { }

Exemplu 2

Page 22: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

22

template<class T> matrice_op<T>

matrice_op<T> :: operator+ (matrice_op<T> M)

{

matrice_op<T> S(this->m, this->n);

for(int i=0; i < this->m; i++)

for(int j=0; j < this->n; j++)

S(i,j) = (*this)(i,j) + M(i,j);

return S;

}

Exemplu 2

Page 23: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

23

int main()

{

int m, n, i, j;

cout<<"Dati nr. de linii m = "; cin>>m;

cout<<"Dati nr. de coloane n = "; cin>>n;

Exemplu 2

Page 24: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

24

cout<<"Se creeaza matricea A \n";

matrice_op<int> A(m,n);

for(i=0; i<m; i++)

for(j=0; j<n; j++)

{

cout<<"A("<<i+1<<","<<j+1<<")= ";

cin>>A(i,j);

}

Exemplu 2

Page 25: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

25

cout<<"Se creeaza matricea B \n";

matrice_op<int> B(m,n);

for(i=0; i<m; i++)

for(j=0; j<n; j++)

{

cout<<"B("<<i+1<<","<<j+1<<")= ";

cin>>B(i,j);

}

Exemplu 2

Page 26: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

26

cout<<"Suma celor doua matrici \n";

matrice_op<int> C(m,n);

C = A + B;

for(i=0;i<m;i++)

{

for(j=0;j<n;j++) cout<<C(i,j)<<" ";

cout<<"\n";

}

}

Exemplu 2

Page 27: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

27

Executia programului are ca efect:

Exemplu 2

Page 28: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Exemplu 3

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

28

Să se adauge clasei matrice_op o metodă care să permită înmulţirea a două matrice.

Se va adăuga următoarea metodă în clasa matrice_op:

matrice_op operator*(matrice_op<T> M);

Page 29: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

29

template<class T> matrice_op<T> matrice_op<T>::operator*(matrice_op<T> M)

{ matrice_op<T> C(m,n); for(int i=0; i < this->m; i++) for(int j=0; j < this->n; j++) { C(i,j)=0; for(int k=0;k<this->m;k++) C(i,j) += (*this)(i,k) * M(k,j); } return C; }

Exemplu 3

Page 30: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Initializarea claselor de baza virtuale

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

30

O clasa de baza virtuala poate fi initializata explicit, dar ea trebuie sa aiba si un constructor care poate fi apelat fara argumente.

Acesta poate fi un constructor fara argumente sau un constructor in care toate argumentele au valori implicite.

Page 31: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Initializarea claselor de baza virtuale

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

31

Regulile de apelare a constructorilor claselor de baza sunt urmatoarele:

1. Constructorii claselor de baza virtuale se apeleaza inaintea celor corespunzatori claselor ne-virtuale

2. Pentru o clasa cu mai multe clase de baza virtuale:

constructorii acestora se apeleaza in ordinea in care clasele au fost declarate in lista

apoi se apeleaza constructorii claselor de baza ne-virtuale

si la sfarsit constructorii claselor derivate

Page 32: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Initializarea claselor de baza virtuale

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

32

3. Daca in ierahia claselor de baza exista mai multe instantieri ale unei clase de baza virtuale, constructorul respectiv va fi apelat doar o singura data

4. Daca in ierarhie exista atat instantieri virtuale cat si ne-virtuale ale aceleiasi clase de baza, constructorul va fi aplelat o singura data pentru toate instantierile virtuale si de fiecare data pentru fiecare instantiere ne-virtuala

Page 33: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Initializarea claselor de baza virtuale

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

33

Situatii in care este necesara utilizarea claselor virtuale:

Exemplu 1:

Clasele inginer si cont mostenesc clasa persoana ca, clasa de baza virtuala, pentru ca trebuie sa existe un singur sub-obiect al acestuia, comun pentru inginer si cont, iar clasa director_proiect este derivata din ambele clase virtuale.

Page 34: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

34

class persoana

nume, adresa, varsta

Constructor de initializare

class inginer: virtual persoana

Specialitate

Constructor de initializare

class cont: virtual persoana

numar, banca, suma

Constructor de initializare

class director_proiect : inginer, public cont

titlu

Constructor de initializare

Page 35: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Exemplu 1 – ierarhii de clase

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

35

#include<iostream.h>

class persoana{

protected:

char *nume;

char *adresa;

int varsta;

Page 36: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

Exemplu 1 – ierarhii de clase

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

36

void set_pers(char *n, char *a, int v){ nume=n; adresa=a; varsta=v; cout<<nume<<"\n"; cout<<" "<<adresa<<"\n"; cout<<" "<<varsta<<"\n"; } public: persoana(){ cout<<"Constructor persoana: "; } };

Page 37: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

37

class inginer: virtual public persoana{

protected:

char *specialitate;

public:

inginer(char *n, char *a, int v, char *s) : specialitate(s)

{

set_pers(n,a,v);

cout<<"Constructor inginer: " << specialitate<<"\n";

}

};

Exemplu 1 – ierarhii de clase

Page 38: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

38

class cont: virtual public persoana{

protected:

int numar;

char* banca;

int suma;

Exemplu 1 – ierarhii de clase

Page 39: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

39

public: cont(int nr, char *b, int sum):numar(nr), banca(b), suma(sum) { cout<<"Constructor cont: "<<numar<<"\n"; cout<<" Banca:"<<banca<<"\n"; } void afis_cont(){ cout<<"Informatii cont:\n"; cout<<nume<<"\n"<<adresa<<"\n"<<" Cont nr: "<<numar <<"\n"; cout<<"Banca: "<<banca<<"\n"<<"Suma: "<<suma<<"\n"; }; };

Exemplu 1 – ierarhii de clase

Page 40: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

40

class director_proiect: inginer, public cont { char *titlu; public: director_proiect(char *n, char *a, int v, char *spec, int nr, char *b, int sum, char *t): inginer(n,a,v,spec), cont(n,a,v,nr,b,sum), titlu(t) { cout<<"Constructor director proiect: "<<titlu<<"\n"; } };

Exemplu 1 – ierarhii de clase

Page 41: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

41

int main()

{

director_proiect dp("Ionescu Vasile","Str. Republicii",45,"Automatica", 987654,"BancPost", 100000,"Implementare C++");

dp.afis_cont();

}

Exemplu 1 – ierarhii de clase

Page 42: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

42

Exemplu 2:

Se considera ierarhia de clase din figura urmatoare, in care clasele cerc si varf mostenesc clasa de baza punct_2d, pentru a putea exista doua sub-obiecte ale acesteia, unul corespunzator centrului cercului de baza al conului, iar altul corespunzator varfului conului – clasa con.

Exemplu 2 – ierarhii de clase

Page 43: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

43

class punct_2d

x, y

Constructor de initializare

class cerc: public punct_2d

raza, aria, perimetru

Constructor de initializare

class varf: public punct_2d

z

Constructor de initializare

class con: public cerc, varf

volum

Constructor de initializare

Page 44: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

44

#include<iostream.h>

class punct_2d{

protected:

float x,y;

public:

punct_2d(float xx=0, float yy=0):x(xx),y(yy){

cout<<"Constructor punct_2d\n";

}

};

Exemplu 2 – ierarhii de clase

Page 45: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

45

class cerc : public punct_2d{

protected:

float raza, aria, perimetru;

public:

cerc(float xx=0, float yy=0, float rr=1) : punct_2d(xx, yy), raza(rr){

cout<<"Constructor cerc\n";

}

};

Exemplu 2 – ierarhii de clase

Page 46: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

46

class varf : public punct_2d{

protected:

float z;

public:

varf(float xx=0, float yy=0, float zz=1) : punct_2d(xx, yy), z(zz){

cout<<"Constructor varf\n";

}

};

Exemplu 2 – ierarhii de clase

Page 47: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

47

class con : cerc,varf{

float volum;

public:

con(float a, float b, float c, float d, float e, float f) : cerc(a,b,c),varf(d,e,f){

volum=0;

cout<<"Constructor con\n";

}

};

Exemplu 2 – ierarhii de clase

Page 48: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

48

int main()

{ con c(1,1,1,1,1,1); }

Dupa executia programului:

Exemplu 2 – ierarhii de clase

Page 49: Programare orientata pe obiecte - curs2013).pdf · Clasa valoare este o clasa template care depinde de tipul formal T. Aceasta clasa are ca data membru pe v, care este tot de tipul

13.11.2013 Curs - Programare orientată pe obiecte C++/Java

49

Întrebări?