Documente Academic
Documente Profesional
Documente Cultură
Curs 1
Curs 1 - Programare orientată pe obiecte
Curs
Ș.l.dr.ing. Mihaela CRIȘAN-VIDA
mihaela.vida@upt.ro
Sala B019
Laborator
Ș.l.dr.ing. Mihaela CRIȘAN-VIDA
As.drd.inf. Oana Chirila
Curs 1 - Programare orientată pe obiecte
Curs
Marți 12 – 14 sala A115 (sapt 2 – 14)
Vineri 12 - 14 sala A117 (sapt 2 – 6)
Laboratoarele: OBLIGATORII!
Promovare (exemplu din 2015 – 2016)
Prez 1 Final Note de 10
48/81 72/81 9 (din care 1 după mărire)
Curs 1 - Programare orientată pe obiecte
Colectiv
Prof.dr.ing. Lăcrămioara STOICU-TIVADAR
Prof.dr.ing. Vasile STOICU-TIVADAR
Ș.l.dr.ing. Mihaela CRIȘAN-VIDA
Ș.l.dr.ing. Dorin BERIAN
As.dr.ing. Norbert GAL-NĂDĂȘAN
As.drd.inf. Oana Chirila
Drd.inf. Ioan VIRAG
Drd.ing. Nicola STELIAN
Curs 1 - Programare orientată pe obiecte
Aplicații medicale
Curs 1 - Programare orientată pe obiecte
Curs 1 - Programare orientată pe obiecte
• Visual Studio.NET
• Baze de date ORACLE (lucru cu Oracle Developer)
• Aplicaţii mobile -> dinamică mare, cerere în viitor
• Programarea sistemelor încorporate (embedded)
(ex. la Continental, Hella)
• UML
• ECLIPSE (IBM) – JAVA
• programare INTERNET (aplicații WEB, SOA, cloud,
JAVASCRIPT/HTML5 etc.)
Curs 1 - Programare orientată pe obiecte
Locuri de muncă
(majoritatea foarte bine plătite)
NOKIA, CONTINENTAL, IBM, HELLA, OCE, SAGUARO,
ENEL, Eta2u, Visma, Berg Computers, Lasting etc
Curs 1 - Programare orientată pe obiecte
Laboratoare
q Sala: B019
q Prezența: Obligatorie
q Scopul:
§ Dobândire de deprinderi practice în C++ la nivel
mediu-avansat
§ Antrenarea capacității de a analiza și rezolva
probleme concrete
Curs 1 - Programare orientată pe obiecte
Condiții de evaluare
Tendința actuală
Obiect
Curs 1 - Programare orientată pe obiecte
Identitate, clasificare
Curs 1 - Programare orientată pe obiecte
Curs 1 - Programare orientată pe obiecte
Clasa
Curs 1 - Programare orientată pe obiecte
Polimorfism
Curs 1 - Programare orientată pe obiecte
Moștenire
Curs 1 - Programare orientată pe obiecte
Concepte de bază
Concepte de bază
Abstractizarea
Curs 1 - Programare orientată pe obiecte
Încapsularea
Curs 1 - Programare orientată pe obiecte
Curs 1 - Programare orientată pe obiecte
Paradigma OO este potrivită pentru a ajuta la îmbunătăţirea celor două calităţi non-
comportamentale
Curs 1 - Programare orientată pe obiecte
De ce C++?
informa
o Standardul ANSII C++ : 1989, 1994, 1997 l
●
2011 ● ISO/IEC ●
C+
14882:2011
Compilatoarele existente pe piaţă trebuie să respecte standardul ANSII C++ (inclusiv Visual C, Borland C,
+11
Watcom C etc.) ●
2007 ● ISO/IEC TR ●
C+
19768:2007
Caracteristicile POO permit programelor să fie structurate pentru a fi clare, extensibile şi uşor de întreţinut, fără+TR1
pierderea eficienţei (Bjarne Stroustrup) ●
2003 ● ISO/IEC ●
C+
14882:2003 +03
●
1998 ● ISO/IEC ●
C+
14882:1998 +98
Curs 1 - Programare orientată pe obiecte
Comparație C – C++
C C++
Ex. 1
typedef struct CLS { class CLS{
int a,b; int a,b;
} cls; public:
cls oc_c; CLS (int z=0) {
ob_c.a=1; ob_c.b=1; a=b=z;
}
CLS ob_c(1);
Ex. 2
text=malloc(strlen(s)) text=new char [strlen(s)]
free(text) delete text
Curs 1 - Programare orientată pe obiecte
Operatori de intrare/ieșire
Cînd sînt folosiţi pentru operaţii de intrare/ieşire, operatorii << şi >> sînt capabilli să
manevreze orice tip de date încorporat în C++ (exemplu Programul 2, care cere
introducerea unei variabile float, una double şi un şir, apoi le afişează)
Clasa
secţiuni private (particulare), publice
funcţii membre, variabile membre
C++ class creează un nou tip de date care pot fi folosite pentru a construi obiecte de acel tip.
un obiect este o instanţiere (un exemplar) a unei clase exact în acelaşi fel în care altă variabilă
este de exemplu un exemplar al tipului de date int (adică o clasă este o abstractizare logică,
iar un obiect este real, clasa constituie modelul după care se generează obiecte concrete (care
există în memoria calculatorului)
Curs 1 - Programare orientată pe obiecte
Clasa – continuare 1
Forma generală a declarării unei clase este :
class nume_clasa {
date si functii private
public:
date si functii publice
} lista de obiecte;
Acolo unde trebuie introdus codul pentru funcţiile membre ale unei clase, trebuie specificată apartenenţa la clasă prin scrierea numelui clasei urmat de :: înainte de numele funcţiei. Exemplu :
void stiva::pune(int i);
{
if(virf_stiva==SIZE) {
cout << “Stiva este plina.”;
return;
}
stiv[virf_stiva]=i;
virf_stiva++;
}
:: este operatorul de specificare a domeniului (operator de rezoluţie)
Curs 1 - Programare orientată pe obiecte
Clasa – continuare 2
Mai multe clase pot folosi acelaşi nume de funcţie, iar compilatorul ştie care funcţie aparţine fiecărei
clase datorită operatorului de rezoluţie (polimorfism).
Referirea la un membru al clasei dintr-o secţiune de cod care nu face parte din acea clasă se face prin
numele obiectului cu care facem legătura, urmat de punct, astfel :
stiva stiva1, stiva2;
stiva1.init();
Important ! în exemplul de mai sus stiva1 şi stiva2 sînt obiecte distincte, iar iniţializarea obiectului
stiva1 nu provoacă iniţializarea obiectului stiva2. Singura legătură dintre ele este că ambele sînt obiecte
de acelaşi tip (tipul stiva).
Clasa – continuare 3
Atenţie ! Variabilele private ale unui obiect sînt accesibile doar funcţiilor membre ale
obiectului. În exemplu precedent, nu putem avea în programul principal:
stiva1.virf_stiva=0;
( am încerca să accesăm variabile din domeniul privat şi se generează un
mesaj de eroare)
Uzual funcţiile membre ale claselor sînt definite înainte de main() iar funcţiile
obişnuite (nemembre) sînt definite după main() - dar nu e obligatoriu. În aplicaţiile
uzuale, se foloseşte includerea claselor asociate unui program în fişiere antet.
Curs 1 - Programare orientată pe obiecte