Sunteți pe pagina 1din 11

Curs: Introducere n programarea orientat pe obiect - Java

Modul: Introducere
Unitate: Tipuri de date i structuri de date

Programarea orientat pe obiect este o tehnic de programare aprut


n anii '80 ai secolului trecut. Primul limbaj de programare orientat pe
obiect, Smalltalk 80, a fost creat n laboratoarele Xerox n anul 1980.
n momentul de fa, programarea orientat pe obiect este cea mai
larg acceptat tehnic de programare. Pe parcursul acestui curs, vom
cunoate ideile i conceptele de baz ale programrii orientate pe
obiect, urmrind dezvoltarea lor logic i actualizarea treptat. Tema
central va fi nsuirea modului de gndire abstract i nelegerea
programrii abstracte. Este deosebit de important s avem baze
teoretice solide care vor uura nvarea ulterioar a tehnicilor
practice de proiectare i scriere a software-ului orientat pe obiect.

Pentru nceput, s ne reamintim ce nseamn conceptul de dat. Data


este o caracteristic sau observaia unui fenomen. Orice fenomen,
indiferent dac este un obiect fizic, material, un eveniment sau un
proces, conine practic o cantitate nelimitat de date. O simpl piatr
conine date despre dimensiunea, greutatea, compoziia, locaia,
originea sa, despre numrul de molecule pe care le conine etc. Data
se poate exprima numeric, prin cuvinte sau prin imagini. Informaia
este o dat care are o valoare de utilizare, respectiv o dat care este
aplicabil, util. Diferena dintre noiunea de dat i cea de informaie
este important, dei n practic se folosesc deseori ca sinonime. Cnd
o informaie este introdus i stocat n calculator, ea devine dat.

Tipul de date

Tipul de date este determinat printr-un set (finit) de valori i printr-un


set de operaii i relaii asupra elementelor din setul respectiv.

De exemplu, tipul de date cunoscut ca numr ntreg (INTEGER) poate


fi reprezentat n felul urmtor:

({-32768, ..., -1, 0, 1, ..., 32767}, +, -, *, div, mod,


=,<)

Copyright Link group 1 / 11


Curs: Introducere n programarea orientat pe obiect - Java
Modul: Introducere
Unitate: Tipuri de date i structuri de date

n acest caz, setul de valori este reprezentat prin numerele ntregi de


la -32768 la 32767, asupra crora se pot executa operaii de adunare,
scdere, nmulire, mprire ntreag, modulo (restul de la mprirea
ntreag) i verificarea egalitii.

Tipurile de date difer ntre ele prin purttorul lor, respectiv prin setul
de valori de baz.

Tipurile de date de baz sunt:

Tipul ntreg: conine numere ntregi pozitive i negative a cror


gam depinde de numrul de bii pe care i ocup n memoria
computerului. Cnd asupra a dou date de tip ntreg se aplic o
operaie, rezultatul obinut este ntotdeauna o dat de tip numr
ntreg.

Tipul real: conine numere pozitive i negative reprezentate


ntr-o form normalizat. De exemplu, numrul 125,4 este
prezentat ca 0.01254E+4. Prima parte a acestui numr este
mantisa, valoarea de baz a numrului, iar cea de-a doua parte
este exponentul. Gama valorii depinde de numrul de cifre prin
care este reprezentat exponentului, n timp ce precizia depinde
de numrul de cifre folosit pentru reprezentarea mantisei
numrului.

Tipul logic: conine datele care pot s aib doar dou valori,
respectiv, adevrat (True) sau fals (False). n programare, True se
reprezint adesea prin valoarea 1, iar False prin valoarea 0.
Operaiile ce pot fi efectuate asupra tipului logic sunt I
(conjuncie), SAU (disjuncie) i NU (negaie).

Tipul caracter: se folosete pentru reprezentarea datelor


textuale. Datele de acest tip sunt alctuite din literele majuscule
i minuscule ale alfabetului, cifre zecimale, caractere speciale,
semne de punctuaie i caracterele blank. Fiecare caracter este

Copyright Link group 2 / 11


Curs: Introducere n programarea orientat pe obiect - Java
Modul: Introducere
Unitate: Tipuri de date i structuri de date

codat prin codul corespunztor (ASCII, EBCDIC...). Asupra datelor


de tip caracter se pot efectua operaii de comparaie i operaii
de concatenare.

Structura de date

Structura de date este un conglomerat de date. Ea se formeaz din


tipuri de date i din alte structuri (mai simple). Singurele operaii care
se pot efectua asupra structurilor sunt operaii de selecie i, prin
urmare, operaii de cutare i sortare. Sarcina operaiilor de selecie
este s separe de structur o dat simpl (o component a structurii)
sau s ne permit accesarea acesteia.

Trebuie s facem o distincie ntre structurile de date i metodele de


structurare a datelor. S lum de exemplu vectorul sau irul de
elemente (Array). Vectorul este o metod de structurare i o operaie
caracteristic de selecie care cuprinde indexarea. Fiecare element
este marcat printr-un index. Dup declaraia:

int[] vectorulMeu = new int[100];

vectorulMeu devine o structur. Deci, vectorul este un mod de


structurare a datelor, iar vectorulMeu este o structur de date definit
prin regulile specifice vectorului.

Structurile de date difer ntre ele prin operaiile de selecie i prin


modul de stocare n memorie. De aceea, difer i modurile de cutare
n structur. Le mprim n structuri liniare i nonliniare.

n structurile liniare, fiecare element, cu excepia primului i a


ultimului, se afl n relaie cu numai dou alte elemente, predecesorul
i succesorul. Din structurile liniare fac parte:

Copyright Link group 3 / 11


Curs: Introducere n programarea orientat pe obiect - Java
Modul: Introducere
Unitate: Tipuri de date i structuri de date

Vectorii sau irurile de elemente (arrays) sunt structuri de


date compuse din elemente de acelai tip care au un nume
comun. Vectorii pot fi unidimensionali sau multidimensionali. Un
element din ir poate fi accesat prin declararea numelui comun i
a unui n-tuplu ordonat de indexuri - A(I1, I2... In). Elementele
irului se stocheaz n locaii succesive (vecine) de memorie.
Vectorul este o structur de date static - dimensiunile lui nu se
pot schimba n cursul executrii programului. Introducerea i
scoaterea elementelor necesit rearanjarea complet a irului.
Elementele se acceseaz direct, prin declararea indexului.

Listele liniare nlnuite sunt structuri dinamice de date i


dimensiunile lor se pot schimba pe parcursul executrii
programului. Un element din list este format din dou pri:
partea informaional (conine datele) i next pointer (conine
adresa elementului urmtor). Nu necesit locaii succesive de
memorie pentru stocarea datelor. Inserarea i scoaterea
elementelor nu necesit rearanjarea total a listei. Elementele nu
se pot accesa direct, ci se citesc n mod secvenial.

Stack-uri (stivele) sunt structuri liniare, la care scrierea i citirea


datelor se face la captul care este partea de sus a stack-ului.
Stack-ul este o stuctur LIFO (Last In - First Out) i se poate
accesa doar elementul din partea de sus a stack-ului. Se poate
implementa ca structur static sau dinamic. Operaiile de baz
cu stack-ul sunt Push (pune noul element n partea de sus), Pop
(scoate elementul din partea de sus), iar operaiile obinuite sunt
Top (citete elementul din partea de sus, fr a-l scoate), Is
Empty (verific dac stack-ul este gol) i Is Full (verific dac
stack-ul este plin).

Cozile (Queues) sunt structuri liniare de date n care intrarea se


face la captul care reprezint sfritul cozii, iar citirea datelor se
face la cellalt capt, denumit capul cozii. Coada este o structur
FIFO (First In - First Out). Se poate implementa ca structur

Copyright Link group 4 / 11


Curs: Introducere n programarea orientat pe obiect - Java
Modul: Introducere
Unitate: Tipuri de date i structuri de date

static sau dinamic. Operaiile de baz care se pot efectua


asupra cozii sunt Enqueue (pune noul element la sfritul cozii),
Dequeue (scoate elementul care se afl n capul cozii), iar
operaiile obinuite sunt Head (citete elementul care se afl n
capul cozii, fr a-l scoate), Is Empty (verific dac coada este
goal) i Is Full (verific dac coada este plin).

n cazul structurilor neliniare, legturile dintre elementele structurii pot


fi arbitrare (fiecare element poate avea mai muli predecesori i
succesori). Din aceast categorie fac parte:

Arborii: structuri neliniare n care fiecare element are cte un


predecesor (printe) i un numr mai mare de succesori. Exist
un element rdcin n care nu apare niciun alt element din
arbore. Servete la reprezentarea datelor organizate ierarhic.

Grafurile: structuri neliniare ale cror elemente (noduri) pot


avea mai muli predecesori i mai muli succesori. Se refer la
grafurile matematice i servesc la reprezentarea reelelor de
drumuri, a reelelor de calculatoare etc.

Diferena dintre tip i structur const n faptul c asupra tipului de


elemente putem efectua anumite operaii i putem crea relaii ntre
ele, iar n cazul structurii putem face doar selectarea elementelor.

Cum devine tip o structur de date

Dup ce am clarificat ce este tipul de date i ce este structura de date,


ne putem pune urmtoare ntrebare: Exist vreun mod n care putem

Copyright Link group 5 / 11


Curs: Introducere n programarea orientat pe obiect - Java
Modul: Introducere
Unitate: Tipuri de date i structuri de date

crea tipul de date din structur? Rspunsul la ntrebarea aceasta l


vom gsi n exemplul unui String.

Stringul este o dat textual care poate s conin un mesaj ntr-o


form cu totul inteligibil omului. De exemplu, putem avea textul
"Astzi este mari, 3 august". n forma aceasta, Stringul reprezint un
ntreg care poart o informaie. ns, din punct de vedere tehnic,
Stringul este un ir de date de tip caracter i, ca atare, este o structur
de date. n unele limbaje de programare, cum este C sau Pascal,
Stringurile sunt implementate ca structuri, n tip ce alte limbaje de
programare, cum este BASIC, implementeaz Stringul ca tip de date
de baz (datorit faptului c asupra Stringurilor se pot efectua diverse
operaii i relaii: concatenarea Stringurilor, extragerea
SubStringurilor, compararea Stringurilor, etc.).

Din aceasta putem trage concluzia c decizia dac Stringul este tip
sau structur, este lsat pe seama persoanei care a creat limbajul de
programare. ns, ce se ntmpl dac, de exemplu n C, scriem
proceduri i funcii care fac operaii cu Stringuri?

char s[100];
typedef s STRING;

STRING Concat(STRING s1, STRING s2);


STRING SubString(STRING s, int fromIndex, int toIndex);
int Compare(STRING s1, STRING s2);

n acest mod, obinem numele structurii (STRING), setul de valori (100


de caractere) i operaiile care se pot efectua asupra acestui set
(Concat, SubString, Compare). Avem tot ce ne trebuie pentru ca
STRING s devin tip de dat. Deci, dei STRING este structur n
esen, prin definirea unui set de operaii asupra lui, el devine tip de
dat.

Putem converti orice structur de date n tip, dac i furnizm


operaiile care lucreaz cu aceasta.

Copyright Link group 6 / 11


Curs: Introducere n programarea orientat pe obiect - Java
Modul: Introducere
Unitate: Tipuri de date i structuri de date

De ce este important crearea unor noi tipuri de date?

Pentru o munc eficient, n echip sau pe un mare proiect, este


foarte important s scriem codul ct mai abstract posibil. Este mult
mai uor s lucrm cnd detaliile, care la un moment dat sunt
irelevante, sunt abstracte. S lum de exemplu situaia n care scriem
o aplicaie care lucreaz intensiv cu matricele. Vom economisi mult
timp i munc, dac definim tipul Matrice imediat la nceput. Deci,
numim o structur Matrice i apoi i furnizm operaii pentru lucrul cu
matrice - inversare, adunare, nmulire etc. Cnd n scrierea
programului apare nevoia de rezolvare a problemei prin folosirea
matricelor, trebuie doar s apelm procedurile deja scrise i testate.
Acest mod este mult mai convenabil dect s scriem coduri pentru
fiecare operaie de la nceput, de fiecare dat cnd este necesar - nu
numai c vom scrie mai puine coduri, ci i reducem drastic
posibilitatea de apariie a erorilor. nsui codul de program devine mai
clar i reflect mai fidel structura problemei.

Cnd, la scrierea programului, ajungem n locul unde trebuie s


efectum o operaie complicat cu matrice, putem face acest lucru n
cteva moduri. Cel mai inadecvat mod este s efectum toate
operaiile la faa locului:

int n=3, i, j;
for(i=0; i<n; i++){
for(j=0; j<n; j++){
/* codul care converte?te matricea A n A1 */
}
}
for(i=0; i<n; i++){
for(j=0; j<n; j++){
B1[i, j] = B[j, i]; /* transformarea matricei B n
B1 */
}
}
for(i=0; i<n; i++){

Copyright Link group 7 / 11


Curs: Introducere n programarea orientat pe obiect - Java
Modul: Introducere
Unitate: Tipuri de date i structuri de date

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

}
}
...

O soluie mai bun ar fi codul n care rezolvm problema cu ajutorul


funciilor. Este mult mai clar, iar funciile scrise pot fi folosite i pentru
rezolvarea altor probleme. Acest mod se poate folosi n, practic, toate
limbajele de programare:

A1 = Calculeaz?InversaMatricei(A);
B1 = Calculeaz?TranspusaMatricei(B);
P = nmul?e?teMatricele(A1, B1);
X1 = CalculeazaAdjunctaMatricei(X);
y = Determinant?(Y);
Q = nmul?e?teMatriceaCuNum?rul(X1, y);
C = Adun?Matricele(P, Q);

Soluia ideal ar fi s putem scrie toate acestea n felul urmtor:

C = Inv(A) * Trans(B) + Det(Y) * Adj(X)

Acest tip de declarare este caracteristic doar anumitor limbaje de


programare, n mod special, limbajelor orientate pe obiect. Este
evident c ultimul exemplu reprezint ceea ce dorim s realizm.

Copyright Link group 8 / 11


Curs: Introducere n programarea orientat pe obiect - Java
Modul: Introducere
Unitate: Tipuri de date i structuri de date

JOOP_01 - Introducere n programarea


orientat pe obiect
1. Programarea orientat pe obiect este o tehnic de
programare aprut:
a) n anii '80 ai secolului trecut
b) la nceputul secolului trecut
c) n anii '70 ai secolului trecut
d) n anii '90 ai secolului trecut
2. Data este:
a) o caracteristic sau o observaie despre un fenomen
b) caracteristic exprimat numeric
c) informaie care posed o valoare proprie de utilizare
d) mulime de informaii
3. Tipul de date este determinat prin:
a) setul de valori
b) pachetul de operaii i relaii
c) metoda de structurare
d) numele
4. Din tipurile de date de baz fac parte:
a) tipul ntreg
b) tipul logic
c) tipul String
d) vector
5. Tipul ntreg conine:
a) numere ntregi pozitive i negative
b) numere naturale
c) zero i numere pozitive
d) toate numerele

Copyright Link group 9 / 11


Curs: Introducere n programarea orientat pe obiect - Java
Modul: Introducere
Unitate: Tipuri de date i structuri de date

6. Structura de date este:


a) conglomerat de date
b) tip special de date
c) determinat prin setul de valori i prin pachetul de
operaii i relaii
d) metod de structurare a datelor
7. Prin crearea noilor tipuri de date:
a) codul programului devine mai clar
b) reducem posibilitatea de apariie a erorilor
c) codul programului devine mai scurt, dar pierde din
claritate
d) codul programului devine mai clar, dar mai puin
convenabil pentru lucrul n echip

Copyright Link group 10 / 11


Curs: Introducere n programarea orientat pe obiect - Java
Modul: Introducere
Unitate: Tipuri de date i structuri de date

1. Programarea orientat pe obiect este o tehnic de


programare aprut:
a
2. Data este:
a
3. Tipul de date este determinat prin:
a, b
4. Din tipurile de date de baz fac parte:
a, b
5. Tipul ntreg conine:
a
6. Structura de date este:
a
7. Prin crearea noilor tipuri de date:
a, b

Copyright Link group 11 / 11

S-ar putea să vă placă și