Sunteți pe pagina 1din 11

OreAIAIECIEEAModulCadrudidacticCursxxxx

Marti 16-18 D02

CHIRITA G.

Laboratorx

Vineri

MIRON M.

Marti 18-20

CHIRITA G.

Luni18-20

CHIRITA G.

OBREJA D.

Programareacalculatoarelorşilimbajede programareII

GrupaMod de examinareNota laborator(+ seminar)20%Colocviulaborator40%Test scris40%AIAExamenS


1-14S 14in sesiuneIECVerificareS 1-14S 13 -14S 13 -14IEVerificareS 1-14S 13 -14S 13 -14EAExamenS 1-
14S 14in sesiune

minim 5minim 5

exemplu5*20%=1pct5*40%=2pct5*40%=2pct

Programareacalculatoarelorşilimbajede programareII

CatrinaO, CojocaruI, Turbo C++, Ed. Teora, Bucuresti, 1993JamsaK, KlanderL, TotuldespreC siC++
-Manualulfundamental de programare, Ed. Teora, Bucuresti, 2005NegrescuL., LimbajulC siC++
pentruincepatori, vol. I siII, Ed. Teora, Bucuresti, 2003StefanescuD., Programareain limbajeleC/C++,
MATRIXRom, Bucuresti, 2002StefanescuD., Segal C., Initierein limbajeleC/C++,
EdituraFundatieiUniversitare"Dunareade Jos", Galati, 2000StroustrupB., C++, Ed. Teora, Bucuresti,
2001BIBLIOGRAFIE

Programareacalculatoarelorşilimbajede programareII
StudiereaprincipiilorprogramariiorientatepeobiecteprinintermediullimbajuluideprogramareC++
(invatareaprogramariiutilizandclasesiobiecte).Insusireadecatrestudentiaprincipiilorprogramariiorientat
epeobiecte.DezvoltareadeprinderilordeutilizarealimbajuluiC+
+pentruprogramareaorientataobiectRealizareaunorprogramedecalitate

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

1.Conceptede bazaale programariiorientate


peobiecte2.Clasesiobiecte3.Supraincarcareaoperatorilor4.Creareaierarhiilorde clase5.Operatiide intrare/
iesirein limbajulC++6.Implementariale modelelorde
date7.Functiisiclasegenerice8.ExceptiisitratareaacestoraCuprinsulCursului

Programareacalculatoarelorşilimbajede programareII

CAPITOLUL 1

Conceptede bazaale programariiorientate obiect

Conceptede bazaale programariiorientate obiect

10
1. Introducere2. Abstractizareadatelor3. Mostenirea1. Mostenireasimpla2. Mostenireamultipla4.
Incapsularea(ascunderea) informatiei5. Legareadinamica(tarzie)6. AlteaspecteCAP. 1

CAP. 1Conceptede bazaale programariiorientate obiect

11

1.1 Introducere

ProgramareOrientataObiect(rom.)==ObjectOrientedProgramming(en.)

•arelabazaideeaunificăriidatelorcumodalităţiledeprelucrareaacestora;•manevreazăentităţireprezentates
ubformădeobiecte

obiect= date + cod de tratarea acestordate

•oferăposibilităţidemodelareaobiectelor,aproprietăţilorşiarelaţiilordintreele•posibilitateadeadescompu
neoproblemăîncomponentelesale(softmaimentenabil,adaptabil,reciclabil)

LimbajePOO: Smalltalk, C++, Java, Delphi

CAP. 1Conceptede bazaale programariiorientate obiect

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.

CAP. 1Conceptede bazaale programariiorientate obiect

13

1.1
IntroducereAstfeldeabiaînanul1980,cânddejalimbajulCeraacceptat,uncolectivdeprogramatoricondusdeBj
arneStroustrupaduceconceptuldeCLASĂîntr-
undialectallimbajuluiC,numitCwithClasses,iarîn1983ianaştereunnoulimbajnumitC++

CAP. 1Conceptede bazaale programariiorientate obiect

14

1.1 IntroducereAplicaţiiconstruitecuajutorullimbajuluiC+
+:graficăinteractivăproiectareainterfeţelorutilizatorexploatareareţelelordecalculatoaretehniciledep
roiectareacompilatoarelorLimbajulC+
+areunimpactfoartemareşiseimpunepepiaţalimbajelordeprogramareobiectuale.

CAP. 1Conceptede bazaale programariiorientate obiect

15
1.1 IntroducereRezolvareauneiproblemesepoatefacepe3direcţii:

Rezolvarea

orientată pe algoritm (pe acţiune), în care organizarea datelor este neesenţialaRezolvarea orientată pe
date, acţiunile fiind determinate doar de organizarea datelorRezolvareaorientataobiect, care
combinatendinteleprimelordouaabordari

CAP. 1Conceptede bazaale programariiorientate obiect

16

1.1 IntroducereLimbajulC+
+,caşiPascal,utilizeazămodelulprogramăriistructurateprocedurale,careconstăîndescompunereaprogramu
luiînproceduri(funcţii),apelateînordineaîncaresedesfăşoarăalgoritmul.Datelesuntseparatedefuncţiilecare
lemanipulează.

CAP. 1Conceptede bazaale programariiorientate obiect

17

1.1
IntroducereFacilităţilePOO(conf.Pascou):abstractizareadatelormoştenireaîncapsularea(ascunderea)
informaţieilegarea dinamică (“târzie”)

CAP. 1Conceptede bazaale programariiorientate obiect

18

1.1
IntroducereDefinireatermenilorAbstractizareIncapsulareAscundereainformatieiCuplareCoeziune

CAP. 1Conceptede bazaale programariiorientate obiect

19

1.1 IntroducereDefinireatermenilorAbstractizare

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 prioritatiDetalii esentiale: lungimea; obiectele prezente in
coada’operatiile (adaugare, stergere, gasire a unui obiect)Variatiuni: implementarede tip
listainlantuitasauvector;stiva, coada.

CAP. 1Conceptede bazaale programariiorientate obiect

20

1.1 IntroducereDefinireatermenilorIncapsulare

oInchidereatuturorpartiloruneiabstractiuniininteriorulunuicontainer
Ascundereainformatiilor

oAscundereapartiloruneiabstractiuni

Cuplarea

oPutereainteractiunilordintreobiecteledinsistem

Coeziunea

oGradulincaretask-urileefectuatedeunsingurmodulsuntlegatedinpunctdevederefunctional

Conceptede bazaale programariiorientate obiect

21

1. Introducere2. Abstractizareadatelor3. Mostenirea1. Mostenireasimpla2. Mostenireamultipla4.


Incapsularea(ascunderea) informatiei5. Legareadinamica(tarzie)6. AlteaspecteCAP. 1

CAP. 1Conceptede bazaale programariiorientate obiect

22

1.2 AbstractizareadatelorObiectele-
componentesoftwarecaremodeleazăfenomenedinlumearealăObiectelecarereprezintăaceeaşiideesauco
nceptsuntdeacelaşitipşipotfigrupateînclase(concretesauabstracte).

Claseleimplementeazătipuridedate

Clasă=Date+Operaţii.

Exemplu:tipulmatrice,int.

CAP. 1Conceptede bazaale programariiorientate obiect

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;

CAP. 1Conceptede bazaale programariiorientate obiect

24

1.2 AbstractizareadatelorClasa-Tipulunuiobiect,sablonalobiectului-Caracteristici: numeleclasei,


atribute, funcţiişirelaţiicu alteclaseObiect,instanta-areproprietatiledefiniteinclasa-pentruoclasa-
maimulteinstante-Obiectul–

-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 AbstractizareadatelorAtribute-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).

CAP. 1Conceptede bazaale programariiorientate obiect

26

1.2 AbstractizareadatelorCreareasi“distrugerea”obiectelor:-staticsaudinamic-constructori,destructori

Lacreareaunuiobiect,alocareamemorieisepoatefifacestaticsaudinamic(cuajutorulunorfuncţiimembrespec
iale,numiteconstructori).Eliberareamemorieiserealizeazăcuajutorulunorfuncţiimembrespeciale,numited
estructori,înmomentulîncheieriiexistenţeiobiectuluirespectiv.

Conceptede bazaale programariiorientate obiect

27

1. Introducere2. Abstractizareadatelor3. Mostenirea1. Mostenireasimpla2. Mostenireamultipla4.


Incapsularea(ascunderea) informatiei5. Legareadinamica(tarzie)6. AlteaspecteCAP. 1

CAP. 1Conceptede bazaale programariiorientate obiect

28

1.3
MostenireaCaracteristicăPOOPermiterefolosireacoduluiPermiteextindereafuncţionalităţiiclaselorexis
tentePermitecreareauneiierarhiideclaseşitrecereadelaclaselegeneralelaceleparticulare

CAP. 1Conceptede bazaale programariiorientate obiect

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,clasaderivataclasa,subclasasuperclasa,clasaclasaparinte,c
lasacopil

CAP. 1Conceptede bazaale programariiorientate obiect

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ă.

CAP. 1Conceptede bazaale programariiorientate obiect

31

1.3 MostenireaTipuride mostenire

Mostenireasimpla(unica):FiecareclasăaredoarosuperclasaStructuraarbore

Mostenireamultipla:OclasăaremaimultesuperclaseStructuraretea

CAP. 1Conceptede bazaale programariiorientate obiect

32

1.3 MostenireaModalităţi de specializare a unei clase de

bază:

introducereade extra-atributeşiextrametodeîn clasa derivată


(particularedoarclaseiderivate)redefinireamembrilorînclasederivate(polimorfism)

Tipuride mostenire

CAP. 1Conceptede bazaale programariiorientate obiect

33

1.3 MostenireaMostenireamultipla–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

Conceptede bazaale programariiorientate obiect


34

1. Introducere2. Abstractizareadatelor3. Mostenirea1. Mostenireasimpla2. Mostenireamultipla4.


Incapsularea(ascunderea) informatiei5. Legareadinamica(tarzie)6. AlteaspecteCAP. 1

CAP. 1Conceptede bazaale programariiorientate obiect

35

1.4 Incapsularea(ascunderea) informatiei

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.

CAP. 1Conceptede bazaale programariiorientate obiect

36

1.4 Incapsularea(ascunderea) informatiei

C++:încapsularea–
princontrolulaccesului,deoarecetoatedateleşifuncţiilemembresuntcaracterizateprintr-
unniveldeacces(rezultândastfelomareflexibilitate).niveldeaccesprivateprotectedpublic(friend)Mo
stenireprivateprotectedpublic

CAP. 1Conceptede bazaale programariiorientate obiect

37

1.4 Incapsularea(ascunderea) informatiei

private: membrii(date şimetode) la care accesulesteprivate pot fi


accesaţidoarprinmetodeleclasei(nivelde accesimplicit); protected: aceştimembripot fi
accesaţiprinfuncţiilemembreale claseişifuncţiilemembreale claseiderivate; public: membrii la care
accesul este public pot fi accesaţi din orice punct al domeniului de existenţă a clasei respective; friend:
aceştimembripot fi accesaţiprinfuncţiilemembreale funcţieiprietenespecificate.

Nivelulde accesla membriiuneiclase

CAP. 1Conceptede bazaale programariiorientate obiect

38

1.4 Incapsularea(ascunderea) informatiei

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ă.

ÎnlimbajulC++, nivelulde accespoateprecizaşitipulde moştenire


Conceptede bazaale programariiorientate obiect

39

1. Introducere2. Abstractizareadatelor3. Mostenirea1. Mostenireasimpla2. Mostenireamultipla4.


Incapsularea(ascunderea) informatiei5. Legareadinamica(tarzie)6. AlteaspecteCAP. 1

CAP. 1Conceptede bazaale programariiorientate obiect

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”).

CAP. 1Conceptede bazaale programariiorientate obiect

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).

CAP. 1Conceptede bazaale programariiorientate obiect

42

1.5 Legareadinamica(tarzie)InC++polimorfismulnecesita:mostenirepointerifunctiivirtuale

Conceptede bazaale programariiorientate obiect

43

1. Introducere2. Abstractizareadatelor3. Mostenirea1. Mostenireasimpla2. Mostenireamultipla4.


Incapsularea(ascunderea) informatiei5. Legareadinamica(tarzie)6. AlteaspecteCAP. 1
/

CAP. 1Conceptede bazaale programariiorientate obiect

44

1.6 Alteaspecte

Comunicareaintreobiectemesaje-
trimitereademesaje(invocareametodelor)intreobiecte:unobiectpoate“stimula”unaltulsăactiveze(declanş
eze)ometodă,trimiţându-iunmesajC++: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

CAP. 1Conceptede bazaale programariiorientate obiect

45

1.6 Alteaspecte

Metaclase=clasedeclase

Diferenţeledintreclaseşimetaclasesunt:Clasadefineşte caracteristici (atribute şi metode) ale instanţelor


de acel tip. Metodele pot fi folosite doar de obiectele clasei, nu şi de însăşi clasa (restricţie).
Metaclaselefurnizează un mijloc prin care variabilele clasă pot fi implementate: în unele limbaje OOP,
variabilele clasă sunt instanţieri ale unei metaclase.

CAP. 1Conceptede bazaale programariiorientate obiect

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.

CAP. 1Conceptede bazaale programariiorientate obiect

47

1.6 AlteaspecteGRESELI FRECVENTE EURISTICI

Toatedateletrebuieascunseininteriorulclasei!
Datelepubliceafecteaza:decompozitiainteligibilitateacontinuitateaprotectiacuplareaMentinetida
telesioperatiileinruditeinacelasiloc!
EvitaticlaselecumultemetodedeaccesaredefiniteinintefetelepubliceOclasatrebuiesareprezinteosingura
abstractiune

CAP. 1Conceptede bazaale programariiorientate obiect

48

1.6 AlteaspectePROGRAMATOR/PROIECTANT POO IDEAL

Capabilde gandireabstractaPoate trata bine incertitudinileComunicarezonabil

49

CAP. 1Conceptede bazaale programariiorientate obiect

SFARSITUL INTRODUCERII IN POO

PROGRAMAREACALCULATOARELORŞILIMBAJEDE PROGRAMAREII

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