Sunteți pe pagina 1din 9

Lect.dr.

HAUER ILEANA
Departament Sisteme Informaționale pentru Afaceri, FEAA

1) Cursuri și seminarii
Cursuri/seminarii online Google Meet
https://meet.google.com/xuq-eekg-pkz
Material disponibil online
www.hauers.org/ sau https://elearning.e-uvt.ro
user/passw communicate pe email fiecarui student
2) Examen
2 puncte teste online teorie- în timpul semestrului
1 punct START
2 puncte Test1 aplicație cu str alternativă- minim pentru promovare
5 puncte Test2 aplicație
Suplimentar 2 puncte participarea activă la ore ( 0.2 fiecare intervenție)
Bibliografie
Muntean Cornelia coordonator, Hauer Ileana –Limbajul C++ și Programarea
orientată pe obiecte, Editura de Vest, 2019---preț 40 lei

1
Herbert Schildt, C++ Manual complet, Editura Teora (traducere, 2012);

2
Partea I-a: Introducere în abordarea orientată spre obiecte (OO)
Evoluția către abordarea OO
Scurt istoric C/C++
Programare structurată versus POO
Partea a II-a: Fundamente ale limbajului C++ -
Variabile și tipuri de date Operatori
Structuri de control
Funcții. Array-uri, stringuri, pointeri și alocare dinamică a memoriei
Partea a III-a: Programare orientată pe obiecte
Fundamente: Clase, constructori/destructori, supraîncărcarea constructorilor,
constructorul implicit, pointeri spre clase, clase definite cu struct și union
Lucrul cu clase: Supraîncărcarea operatorilor, cuvântul cheie this, membrii statici
Prietenie și moștenire: Funcții prietene, clase prietene, moștenirea între clase etc

3
CURSUL 1
Subiecte discutate
A) Ce este POO
B) Concepte de bază: structura unui program
C) Variabile, tipuri de date, operatori (reluat in Cursul 3)
D) Exemple de aplicații

A)
Limbajul de programare C este fundamentul lui C++, și de fapt C-ul este
baza a multor limbaje moderne, cum ar fi Java, JavaScript, Pearl, PHP, Python și
multe altele. Dezvoltat de către Dennis Ritchie și Brian Kerningham la Bell Labs in
1969, C-ul a fost destinat ca o alternativă pentru limbajul de asamblare pentru a crea
sisteme de operare, utilitare și alte coduri la nivel de sistem. C-ul este un limbaj mic,
cu doar 32 de cuvinte-cheie.
Dacă privim la nivelurile de tehnologie ale unui computer ca la o stivă, C-ul
este în mod curent folosit pentru a scrie cod la toate nivelurile, dar cel mai frecvent
e utilizat pentru nivelurile joase. Aproape tot ce este firmware, aproape toate
sistemele de operare moderne și o parte însemnată a softurilor de aplicații sunt scrise
în C.

Limbajul C++
C++, numit la început "C with classes" a fost dezvoltat în 1979-1980 de către
danezul Bjarne Stroustrup. Acesta a dus la îmbunatatirea C-ului prin adăugarea unor
noi facilități, printre care cea mai importantă a fost lucrul cu clase și obiecte, deci
paradigma de programare orientată pe obiecte (POO).

4
Dacă privim la nivelurile de tehnologie ale unui computer ca la o stivă, C++
este folosit pentru a scrie cod la toate nivelurile cu excepția firmware-ului, având
cea mai largă utilizare la nivelul aplicațiilor.

Astăzi un număr mare de aplicații pe scară medie și largă sunt scrise în C++. Lista
unor astfel de aplicații este foarte vastă, și include Microsoft Office, Adobe
Photoshop, Illustrater, FireFox, Google Chrome, sisteme de aprovizionare, service
și evidență a plăților pentru telefonie și internet, chiar și site-uri web renumite, ca
Amazon, Facebook și Google sunt scrise integral în C++ sau au resurse back-end
semnificative scrise în C++.
În mod sigur nu există dubii astăzi cu privire la faptul că societățile
funcționează cel mai bine atunci când:
 controlul centralizat este menținut la un nivel minim;
 inteligența este distribuită pe cât de mult posibil;
 fiecare persoană este suficient de deșteaptă să înțeleagă pentru sine
însăși legile societății pentru binele comun;
 structurile organizaționale de nivel mai înalt, adesea organizate în
formă de ierarhii, facilitează propagarea mesajelor de dezvoltare a
societății în susul și în josul ierarhiilor;
Programele mari orientate-obiect nu diferă de cele enunțate mai sus.
Un discurs cu privire la societăți este eficientizat dacă se grupează împreună
toate acele obiecte care au aceleași caracteristici. Ne-am putea referi atunci la aceste
grupuri ca fiind clase. De exemplu, toți oamenii implicați în sistemul educațional
vor trebui să aibe anumite atribute profesionale comune. Putem spune că acele
atribute comune definesc clasa domeniu educatie. Toate cadrele didactice
universitare – clasa cadre universitare fiind o subclasă a clasei domeniu educatie
– trebuie să posede atributele celor din clasa domeniu educatie, dar mai trebuie de
asemenea să posede atribute adiționale datorită specializării și formării lor în
domeniul în care activează.
5
Această analogie conduce direct la proiectarea de software bazat pe obiecte.
Toate obiectele care posedă aceleași atribute și manifestă aceleași
comportamente sunt grupate într-o singură clasă. De fapt, mai întâi se definește
clasa și doar după aceea se creează obiecte individuale printr-un proces numit
instanțierea unei clase. Toate obiectele care posedă atributele și comportamentele
unei clase definite anterior, care însă posedă în același timp atribute și
comportamente adiționale mai specializate, sunt reprezentate ca o subclasă a clasei
definite anterior.
Stilul de programare bazat pe obiecte duce la împărțirea aplicațiilor în mai
multe module, astfel încât cel ce dezvoltă un modul nu trebuie să cunoască detaliile
de implementare a altor module. Domeniul în care acest stil de programare s-a
dovedit cel mai util este dezvoltarea interfețelor utilizator și a aplicațiilor bazate pe
acestea.
Limbaje OO utilizate astăzi pe scară largă sunt foarte multe la număr,
începând cu C++, Objective-C, C#, Visual Basic.NET, VBA, VBScript, F#, Visual
FoxPro, Visual Prolog, Java, Perl începând cu versiunea 5, PHP5, Python, ABAP
ș.a
Limbajele de nivel înalt așa-numite structurate (de genul Basic, Pascal si C)
aduc o creștere substanțială a nivelului de abstractizare mai ales în exprimarea
operațiilor. Acestea sunt redate cu ajutorul structurilor de control (structuri liniare,
alternative și repetitive), iar "cărămizile" din care este construit un program sunt
subprogramele (funcțiile și procedurile). Structurile de date oferite de aceste limbaje
rămân însă destul de sărace pentru a acoperi complexitatea problemelor de rezolvat.

 Un program conceput conform unei metode procedurale pune accentul pe


algoritmii care transformă datele inițiale ale unei probleme în rezultate.
 Algoritmii sunt structurați în subprograme cărora li se furnizează date sub
formă de parametri sau care accesează datele respective prin intermediul unui
fond global comun (figura.3).

6
Figura. 3

Limbajele de programare orientate pe obiecte (LPOO) aduc o nouă viziune


asupra dezvoltării programelor, urmărind să acopere "slăbiciunile" limbajelor
structurate privind structurile de date. Mai precis, programatorului i se dă
posibilitatea de a-și construi propriile tipuri de date, dotate cu operațiile necesare,
care să "mimeze" cât mai fidel entitățile din domeniul problemei de rezolvat.
Obiectele sunt cheia înțelegerii tehnologiei OO. Privind în jur veți vedea o
sumedenie de obiecte care vă înconjoară în lumea reală: pisica, patul, telefonul,
bicicleta etc.
Obiectele din lumea reală au două caracteristici: Toate au niște atribute de
stare și unele comportamente/operații. Spre exemplu pisicile au atribute de stare
(nume, culoare, rasă) și comportamente (mieunat, zgâriat, mâncat). Bicicletele de
asemenea au atribute de stare (viteza curentă, cadența de pedalare) și operații
(schimbarea de viteză, schimbarea cadenței, frânare). Identificarea atributelor și
operațiilor/comportamentelor pentru obiectele din lumea reală este un bun început
pentru a ne obișnui cu gândirea în termenii POO.
Un program dezvoltat cu ajutorul tehnologiei obiectuale are drept unitate de
constructie nu subprogramul, ci obiectul (fig.4).

7
Figura. 4.
Un obiect înglobează date și operații și reprezintă o abstracțiune a unei
entități din lumea reală.
Obiectele componente interacționează, iar rezultatul acestei interacțiuni o
reprezintă transformarea datelor de intrare în date de ieșire, adică rezolvarea
problemei.

Într-un program dezvoltat în manieră obiectuală NU mai avem date globale


(sau în orice caz, foarte puține). Datele sunt repartizate și înglobate în obiecte. Putem
spune că metoda obiectuală de dezvoltare conduce la o mai bună respectare a unor
principii ale ingineriei software cum ar fi:
 localizarea și modularizarea: codul sursă corespunzător unui obiect poate fi
scris și actualizat independent de alte obiecte;
 ascunderea informației: un obiect are, după cum vom vedea în curând, o
interfață publică pe care celelalte obiecte o pot utiliza în vederea comunicării.
Dar, pe lângă interfața publică, un obiect poate include date și operații private,
"ascunse" față de alte obiecte, și care pot fi modificate oricând, fără a afecta
restul obiectelor.
 reutilizarea codului: multe clase de obiecte pot fi definite pe baza altor clase
deja existente, preluându-se automat (prin moștenire) conținutul acestora din
urmă;

CONCLUZII
Programarea orientată pe obiecte este o metoda de implementare în care
programele sunt organizate ca ansamble de obiecte ce interacționează unele cu
altele, fiecare obiect reprezentând instanța unei clase; fiecare clasă aparține
unei ierarhii în cadrul căreia clasele sunt legate prin relații de moștenire.

8
Aceasta definiție cuprinde trei părți importante, și anume:
 obiectele și nu algoritmii sunt blocurile logice fundamentale;
 fiecare obiect este o instanță a unei clase. Clasa este o descriere a unei
mulțimi de obiecte caracterizate prin structură și comportament
similare, iar prin instanță înțelegem o valoare particulară din mulțimea
respectivă.
 clasele sunt legate între ele prin relații de moștenire.

Pe lângă sintaxa limbajului va trebui să vă însușiți pentru fiecare limbaj conceptele


de încapsulare, moștenire și polimorfism, deoarece aceste trei concepte reprezintă
baza oricărui limbaj orientat-obiect.

Încapsularea nu reprezinta altceva decât proprietatea claselor de obiecte de a


grupa sub aceeași structura datele și metodele aplicabile asupra datelor. Clasele din
C++ permit separarea datelor în date private și date publice. Programele utilizatorilor
pot accesa și utiliza datele unui obiect, declarate private, numai prin utilizarea unor
metode definite public. Separarea datelor în secțiuni de date publice și private
determină protejarea datelor față de utilizarea lor eronata în programe. Încapsularea,
este deci contopirea datelor cu codul (metode de prelucrare și acces la date).
Moștenirea este o proprietate prin care o clasa de obiecte poate fi obtinută
din derivarea unei clase sau a mai multor clase anterior definite. Definirea unei alte
clase prin derivarea clasei de baza presupunea definirea caracteristicilor specifice
acesteia în raport cu cea de baza. Daca am defini clasa de baza Cai aceasta ar trebui
sa conțină caracteristicile comune ale tuturor raselor de cai : nume, origine, inaltime,
greutate si culoare. Urmatorul nivel de declarare a tipului de clase de cai poate fi mai
detaliat. De exemplu, clasa CaiCuPete și clasa CaiFaraPete, ar trebui sa mosteneasca
toate caracteristicile comune care au fost definite la clasa de baza Cai alaturi de
caracteristicile specifice claselor derivate cum ar fi : la clasa CaiCuPete :lungimea
parului, culoarea petelor, cal de cursa iar la clasa CaiFaraPete: lungimea parului, tip
de utilizare (de tractiune, de curse, etc). Cu alte cuvinte o clasă poate fi extinsă prin
adăugarea de noi funcționalități.
Polimorfism –într-o ierahie de clase obținută prin moștenire, o metodă poate
avea implementări diferite la nivele diferite în acea ierarhie.

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