Documente Academic
Documente Profesional
Documente Cultură
Facultatea de Inginerie
Departamentul de Automatic, Energie i Mediu
Programare orientat pe
obiecte
LECTOR DR. ADRIAN RUNCEANU
Curs 2
Constructori i destructori
14.10.2013
Constructori i destructori
3
1. Definiii
2. Crearea, iniializarea i
eliminarea obiectelor
3. Redefinirea funciilor membre
4. Operatorul de rezoluie ::
14.10.2013
1. Definiii
4
14.10.2013
1. Definiii
5
14.10.2013
1. Definiii
6
14.10.2013
1. Definiii
7
14.10.2013
Constructori i destructori
8
1. Definiii
2. Crearea, iniializarea i
eliminarea obiectelor
3. Redefinirea funciilor membre
4. Operatorul de rezoluie ::
14.10.2013
14.10.2013
14.10.2013
14.10.2013
interiorul clasei
14.10.2013
public:
// declaratii de tip public
// functii inline
fifo()
{
nrcrt=prim=0 ;
cout<<Constructor fifo\n;
}
~fifo()
{
cout<<Destructor fifo\n;
}
Programare orientat pe obiecte (C++/Java)
14.10.2013
void init()
// initializez lista
{
nrcrt=prim=0;
}
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<100); //daca nrcrt=100 atunci lista este plina
}
int adaug(int);
//adauga un element la sfarsit
int extrag(int&);
//extrage un element de la inceput
};
Programare orientat pe obiecte (C++/Java)
14.10.2013
14.10.2013
14.10.2013
14.10.2013
14.10.2013
14.10.2013
#include<iostream.h>
//lista FIFO cu nmax elemente
class fifo{
// declaratii de tip privat
int nmax;
int *tab;
int nrcrt;
int prim;
// dimensiunea listei
// adresa tabloului listei
// numarul curent de elemente din lista
// primul element din lista
14.10.2013
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
14.10.2013
// functii inline
int lista_vida() // verific daca coada este sau nu
vida
{
return(nrcrt>0);
}
int lista_plina()
{
return(nrcrt<nmax); //daca nrcrt=nmax
atunci lista este plina
}
Programare orientat pe obiecte (C++/Java)
};
14.10.2013
fifo::fifo(int n)
{
nmax=n;
tab=new int;
nrcrt=prim=0;
cout<<"Constructor 1, lista de
"<<nmax<<"elemente \n";
}
Programare orientat pe obiecte (C++/Java)
14.10.2013
14.10.2013
//destructor
fifo::~fifo()
{
cout<<"Destructor, lista de "<<nmax<<"
elemente\n";
delete tab;
}
14.10.2013
int fifo::adaug(int k)
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;
}
14.10.2013
14.10.2013
int main(void)
{
int k,i;
fifo *plista;
// declaratia unui pointer la lista
plista=new fifo(20);
//creare obiect dinamic
delete plista;
}
14.10.2013
Constructori i destructori
29
1. Definiii
2. Crearea, iniializarea i
eliminarea obiectelor
3. Redefinirea funciilor membre
4. Operatorul de rezoluie ::
14.10.2013
14.10.2013
14.10.2013
14.10.2013
14.10.2013
#include<iostream.h>
#include<string.h>
#include<stdio.h>
class sir{
// declaratie de tip privat
char *text;
14.10.2013
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
// 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);
}
14.10.2013
14.10.2013
14.10.2013
Constructori i destructori
39
1. Definiii
2. Crearea, iniializarea i
eliminarea obiectelor
3. Redefinirea funciilor membre
4. Operatorul de rezoluie ::
14.10.2013
4. Operatorul de rezoluie
40
14.10.2013
4. Operatorul de rezoluie
41
constructor
Aria
Volum
14.10.2013
4. Operatorul de rezoluie
42
#include<iostream.h>
#define
PI
3.14
class cilindru
{
float raza;
float inaltimea;
14.10.2013
4. Operatorul de rezoluie
43
public:
cilindru();
float aria();
float aria_totala();
float volum();
};
14.10.2013
4. Operatorul de rezoluie
44
cilindru::cilindru()
{
cout<<"Dati raza cilindrului
= "; cin>>raza;
cout<<"Dati inaltimea cilindrului = ";
cin>>inaltimea;
}
float cilindru::aria()
{
return ( 2 * PI * raza * inaltimea );
}
14.10.2013
4. Operatorul de rezoluie
45
float cilindru::aria_totala()
{
float a;
a = aria();
return( a + 2 * PI * raza * raza );
}
float cilindru::volum()
{
return ( PI * raza * raza * inaltimea );
}
14.10.2013
4. Operatorul de rezoluie
46
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;
}
14.10.2013
14.10.2013
Solutie problema 1:
48
#include<iostream.h>
#define PI 3.14
class cerc{
float raza;
public:
cerc();
float aria();
float circumferinta();
};
14.10.2013
cerc::cerc()
{
49
cout<<"Raza cercului este = ";
cin>>raza;
}
float cerc::aria()
{
return (PI*raza*raza);
}
float cerc::circumferinta()
{
return (2*PI*raza);
}
Programare orientat pe obiecte (C++/Java)
14.10.2013
50
int main(void)
{
cerc c;
cout<<"Aria cercului este = "<< c.aria()
<<endl;
cout<<"Circumferinta cercului este = "<<
c.circumferinta() <<endl;
}
14.10.2013
Solutie problema 2:
51
#include<iostream.h>
class dreptunghi{
float latime;
float lungime;
public:
dreptunghi();
float perimetru();
float aria ();
};
14.10.2013
dreptunghi:: dreptunghi()
{
52
cout<<"Dati latimea dreptunghilui
= ";
cin>>latime;
cout<<"Dati lungimea dreptunghilui = ";
cin>>lungime;
}
float dreptunghi::perimetru()
{
return (2*(latime+lungime));
}
14.10.2013
float dreptunghi::aria()
{
53
return(latime*lungime);
}
int main(void)
{
dreptunghi d;
cout<<Perimetru dreptunghilui este =
<< d.perimetru()<<endl;
cout<<"Aria este = "<< d.aria()<<endl;
}
14.10.2013
54
ntrebri?
14.10.2013