Documente Academic
Documente Profesional
Documente Cultură
Curs2 POO (2013) PDF
Curs2 POO (2013) PDF
Facultatea de Inginerie
Departamentul de Automatic, Energie i Mediu
Programare orientat pe
obiecte
Curs 2
Constructori i destructori
1. Definiii
2. Crearea, iniializarea i
eliminarea obiectelor
3. Redefinirea funciilor membre
4. Operatorul de rezoluie ::
1. Definiii
2. Crearea, iniializarea i
eliminarea obiectelor
3. Redefinirea funciilor membre
4. Operatorul de rezoluie ::
public:
// declaratii de tip public
// functii inline
fifo()
{
nrcrt=prim=0 ;
cout<<Constructor fifo\n;
}
~fifo()
{
cout<<Destructor fifo\n;
}
#include<iostream.h>
//lista FIFO cu nmax elemente
class fifo{
// declaratii de tip privat
int nmax; // dimensiunea listei
int *tab; // adresa tabloului listei
int nrcrt; // numarul curent de elemente din lista
int prim; // primul element din lista
public:
// declaratii de tip public
fifo(int); // constructor 1 care creeaza o lista cu un
numar de elemente
fifo(); // constructor 2 care creeaza o lista de 100
de elemente
~fifo(); // destructor
int adaug(int); //adauga un element la sfarsit
int extrag(int&); //extrage un element de la
inceput
// functii inline
int lista_vida() // verific daca coada este sau nu
vida
{
return(nrcrt>0); //daca nrcrt=0 atunci
lista este vida
}
int lista_plina()
{
return(nrcrt<nmax); //daca nrcrt=nmax
atunci lista este plina
}
};
Programare orientat pe obiecte (C++/Java) 14.10.2013
2. Crearea, iniializarea i eliminarea
obiectelor
23
//destructor
fifo::~fifo()
{
cout<<"Destructor, lista de "<<nmax<<"
elemente\n";
delete tab;
}
int fifo::adaug(int k)
//definitia functiei membru este in afara declaratiei clasei resp. si deci,
trebuie specificat ca apartine clasei fifo prin folosirea operatorului de
rezolutie ::
{
if(lista_plina())
{
tab[(prim+nrcrt)%nmax]=k;
nrcrt++;
cout<<"Lista are "<<nrcrt<<" elemente\n";
return 1;
}
else
{
cout<<"Lista este plina\n";
return 0;
}
}
Programare orientat pe obiecte (C++/Java) 14.10.2013
2. Crearea, iniializarea i eliminarea
obiectelor
27
int main(void)
{
int k,i;
fifo *plista; // declaratia unui pointer la lista
plista=new fifo(20); //creare obiect dinamic
delete plista;
}
1. Definiii
2. Crearea, iniializarea i
eliminarea obiectelor
3. Redefinirea funciilor membre
4. Operatorul de rezoluie ::
#include<iostream.h>
#include<string.h>
#include<stdio.h>
class sir{
// declaratie de tip privat
char *text;
public:
// declaratii de tip public
sir(char *sirul); // constructor
~sir(){ delete text; } // destructor
int compar(sir &s1, sir &s2); // functia membra
compar va fi redefinita
int compar(sir &s1, sir &s2, unsigned int
numarcar);
void afiseaza(char *mesaj=" ")
{
cout<<mesaj<<text<<endl;
}
};
Programare orientat pe obiecte (C++/Java) 14.10.2013
3. Redefinirea funciilor membre
36
// definirea constructorului
sir::sir(char *sirul)
{
text= new char[strlen(sirul)];
strcpy(text,sirul);
}
int sir::compar(sir &s1, sir &s2)
{
return strcmp(s1.text, s2.text);
}
1. Definiii
2. Crearea, iniializarea i
eliminarea obiectelor
3. Redefinirea funciilor membre
4. Operatorul de rezoluie ::
#include<iostream.h>
#define PI 3.14
class cilindru
{
float raza;
float inaltimea;
public:
cilindru();
float aria();
float aria_totala();
float volum();
};
cilindru::cilindru()
{
cout<<"Dati raza cilindrului = "; cin>>raza;
cout<<"Dati inaltimea cilindrului = ";
cin>>inaltimea;
}
float cilindru::aria()
{
return ( 2 * PI * raza * inaltimea );
}
float cilindru::aria_totala()
{
float a;
a = aria();
return( a + 2 * PI * raza * raza );
}
float cilindru::volum()
{
return ( PI * raza * raza * inaltimea );
}
int main(void)
{
cilindru c;
cout<<"Aria cilindrului este = "<<c.aria()<<endl;
cout<<"Aria totala este =
"<<c.aria_totala()<<endl;
cout<<"Volumul cilindrului este =
"<<c.volum()<<endl;
}
#include<iostream.h>
#define PI 3.14
class cerc{
float raza;
public:
cerc();
float aria();
float circumferinta();
};
int main(void)
{
cerc c;
cout<<"Aria cercului este = "<< c.aria()
<<endl;
cout<<"Circumferinta cercului este = "<<
c.circumferinta() <<endl;
}
class dreptunghi{
float latime;
float lungime;
public:
dreptunghi();
float perimetru();
float aria ();
};
float dreptunghi::perimetru()
{
return (2*(latime+lungime));
}
int main(void)
{
dreptunghi d;
cout<<Perimetru dreptunghilui este =
<< d.perimetru()<<endl;
cout<<"Aria este = "<< d.aria()<<endl;
}
ntrebri?