Sunteți pe pagina 1din 7

OreAIAIECIEEAModulCadrudidacticCursxxxx

Marti 16-18 D02


CHIRITA G.
Laboratorx
Vineri
MIRON M.
x
Marti 18-20
CHIRITA G.
x
Luni18-20
CHIRITA G.
x
OBREJA D.
Programareacalculatoarelorsilimbajede programareII
2
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
3
Programareacalculatoarelorsilimbajede 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
4
Programareacalculatoarelorsilimbajede programareII
?
Studiereaprincipiilorprogramariiorientatepeobiecteprinintermediullimbajuluideprogra
mareC++(invatareaprogramariiutilizandclasesiobiecte).?
Insusireadecatrestudentiaprincipiilorprogramariiorientatepeobiecte.?
DezvoltareadeprinderilordeutilizarealimbajuluiC++pentruprogramareaorientataobiect?
Realizareaunorprogramedecalitate
ObiectiveleCursului
5
Programareacalculatoarelorsilimbajede programareII
?
Cunostintegenerale:�Stapanireaprincipiilordebazasiamecanismelelorspecificeprogramar
iiorientateobiect(notiuniledeclasa,obiect,mostenire)�Safiecapabilsarealizezeintr-
unmodprofesionistaplicatiiorientatepeobiecte(inlimbajulC+
+),pentrurezolvareaunorproblemepractice.
Rezultatelevizate
6
Programareacalculatoarelorsilimbajede 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.
7
Programareacalculatoarelorsilimbajede programareII
Rezultatelevizate
1.Conceptede bazaale programariiorientate
peobiecte2.Clasesiobiecte3.Supraincarcareaoperatorilor4.Creareaierarhiilorde
clase5.Operatiide intrare/ iesirein limbajulC++6.Implementariale modelelorde
date7.Functiisiclasegenerice8.ExceptiisitratareaacestoraCuprinsulCursului
8
Programareacalculatoarelorsilimbajede programareII
CAPITOLUL 1
Conceptede bazaale programariiorientate obiect
9
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.)
�arelabazaideeaunificariidatelorcumodalitatiledeprelucrareaacestora;�manevreazaenti
tatireprezentatesubformadeobiecte
obiect= date + cod de tratarea acestordate
�oferaposibilitatidemodelareaobiectelor,aproprietatilorsiarelatiilordintreele�posib
ilitateadeadescompuneoproblema�ncomponentelesale(softmaimentenabil,adaptabil,recicl
abil)
LimbajePOO: Smalltalk, C++, Java, Delphi
CAP. 1Conceptede bazaale programariiorientate obiect
12
1.1 Introducere
Dinpunctdevedereistoric,primelelimbajecareaufolositnotiuneadeCLASA,aufost:-
SIMULA(1965)-SIMULA-2(1967)-SMALLTALK(1970)Elenus-
aupututimpunepepiatalimbajelordeprogramaredeoareceeraulimbajedesinestatatoaresimult
idintreprogramatorinueraudornicisa�nveteunnoulimbaj,�ndefavoarealimbajelordinacelmo
ment.
CAP. 1Conceptede bazaale programariiorientate obiect
13
1.1
IntroducereAstfeldeabia�nanul1980,c�nddejalimbajulCeraacceptat,uncolectivdeprograma
toricondusdeBjarneStroustrupaduceconceptuldeCLASA�ntr-
undialectallimbajuluiC,numitCwithClasses,iar�n1983ianastereunnoulimbajnumitC++
CAP. 1Conceptede bazaale programariiorientate obiect
14
1.1 IntroducereAplicatiiconstruitecuajutorullimbajuluiC++:?graficainteractiva?
proiectareainterfetelorutilizator?exploatarearetelelordecalculatoare?
tehniciledeproiectareacompilatoarelorLimbajulC+
+areunimpactfoartemaresiseimpunepepiatalimbajelordeprogramareobiectuale.
CAP. 1Conceptede bazaale programariiorientate obiect
15
1.1 IntroducereRezolvareauneiproblemesepoatefacepe3directii:
?Rezolvarea
orientata pe algoritm (pe actiune), �n care organizarea datelor este neesentiala?
Rezolvarea orientata pe date, actiunile fiind determinate doar de organizarea
datelor?Rezolvareaorientataobiect, care combinatendinteleprimelordouaabordari
CAP. 1Conceptede bazaale programariiorientate obiect
16
1.1 IntroducereLimbajulC+
+,casiPascal,utilizeazamodelulprogramariistructurateprocedurale,careconsta�ndescomp
unereaprogramului�nproceduri(functii),apelate�nordinea�ncaresedesfasoaraalgoritmul.
Datelesuntseparatedefunctiilecarelemanipuleaza.
CAP. 1Conceptede bazaale programariiorientate obiect
17
1.1 IntroducereFacilitatilePOO(conf.Pascou):?abstractizareadatelor?mostenirea?
�ncapsularea(ascunderea) informatiei?legarea dinamica (�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
oExtragereatrasaturiloresentialedespreoentitatesaugrupdeentitatisiignorareadetaliil
orneesentiale(EdwardBerard)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-
componentesoftwarecaremodeleazafenomenedinlumeareala?
Obiectelecarereprezintaaceeasiideesauconceptsuntdeacelasitipsipotfigrupate�nclase(c
oncretesauabstracte).
?Claseleimplementeazatipuridedate
Clasa=Date+Operatii.
Exemplu:tipulmatrice,int.
CAP. 1Conceptede bazaale programariiorientate obiect
23
1.2 AbstractizareadatelorDeexemplu:-
programatorul�sipoatedefinitipul(clasa)matricesioperatoriicarepotfiaplicatimatricil
or(*pentru�nmultireaadouamatrici,+pentruadunareaadouamatrici,-
pentruscadereaadouamatrici,etc).Astfel,elpoatefolositipulmatrice�nmodsimilarunuitip
predefinit:
matriceA, B; matriceC=A+B;
CAP. 1Conceptede bazaale programariiorientate obiect
24
1.2 Abstractizareadatelor?Clasa-Tipulunuiobiect,sablonalobiectului-Caracteristici:
numeleclasei, atribute, functiisirelatiicu alteclase?Obiect,instanta-
areproprietatiledefiniteinclasa-pentruoclasa-maimulteinstante-Obiectul�
-stare(se refera la elementele de date continute �n obiect si lavalorile asociate
acestora (datele membre)).-comportament(determinatde care actiunilepecare
obiectulpoate sa le execute (metodele)
CAP. 1Conceptede bazaale programariiorientate obiect
25
1.2 Abstractizareadatelor?Atribute-atributealeinstantei(datemembre,C++)-
atributealeclasei(datemembrestatice,C++)
�nlimbajulC+
+atributelesenumescdatemembre.Toatedatelemembresuntatributeinstanta.Atributeledecla
sasepotobtine�ncazuldatelormembrestatice(aceeasiadresadememorarepentruoriceinstanta
aclasei).
?Metode(functiimembre)
Ladefinireauneiclasesedefinescsimetodeleacesteia(numitesifunctiimembre).Fiecareobie
ctareacceslaunsetdefunctiicaredescriuoperatiilecarepotfiexecutateasupralui.Metodele
potfifolositedeinstanteleclaseirespective,darsideinstantelealtorclase(prinmecanismu
lmostenirii).
CAP. 1Conceptede bazaale programariiorientate obiect
26
1.2 Abstractizareadatelor?Creareasi�distrugerea�obiectelor:-staticsaudinamic-
constructori,destructori
Lacreareaunuiobiect,alocareamemorieisepoatefifacestaticsaudinamic(cuajutorulunorfun
ctiimembrespeciale,numiteconstructori).Eliberareamemorieiserealizeazacuajutorulunor
functiimembrespeciale,numitedestructori,�nmomentul�ncheieriiexistenteiobiectuluires
pectiv.
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?CaracteristicaPOO?Permiterefolosireacodului?
Permiteextindereafunctionalitatiiclaselorexistente?
Permitecreareauneiierarhiideclasesitrecereadelaclaselegeneralelaceleparticulare
CAP. 1Conceptede bazaale programariiorientate obiect
29
1.3 MostenireaRelatiaclasadebaza-cls.derivata
?A-
clasadebaza(esteogeneralizare);contineinformatiilecomune(disponibileprinmosteniresi
subclaseloracesteia).?B-
clasaderivata(particularizare,ospecializareaclaseiA);extindefunctionalitateaclaseid
ebazasicontineinformatiilespecifice.TERMINOLOGIE:?clasadebaza,clasaderivata?
clasa,subclasa?superclasa,clasa?clasaparinte,clasacopil
CAP. 1Conceptede bazaale programariiorientate obiect
30
1.3 MostenireaRelatiaclasadebaza-cls.derivata
?
SapresupunemcaAreprezintaclasamamiferelor(cuproprietatilecaracteristice:nascpuivii,
aus�ngecald,�sialapteazapuii,etc),iarBreprezintaclasaanimalelordomestice.�nmomentul
definiriiclaseiderivateB,aceastamostenestetoatecaracteristicileclaseiA,ram�n�nddesp
ecificatdoartrasaturiledistinctive.?
�nacestcaz,Aesteclasadebaza,iarBclasaderivata(subclasaaclaseiA).?
Sau:Besteclasa,iarAesteosuperclasaaclaseiB.?Mostenireapoatefi:unicasaumultipla.
CAP. 1Conceptede bazaale programariiorientate obiect
31
1.3 MostenireaTipuride mostenire
?Mostenireasimpla(unica):?Fiecareclasaaredoarosuperclasa?Structuraarbore
?Mostenireamultipla:?Oclasaaremaimultesuperclase?Structuraretea
CAP. 1Conceptede bazaale programariiorientate obiect
32
1.3 MostenireaModalitati de specializare a unei clase de
baza:
?introducereade extra-atributesiextrametode�n clasa derivata
(particularedoarclaseiderivate)?redefinireamembrilor�nclasederivate(polimorfism)
Tipuride mostenire
CAP. 1Conceptede bazaale programariiorientate obiect
33
1.3 Mostenirea?Mostenireamultipla�problemeposibile:
?
ambiguitate(pentruacelasiatributsemostenescvaloridiferite)Remediu:strategiiderezolv
areaconflictului(parintelecelmaiapropiat,celmaidepartat,etc.)?
mostenirerepetata(oclasaajungesamosteneascadelaaceeasiclasa,pedrumuridiferite�nrete
a)RemediuC++:?clasaEpoateaveadouacopiialeluiA,unapentrufiecaredrum;?
clasaEareosinguracopie,iarAesteclasavirtualadebazasipentruCsipentruB
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
?
Reflectafaptulcaatributeleinstantasimetodeleunuiobiect�ldefinescdoarpeacesta:spunem
cametodelesiatributeleunuiobiectsunt�private�,�ncapsulate�nobiect.?Interfatacu
obiectul releva foarte putin din ceea cese petrece�ninteriorullui.?Obiectul detine
controlul asupra atributelor instanta,care nu pot fi alterate de catre alte
obiecte.Exceptie: atributele de clasa (nu sunt �ncapsulate,
fiindpartajate�ntretoateinstanteleclasei) -> tehnicade �plasare� a valorilor �n
datele membre private ale obiectului, reprezinta un mecanism de ascundere adatelor.
CAP. 1Conceptede bazaale programariiorientate obiect
36
1.4 Incapsularea(ascunderea) informatiei
?C+
+:�ncapsularea�princontrolulaccesului,deoarecetoatedatelesifunctiilemembresuntcarac
terizateprintr-unniveldeacces(rezult�ndastfelomareflexibilitate).?niveldeacces?
private?protected?public?(friend)?Mostenire?private?protected?public
CAP. 1Conceptede bazaale programariiorientate obiect
37
1.4 Incapsularea(ascunderea) informatiei
?private: membrii(date simetode) la care accesulesteprivate pot fi
accesatidoarprinmetodeleclasei(nivelde accesimplicit); ?protected: acestimembripot
fi accesatiprinfunctiilemembreale claseisifunctiilemembreale claseiderivate; ?
public: membrii la care accesul este public pot fi accesati din orice punct al
domeniului de existenta a clasei respective; ?friend: acestimembripot fi
accesatiprinfunctiilemembreale functieiprietenespecificate.
Nivelulde accesla membriiuneiclase
CAP. 1Conceptede bazaale programariiorientate obiect
38
1.4 Incapsularea(ascunderea) informatiei
?Publica, unde �n clasa derivata nivelul de acces al membrilor este acelasi ca �n
clasa de baza; ?Privata, unde membrii protected si public din clasa baza devin
private �n clasa derivata.
�nlimbajulC++, nivelulde accespoateprecizasitipulde mostenire
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)
?
Obiecteleuneiclaseparintetrebuiecunoscute�nmomentulcompilarii.Efectulcombinatalmost
eniriipoatedeterminacaoanumitametodasafiespecializatadiferit(prinredefinire),pentru
subclasediferite.?
Polimorfismul=comportamentediferitealeuneimetode�nraportcutipulunuiobiect.Suprascri
erea(overriding)uneimetodeinmoddinamicgenereazapolimorfismul.?
Selectareauneimetoderedefinitepoatefirealizata�nfazadecompilare(legareainitiala,�ea
rlybinding�),sau�nmomentulexecutiei(legaret�rzie,�latebinding�).
CAP. 1Conceptede bazaale programariiorientate obiect
41
1.5 Legareadinamica(tarzie)?�nlimbajulC+
+,legareadinamicasepoaterealizaprinimplementareade:?
functiivirtuale(potfiredefinitepolimorfic);?
functiivirtualepure(doardeclarate,nudefinite).
�nprogramareaorientatapeobiecte(POO),ofunc?ievirtualasaumetodavirtuala
esteofunc?
iealcareicomportament,�nvirtuteadeclarariiacesteiacafiind"virtuala",estedeterminatd
ecatredefini?iauneifunc?iicuaceea?
isemnaturaceamai�ndepartatapeliniasuccesoralaaobiectului�ncareesteapelata.Ofunc?
iepurvirtualasaumetodapurvirtualaesteofunc?
ievirtualacetrebuieimplementatadeoclasaderivatacenuesteabstracta.Claselecon?
in�ndmetodepurvirtualesuntdenumite"abstracte";nupoateficreataoinstan?
apebazalor�nmoddirect,?
ioclasaderivataauneiclaseabstractepoatefifolositalacreareaunuiobiect
dacatoatemetodelepurvirtualealeaceleiclaseaufostimplementate�ncadrulsausau�nclasapa
rinte.Metodelepurvirtualedeobiceiauspecificatao(semnatura)�nsec?iuneadedeclara?
iiaprogramului?iniciodefini?ie(implementare).
CAP. 1Conceptede bazaale programariiorientate obiect
42
1.5 Legareadinamica(tarzie)?InC++polimorfismulnecesita:?mostenire?pointeri?
functiivirtuale
1
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�unaltulsaa
ctiveze(declanseze)ometoda,trimit�ndu-iunmesaj?C++:functiilemembre(metodele)-
accesate�nmodsimilaroricareifunctii,cudeosebireacaestenecesaraspecificareaobiectulu
icaruia�icorespundemetoda.?Pseudovariabile-
Limbajeledeprogramareorientateobiectposedadouavariabile(numitepseudo-
variabile)carediferadevariabilelenormaleprinfaptulcanulisepotatribuivalori�nmoddire
ct,decatreprogramator.
?�this�(pointercatreobiectulcurent)�c++?pointercatreclasaparinteaobiectuluicurent
CAP. 1Conceptede bazaale programariiorientate obiect
45
1.6 Alteaspecte
?
Metaclase=clasedeclase
Diferenteledintreclasesimetaclasesunt:?Clasadefineste caracteristici (atribute si
metode) ale instantelor de acel tip. Metodele pot fi folosite doar de obiectele
clasei, nu si de �nsasi clasa (restrictie). ?Metaclaselefurnizeaza un mijloc prin
care variabilele clasa pot fi implementate: �n unele limbaje OOP, variabilele clasa
sunt instantieri ale unei metaclase.
CAP. 1Conceptede bazaale programariiorientate obiect
46
1.6 Alteaspecte
?
Persistenta
-
Persistentareprezintatimpuldeviataalunuiobiect(�ntrecreareaobiectuluisistergereasa)
.Instanteleuneiclaseauuntimpdeviatadatdeexecutiauneimetodesauaunuibloc,decreareasau
stergereaspecificataexplicit�nprogramsaudedurata�ntreguluiprogram.Persistentaobiect
eloresteimportanta�nspecial�naplicatiiledebazededate.
?Supraincarcarea
(overloading)operatorilor-LimbajulC+
+furnizeazamodalitatidesupra�ncarcareaoperatorilor(overloading):acelasioperatorares
emnificatiidiferite,caredepinddenumarulsi/sautipulargumentelor.
CAP. 1Conceptede bazaale programariiorientate obiect
47
1.6 AlteaspecteGRESELI FRECVENTE EURISTICI
?Toatedateletrebuieascunseininteriorulclasei!?Datelepubliceafecteaza:?decompozitia?
inteligibilitatea?continuitatea?protectia?cuplarea?
Mentinetidatelesioperatiileinruditeinacelasiloc!?
Evitaticlaselecumultemetodedeaccesaredefiniteinintefetelepublice?
Oclasatrebuiesareprezinteosinguraabstractiune
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
PROGRAMAREACALCULATOARELORSILIMBAJEDE PROGRAMAREII
1

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