Obiecte si clase
Dorel Lucanu
nume
atribute
metode
Dorel Lucanu
Clase (continuare)
Dorel Lucanu
Incapsulare
Incapsulare: datele si operatiile asupra lor sint incluse in aceeasi
unitate sintactica
datele si procesele devin legate
Cont
sold
sold
depune( )
depune( )
Ascunderea informatiei
modul de structurare a datelor nu este cunoscut
actiunile asupra datelor sint realizate numai prin
operatiile (metodele) clasei
si anumite actiuni pot fi ascunse: e.g., validare a contului
cont.sold+suma
cont.depune(suma)
Dorel Lucanu
OK!
Incapsulare: avantaje
defineste clar ce structuri de date sint manevrate si care sunt
operatiile legale asupra lor
adauga programului modularitate
scade riscul ca datele sa fie alterate de programele "slabe"
faciliteaza ascunderea informatiei
Dorel Lucanu
10
Dorel Lucanu
11
Dorel Lucanu
12
limitarea
accesului la
informatii
Dorel Lucanu
sectiuni publice
sectiuni private
13
Cont.h
class Cont
private:
{
char *titular;
public:
char *nrCont;
Cont();
double sold;
~Cont();
double rataDob;
void depune(double);
char *dataUltOp;
void extrage(double);
void actualizeazaSold();
void setDob(double);
void atribuieNrCont();
};
Dorel Lucanu
14
Cont.cpp
Cont::Cont()
{
titular = NULL;
dataUltOp = NULL;
sold = 0;
rataDob = 0;
atrbuieNrCont();
}
Cont::~Cont()
{
delete titular;
delete dataUltOp;
}
Dorel Lucanu
15
Demo.cpp
void main()
{
Cont cont;
cont.depune(2000);
}
cont.sold += 5000;
16
Dorel Lucanu
17
Stiva
tipul de data abstract Stiva
entitati de tip data: liste LIFO
operatii
push()
pop()
top()
Stiva
tab[0..MAX-1]
virf
push()
pop()
top()
Dorel Lucanu
18
Stiva.h
class Stiva
{
public:
Stiva();
~Stiva();
void push(char);
void pop();
char top();
bool este_vida();
private:
char tab[MAX_STIVA];
int virf;
};
Dorel Lucanu
19
Stiva.cpp
void Stiva::push(char c)
{
if (virf == MAX_STIVA-1)
throw "Depasire superioara.";
tab[++virf] = c;
}
char Stiva::top()
{
if (virf < 0)
throw "Depasire inferioara.";
return tab[virf];
}
Dorel Lucanu
20
Stiva_demo
Stiva s;
char c = 'a';
try {
while (true) {
s.push(c++);
cout << s.top() << endl;
}
}
catch (char *mes_err) {
cout << mes_err << endl;
}
Dorel Lucanu
21
my_string.h
class string
{
public:
// Constructori/destructori
string();
string(char* new_string);
string(const string& new_string);
string(int aInt);
. . .
~string();
Dorel Lucanu
22
my_string.h (continuare)
// operatii
int size() const;
const char* c_str() const;
friend string operator+ (const string& lhs,
const string& rhs);
string& operator= (const string& a_string);
. . .
private:
char* char_arr;
int string_length;
};
Dorel Lucanu
23
my_string - utilizare
string s1(123); // creare sir dintr-un numar
string s2;
// creare sir vid
s2 = string("abc") + s1; //creare sir si concat.
s1 = s2 ;
// copiere sir (operator atrib.)
string s3(s2);
// apelare constructor de copiere
s1 = "armata";
// constructor si op. atribuire
b = (s1 == s2); // operatorul de testare a egalit.
STL (Standard Template Library)
#include <string>
#using namespace std
Dorel Lucanu
24
25
Dorel Lucanu
26