Presentation is loading. Please wait.

Presentation is loading. Please wait.

C7 – LPO: Clase si Obiecte

Similar presentations


Presentation on theme: "C7 – LPO: Clase si Obiecte"— Presentation transcript:

1 C7 – LPO: Clase si Obiecte
CUPRINS Paradigme de programare Programarea orientata pe obiect, avantaje si principii Clasa, obiectul, definitii, crare si utilizare Incapsulare Modelare OO Compunere Mostenire Polimorfism

2 Obiective După parcurgerea acestui curs ar trebuie sa puteţi:
intelege conceptul de paradigma orientata pe obiect descrie avantajele si principiile POO intelege si opera cu clase si obiecte intelege modul de abordare a scrierii unei aplicatii orientate pe obiect prin prisma caractersticilor POO

3 Paradigme de programare
von Neumann da o arhitectura hardware in care codul si datele sunt stocate intr-o unica memorie interna de unde sunt extrase si prelucrate in procesor. paradigma defineste o strategie de abordare a organizarii codului; metodele de proiectare legate de arhitectura von Neuemann sunt legate strans de organizarea hardware a acestei arhitecturi si pleca fie de la date, fie de la cod, rezultand 2 paradigme: orientata pe proces: proiectarea pleacă de la cod (algoritm); algoritmi + structuri de date = Program. orientata de la obiect: proiectarea pleacă de la date ; obiecte + mesaje = Program

4 Avantaje POO Simplifică înţelegerea aplicaţiei
Reduce complexitatea sarcinilor în subgrupuri mai uşor de gestionat Creează cod reutilizabil Reduce complexitatea Reduce timpul de dezvoltare Codul se poate extinde (adapta) Subsistemele sunt clar definite Interacţiunile sunt clar definite Implementarea este încapsulată (codul şi datele sunt grupate)

5 Principii ale POO Încapsulare: păstrarea laolaltă a datelor împreună cu codul care le manipulează; metodele publice pot proteja datele private. Mostenire: partajarea între obiecte a funcþionalitãtii ºi a datelor comune => ierarhii de clasificare ce usureazã gestionarea conceptelor. Polimorfism: permite scrierea interfete generice pentru un grup de actiuni înrudite => se reduce complexitatea; Mesaje: Aplicatia este formata din mai multe obiecte ce colaboreaza intre ele pentru genera rezultatele dorite. Colaborarea apare intre obiectele legate între ele ce comunică prin mesaje; La nivel de obiect, fiecare operaţie are asociat un mesaj; Obiectul, la primirea unui mesaj valid, apelează, automat, operaţia asociată. In Java nu avem mesaje, metodele se apelează direct prin codul scris de programator.

6 Clasa clasa reprezintă un termen general asociat procesului de clasificare o descriere a unei multimi de obiecte ce au aceleasi atribute (date), operatii (metode sau cod) si legaturi; un obiect particulat poartă denumirea de instantă. datele sau valorile din atribute definesc starea (initiala sau curenta); codul defineste functionalitatea (operatiile permise sau actiunile asupra datelor); un sablon pentru alocarea memoriei fiind, din punctul de vedere al programatorului, un tip de data abstract pe baza cãruia se instantiazã obiectele (new - operator de creare, insantiere) Class1 ob1 = new Class1(); Class1 ob2; ob1.varsta = 10; ob2 = ob1; ob2.afisare(); int a, b=2; a = 1; b = a; printf(”%i”,a);

7 Obiectul Definitia depinde de contextul în care se lucrează:
filozofic: o entitate ce se poate recunoaşte ca fiind distinctă de altele - are identitate proprie teoria tipurilor: o structură de date împreună cu funcţiile de prelucrare a lor proiectarea oo: o abstractizare a unui obiect din lumea reală Contine date (atribute) si cod (comportament) create pe baza unei clase; Ascunde datele private, interne in spatele unei interfete publice ce implementeaza operatii; Proprietati comune ale obiectelor: identitate ➔ fiecare obiect este unic în spaţiu şi timp; stare (date sau variabile) ➔ definită de valorile de atribute; comportament (functii sau metode) ➔ definit prin operatiile ce se pot efectua asupra atributelor. Nu este un tip primitiv (ca int, boolean …) ci unul referinta, stocat pe heap (adresa unei locatii din RAM). Continutul obiectului se acceseaza printr-o referinta la obiect stocata într-o variabila numita variabila obiect.

8 Definiţia de clasă presupune descrierea precisă a formei şi a naturii acesteia. Pentru aceasta trebuie specificate datele (atributele) pe care le conţine şi codul (operaţiile) care va opera cu respectivele date. numele clasei publice trebuie să fie acelaşi cu numele fişierului sursă java: public class numne_clasa { ... } >>> nume_clasa.java file class nume_clasa extends nume_parinte { //STARE - ATRIBUTE // variabile de instanta tip v_1; . . . tip v_n; //COD – OPERATII // metode de instanta tip metoda_1(lista parametri) { //variabile locale corp_1 } tip metoda_k(lista parametri) { corp_k } //TERMINARE definitie de clasa

9 Crearea obiectelor, utilizare
obiectele se creează cu operatorul new: refOb = new nume_clasa(); refOb este o referinta (adresa unei locatii din RAM) new face urmãtoarele: alocă spaţiu in RAM (pe heap) pentru noul obiect; apelează o metodă specială numită constructor prin care se iniţializează obiectul; întoarce o referinţă la noul obiect (ce trebuie stocata imediat intr-o variabila referinta la obiect) Manipularea obiectelor si a continutului acestora se poate face doar prin referinte. Operatorul "punct" conecteazã obiectele cu membrii (variabilele de instanta si metodele) prin una din formele de scriere : refOb.v1 sau refOb.metoda_1().

10 Incapsularea si ascunderea datelor
Una dintre caracteristicile fundamentale ale POO (Programare Orientata pe Obiect) Combina datele si codul ce prelucreaza datele intr-o singura constructie de limbaj (clasa) Impreuna cu ascunderea datelor asigura mentenabilitatea, flexibilitatea si extensibilitatea codului. Aceasta se implementeaza prin controlul vizibiltatii membrilor utilizand specificatorii de acces: public, private si protected Se implementeaza prin accesul exclusiv la datele izolate (private) numai prin intermediul unei interfete din metode publice (public) Ascunderea implementarii dupa interfata are avantajele: nu pot fi realizate modificari ilegale ale datelor, deoarece accesul direct la ele este restricionat gruparea datelor şi a operatiilor ce se pot realiza cu ele permit depistarea uşoara a eventualelor probleme modificarile interne ale clasei nu se reflecta şi în afara ei (daca se pastreaza aceeaşi interfata), ca urmare restul programului nu trebuie modificat

11 Modelare OO Termenul de modelare a obiectelor se foloseste pentru a descrie procedura de cautare a obiectelor prin care sa descriem problema de rezolvat Rezultatul modelarii este modelul de obiecte in care toate datele sunt stocate sub forma de atribute in obiecte si unde singura modalitate de modificare a atributelor este prin utilizarea operatiilor Atributele pot fi uneori obiecte iar dependenţele între obiecte apar prin modul în care aceste legături, relaţii, asocieriilor se formează pentru a ne soluţiona problema Modelarea orientată pe obiect este despre găsirea obiectelor şi a dependenţelor între acestea. Dependentele ce se pot forma sunt de doua categorii: compunere mostenire

12 Compunerea apare atunci cand obiectele pot conţine referinţe la alte obiecte; comportamentul se poate modifica în timpul execuţiei, descrie starea obiectelor; defineşte o relaţie “has-a” între obiecte. comportamentul obiectului complex este definit prin comportamentul părţilor componente, distincte şi aflate în interacţiune. in procesul de descompunere al unui obiect complex în obiecte mai simple, acestea, deseori, vor putea fi reutilizate în alte aplicaţii public class Class2 { Class1 unAtribut; //atributul lui Class2 > obiect Class1 ... } Class2 ob2 = new Class2();//instantiere ob2 ob2.unAtribut = new Class1();//instantiere ob1

13 Mostenire prin moştenire, noua clasă preia toate caracteristicile clasei moştenite, la care mai poate adăuga unele noi; noua clasă o extinde pe cea moştenită, fiind o specializare a acesteia; defineste o relatie “is-a” între clase; comportament este fixat în momentul compilării, descrie date si functionalitate comunã între clase organizate intr-o ierarhie parinte-copil sau tip-subtip in care se evită repetarea scrierii codului; are la bazã partajarea functionalitãtiilor comune; dã o interfatã unicã unor comportamente distincte; creşte claritatea proiectului şi productivitatea, deoarece noi clase pot fi create pe baza unora existente. public class Dreptunghi extends Forma { ... }

14 Polimorfism vine din Greaca, inseamna ”forme multiple”
comportamentul unor clase intr-o ierarhie de mostenire depinde de tipul obiectului; desi numele metodelor raman aceeasi in ierarhie, codul din spatele metodelor se adapteaza la obiectul particulat din care face parte; orice obiect Java aflat intr-o relatie ”is-a” este polimorfic; tipul unei variabile referinta la obiect determina codul metodelor care se apeleaza; o variabila referinta poate referi orice obiect de acelasi tip cu referinta sau orice subtip al tipului; apelul polimorfic functioneaza doar pentru metodele de instanta suprascrise (nu pentru variabile sau metode statice)

15 Rezumat paradigma orientata pe obiect este condusa de date
clasa este un sablon iar obiectul o instanta a clasei un cod orientat pe obiect scris corect trebuie sa implementeze ascunderea datelor in procesul de proiectare al aplicatiei apar legaruri intre clase si obiecte implementarea acestori legaturi duc la relatii statice sau dinamice ce se numestc compunere, mostenire si polimorfism

16 Intrebari Enumerati 4 avantaje ale POO. Care sunt principiile POO?
Ce este clasa si cum se defineste? Ce este obiectul, cum se acceseaza membrii? Ce este comunerea, exemplificati? Ce este mostenirea, exemplificati?

17 Bibliografie Ştefan Tanasă, Cristian Olaru, Ştefan Andrei, Java de la 0 la expert, Polirom, 2003, ISBN: Herber Schild, Java 2 - The Complete Reference, Fourth Edition, Osborne, 2001, ISBN: Deitel H.M., Deitel P. J., Java - How to programm, Fith Edition, Prentice Hall, 2003, ISBN:


Download ppt "C7 – LPO: Clase si Obiecte"

Similar presentations


Ads by Google