Documente Academic
Documente Profesional
Documente Cultură
CHIRITA G.
Laboratorx
Vineri
MIRON M.
Marti 18-20
CHIRITA G.
Luni18-20
CHIRITA G.
OBREJA D.
Programareacalculatoarelorşilimbajede programareII
minim 5minim 5
exemplu5*20%=1pct5*40%=2pct5*40%=2pct
Programareacalculatoarelorşilimbajede programareII
CatrinaO, CojocaruI, Turbo C++, Ed. Teora, Bucuresti, 1993JamsaK, KlanderL, TotuldespreC siC++
-Manualulfundamental de programare, Ed. Teora, Bucuresti, 2005NegrescuL., LimbajulC siC++
pentruincepatori, vol. I siII, Ed. Teora, Bucuresti, 2003StefanescuD., Programareain limbajeleC/C++,
MATRIXRom, Bucuresti, 2002StefanescuD., Segal C., Initierein limbajeleC/C++,
EdituraFundatieiUniversitare"Dunareade Jos", Galati, 2000StroustrupB., C++, Ed. Teora, Bucuresti,
2001BIBLIOGRAFIE
Programareacalculatoarelorşilimbajede programareII
StudiereaprincipiilorprogramariiorientatepeobiecteprinintermediullimbajuluideprogramareC++
(invatareaprogramariiutilizandclasesiobiecte).Insusireadecatrestudentiaprincipiilorprogramariiorientat
epeobiecte.DezvoltareadeprinderilordeutilizarealimbajuluiC+
+pentruprogramareaorientataobiectRealizareaunorprogramedecalitate
ObiectiveleCursului
Programareacalculatoarelorşilimbajede programareII
Cunostintegenerale:•Stapanireaprincipiilordebazasiamecanismelelorspecificeprogramariiorientateobie
ct(notiuniledeclasa,obiect,mostenire)•Safiecapabilsarealizezeintr-
unmodprofesionistaplicatiiorientatepeobiecte(inlimbajulC++),pentrurezolvareaunorproblemepractice.
Rezultatelevizate
Programareacalculatoarelorşilimbajede programareII
Cunostintedespecialitate:•Insusireanotiunilorspecificeprogramariiorientate obiect(notiuneadeclasa,
obiect, metoda, functie prietena, mostenire, legare dinamica) si
amecanismelorspecificeacesteia.•Dobandireadeprinderilorde programarein limbajululC++.•Sa fie
capabilsaconceapasisaimplementezeo ierarhiede clasefolositain rezolvarea unor probleme
concrete.•Insusirea unui stil de programare profesionist.
Programareacalculatoarelorşilimbajede programareII
Rezultatelevizate
Programareacalculatoarelorşilimbajede programareII
CAPITOLUL 1
10
1. Introducere2. Abstractizareadatelor3. Mostenirea1. Mostenireasimpla2. Mostenireamultipla4.
Incapsularea(ascunderea) informatiei5. Legareadinamica(tarzie)6. AlteaspecteCAP. 1
11
1.1 Introducere
ProgramareOrientataObiect(rom.)==ObjectOrientedProgramming(en.)
•arelabazaideeaunificăriidatelorcumodalităţiledeprelucrareaacestora;•manevreazăentităţireprezentates
ubformădeobiecte
•oferăposibilităţidemodelareaobiectelor,aproprietăţilorşiarelaţiilordintreele•posibilitateadeadescompu
neoproblemăîncomponentelesale(softmaimentenabil,adaptabil,reciclabil)
12
1.1 Introducere
Dinpunctdevedereistoric,primelelimbajecareaufolositnoţiuneadeCLASĂ,aufost:-SIMULA(1965)-SIMULA-
2(1967)-SMALLTALK(1970)Elenus-
aupututimpunepepiaţalimbajelordeprogramaredeoareceeraulimbajedesinestătătoareşimulţidintreprogr
amatorinueraudornicisăînveţeunnoulimbaj,îndefavoarealimbajelordinacelmoment.
13
1.1
IntroducereAstfeldeabiaînanul1980,cânddejalimbajulCeraacceptat,uncolectivdeprogramatoricondusdeBj
arneStroustrupaduceconceptuldeCLASĂîntr-
undialectallimbajuluiC,numitCwithClasses,iarîn1983ianaştereunnoulimbajnumitC++
14
1.1 IntroducereAplicaţiiconstruitecuajutorullimbajuluiC+
+:graficăinteractivăproiectareainterfeţelorutilizatorexploatareareţelelordecalculatoaretehniciledep
roiectareacompilatoarelorLimbajulC+
+areunimpactfoartemareşiseimpunepepiaţalimbajelordeprogramareobiectuale.
15
1.1 IntroducereRezolvareauneiproblemesepoatefacepe3direcţii:
Rezolvarea
orientată pe algoritm (pe acţiune), în care organizarea datelor este neesenţialaRezolvarea orientată pe
date, acţiunile fiind determinate doar de organizarea datelorRezolvareaorientataobiect, care
combinatendinteleprimelordouaabordari
16
1.1 IntroducereLimbajulC+
+,caşiPascal,utilizeazămodelulprogramăriistructurateprocedurale,careconstăîndescompunereaprogramu
luiînproceduri(funcţii),apelateînordineaîncaresedesfăşoarăalgoritmul.Datelesuntseparatedefuncţiilecare
lemanipulează.
17
1.1
IntroducereFacilităţilePOO(conf.Pascou):abstractizareadatelormoştenireaîncapsularea(ascunderea)
informaţieilegarea dinamică (“târzie”)
18
1.1
IntroducereDefinireatermenilorAbstractizareIncapsulareAscundereainformatieiCuplareCoeziune
19
1.1 IntroducereDefinireatermenilorAbstractizare
oExtragereatrasaturiloresentialedespreoentitatesaugrupdeentitatisiignorareadetaliilorneesentiale(Edwa
rdBerard)oProcesulde identificarea modelelorcomunecare au variatiuni sistematice; o abstractiune
reprezinta un model comun si asigura un mijloc de a specifica variatiunea care trebuie folosita (Richard
Gabriel)•Exemplu:Model: coadade prioritatiDetalii esentiale: lungimea; obiectele prezente in
coada’operatiile (adaugare, stergere, gasire a unui obiect)Variatiuni: implementarede tip
listainlantuitasauvector;stiva, coada.
20
1.1 IntroducereDefinireatermenilorIncapsulare
oInchidereatuturorpartiloruneiabstractiuniininteriorulunuicontainer
Ascundereainformatiilor
oAscundereapartiloruneiabstractiuni
Cuplarea
oPutereainteractiunilordintreobiecteledinsistem
Coeziunea
oGradulincaretask-urileefectuatedeunsingurmodulsuntlegatedinpunctdevederefunctional
21
22
1.2 AbstractizareadatelorObiectele-
componentesoftwarecaremodeleazăfenomenedinlumearealăObiectelecarereprezintăaceeaşiideesauco
nceptsuntdeacelaşitipşipotfigrupateînclase(concretesauabstracte).
Claseleimplementeazătipuridedate
Clasă=Date+Operaţii.
Exemplu:tipulmatrice,int.
23
1.2 AbstractizareadatelorDeexemplu:-
programatorulîşipoatedefinitipul(clasa)matriceşioperatoriicarepotfiaplicaţimatricilor(*pentruînmulţireaa
douămatrici,+pentruadunareaadouămatrici,-
pentruscădereaadouămatrici,etc).Astfel,elpoatefolositipulmatriceînmodsimilarunuitippredefinit:
matriceA, B; matriceC=A+B;
24
-stare(se referă la elementele de date conţinute în obiect şi lavalorile asociate acestora (datele
membre)).-comportament(determinatde care acţiunilepecare obiectulpoate să le execute (metodele)
CAP. 1Conceptede bazaale programariiorientate obiect
25
1.2 AbstractizareadatelorAtribute-atributealeinstantei(datemembre,C++)-
atributealeclasei(datemembrestatice,C++)
ÎnlimbajulC+
+atributelesenumescdatemembre.Toatedatelemembresuntatributeinstanţă.Atributeledeclasăsepotobţi
neîncazuldatelormembrestatice(aceeaşiadresădememorarepentruoriceinstanţăaclasei).
Metode(functiimembre)
Ladefinireauneiclasesedefinescşimetodeleacesteia(numiteşifuncţiimembre).Fiecareobiectareacceslauns
etdefuncţiicaredescriuoperaţiilecarepotfiexecutateasupralui.Metodelepotfifolositedeinstanţeleclaseires
pective,darşideinstanţelealtorclase(prinmecanismulmoştenirii).
26
1.2 AbstractizareadatelorCreareasi“distrugerea”obiectelor:-staticsaudinamic-constructori,destructori
Lacreareaunuiobiect,alocareamemorieisepoatefifacestaticsaudinamic(cuajutorulunorfuncţiimembrespec
iale,numiteconstructori).Eliberareamemorieiserealizeazăcuajutorulunorfuncţiimembrespeciale,numited
estructori,înmomentulîncheieriiexistenţeiobiectuluirespectiv.
27
28
1.3
MostenireaCaracteristicăPOOPermiterefolosireacoduluiPermiteextindereafuncţionalităţiiclaselorexis
tentePermitecreareauneiierarhiideclaseşitrecereadelaclaselegeneralelaceleparticulare
29
1.3 MostenireaRelatiaclasadebaza-cls.derivata
A-
clasadebază(esteogeneralizare);conţineinformaţiilecomune(disponibileprinmoştenireşisubclaseloraceste
ia).B-
clasaderivată(particularizare,ospecializareaclaseiA);extindefuncţionalitateaclaseidebazăşiconţineinforma
ţiilespecifice.TERMINOLOGIE:clasadebaza,clasaderivataclasa,subclasasuperclasa,clasaclasaparinte,c
lasacopil
30
1.3 MostenireaRelatiaclasadebaza-cls.derivata
SăpresupunemcăAreprezintăclasamamiferelor(cuproprietăţilecaracteristice:nascpuivii,ausângecald,îşial
ăpteazăpuii,etc),iarBreprezintăclasaanimalelordomestice.ÎnmomentuldefiniriiclaseiderivateB,aceastamo
şteneştetoatecaracteristicileclaseiA,rămânânddespecificatdoartrăsăturiledistinctive.Înacestcaz,Aestecla
sădebază,iarBclasăderivată(subclasăaclaseiA).Sau:Besteclasă,iarAesteosuperclasăaclaseiB.Moştenirea
poatefi:unicăsaumultiplă.
31
Mostenireasimpla(unica):FiecareclasăaredoarosuperclasaStructuraarbore
Mostenireamultipla:OclasăaremaimultesuperclaseStructuraretea
32
bază:
Tipuride mostenire
33
1.3 MostenireaMostenireamultipla–problemeposibile:
ambiguitate(pentruacelaşiatributsemoştenescvaloridiferite)Remediu:strategiiderezolvareaconflictului(
părintelecelmaiapropiat,celmaidepărtat,etc.)moştenirerepetată(oclasăajungesămoşteneascădelaaceea
şiclasă,pedrumuridiferiteînreţea)RemediuC+
+:clasaEpoateaveadouăcopiialeluiA,unapentrufiecaredrum;clasaEareosingurăcopie,iarAesteclasăvirtu
alădebazăşipentruCşipentruB
Tipuride mostenire
35
Reflectăfaptulcăatributeleinstanţăşimetodeleunuiobiectîldefinescdoarpeacesta:spunemcămetodeleşiat
ributeleunuiobiectsunt“private”,încapsulateînobiect.Interfaţacu obiectul relevă foarte puţin din ceea
cese petreceîninteriorullui.Obiectul deţine controlul asupra atributelor instanţă,care nu pot fi alterate
de către alte obiecte.Excepţie: atributele de clasă (nu sunt încapsulate,
fiindpartajateîntretoateinstanţeleclasei) -> tehnicade “plasare” a valorilor în datele membre private ale
obiectului, reprezintă un mecanism de ascundere adatelor.
36
C++:încapsularea–
princontrolulaccesului,deoarecetoatedateleşifuncţiilemembresuntcaracterizateprintr-
unniveldeacces(rezultândastfelomareflexibilitate).niveldeaccesprivateprotectedpublic(friend)Mo
stenireprivateprotectedpublic
37
38
Publică, unde în clasa derivată nivelul de acces al membrilor este acelaşi ca în clasa de bază; Privată,
unde membrii protected şi public din clasa bază devin private în clasa derivată.
39
40
1.5 Legareadinamica(tarzie)
Obiecteleuneiclasepărintetrebuiecunoscuteînmomentulcompilării.Efectulcombinatalmoşteniriipoatede
terminacaoanumitămetodăsăfiespecializatădiferit(prinredefinire),pentrusubclasediferite.Polimorfismul
=comportamentediferitealeuneimetodeînraportcutipulunuiobiect.Suprascrierea(overriding)uneimetodei
nmoddinamicgenereazapolimorfismul.Selectareauneimetoderedefinitepoatefirealizatăînfazadecompila
re(legareainiţială,“earlybinding”),sauînmomentulexecuţiei(legaretârzie,“latebinding”).
41
1.5 Legareadinamica(tarzie)ÎnlimbajulC+
+,legareadinamicăsepoaterealizaprinimplementareade:funcţiivirtuale(potfiredefinitepolimorfic);funcţi
ivirtualepure(doardeclarate,nudefinite).
Înprogramareaorientatăpeobiecte(POO),ofuncțievirtualăsaumetodăvirtuală
esteofuncțiealcăreicomportament,învirtuteadeclarăriiacesteiacafiind"virtuală",estedeterminatdecătrede
finițiauneifuncțiicuaceeașisemnăturăceamaiîndepărtatăpeliniasuccesoralăaobiectuluiîncareesteapelată.
Ofuncțiepurvirtualăsaumetodăpurvirtualăesteofuncțievirtualăcetrebuieimplementatădeoclasăderivatăc
enuesteabstractă.Claseleconținândmetodepurvirtualesuntdenumite"abstracte";nupoateficreatăoinstanț
ăpebazalorînmoddirect,șioclasăderivatăauneiclaseabstractepoatefifolositălacreareaunuiobiect
dacătoatemetodelepurvirtualealeaceleiclaseaufostimplementateîncadrulsăusauînclasapărinte.Metodele
purvirtualedeobiceiauspecificatăo(semnătură)însecțiuneadedeclarațiiaprogramuluișiniciodefiniție(imple
mentare).
42
1.5 Legareadinamica(tarzie)InC++polimorfismulnecesita:mostenirepointerifunctiivirtuale
43
44
1.6 Alteaspecte
Comunicareaintreobiectemesaje-
trimitereademesaje(invocareametodelor)intreobiecte:unobiectpoate“stimula”unaltulsăactiveze(declanş
eze)ometodă,trimiţându-iunmesajC++:funcţiilemembre(metodele)-
accesateînmodsimilaroricareifuncţii,cudeosebireacăestenecesarăspecificareaobiectuluicăruiaîicorespun
demetoda.Pseudovariabile-
Limbajeledeprogramareorientateobiectposedădouăvariabile(numitepseudo-
variabile)carediferădevariabilelenormaleprinfaptulcănulisepotatribuivaloriînmoddirect,decătreprograma
tor.
“this”(pointercătreobiectulcurent)–c++pointercatreclasaparinteaobiectuluicurent
45
1.6 Alteaspecte
Metaclase=clasedeclase
46
1.6 Alteaspecte
Persistenta
-
Persistenţareprezintătimpuldeviaţăalunuiobiect(întrecreareaobiectuluişiştergereasa).Instanţeleuneiclas
eauuntimpdeviaţădatdeexecuţiauneimetodesauaunuibloc,decreareasauştergereaspecificatăexplicitînpro
gramsaudedurataîntreguluiprogram.Persistenţaobiecteloresteimportantăînspecialînaplicaţiiledebazeded
ate.
Supraincarcarea
(overloading)operatorilor-LimbajulC+
+furnizeazămodalităţidesupraîncărcareaoperatorilor(overloading):acelaşioperatoraresemnificaţiidiferite,
caredepinddenumărulşi/sautipulargumentelor.
47
Toatedateletrebuieascunseininteriorulclasei!
Datelepubliceafecteaza:decompozitiainteligibilitateacontinuitateaprotectiacuplareaMentinetida
telesioperatiileinruditeinacelasiloc!
EvitaticlaselecumultemetodedeaccesaredefiniteinintefetelepubliceOclasatrebuiesareprezinteosingura
abstractiune
48
49
PROGRAMAREACALCULATOARELORŞILIMBAJEDE PROGRAMAREII