Upload
zuly-flo
View
2
Download
0
Embed Size (px)
DESCRIPTION
asdasdsa
Citation preview
Limbaje de programare curs 3 - - Informatic Economic, an III
Cluj-Napoca - 9 Octombrie 2013Introducere in obiectualitate. Operatori.Controlul executiei programelor
Cluj-Napoca - 9 Octombrie 2013
CuprinsPrincipiile programarii obiectualeNotiunea de obiect
Cluj-Napoca - 9 Octombrie 2013
Cluj-Napoca - 9 Octombrie 2013
Principii de baz n obiectualitate (II)Programare obiectual:
Elemente din spaiul problemei precum si reprezentarile acestora in spatiul solutiei obiecte
Caracteristici ale limbajelor obiectuale
Orice element este un obiectUn program este o colecie de obiecte care isi spun unul altuia ce sa faca prin trimitere de mesajeFiecare obiect are un spaiu de memorie, posibil compus din alte obiecteFiecare obiect are un tipToate obiectele de acelai tip pot primi acelai mesaj (atentie: proprietatea de upcast)
Cluj-Napoca - 9 Octombrie 2013
Cluj-Napoca - 9 Octombrie 2013
Principii de baz n obiectualitate (III)Definitia Booch pentru un obiect: un obiect are o stare, un comportament si o identitate
Clas: set de obiecte cu caracteristici i funcionalitate identice (termenul de clasa se substituite termenului de tip)
Intefaa: metode (funcionalitate): cererile care pot fi adresate unui obiect particular dintr-o clasaImplementarea: mod concret de realizare a funcionalitii
Un obiect poate fi privit ca si furnizor de serviciiSe imbunatateste coeziunea obiectelor (obiectele trebuie sa se potriveasca bine unele cu altele)
Cluj-Napoca - 9 Octombrie 2013
Cluj-Napoca - 9 Octombrie 2013
UML reprezentarea claselorUML: limbaj standardizat pentru modelarea obiectuala
Light lt = new Light();lt.on();Cluj-Napoca - 9 Octombrie 2013
Nume de tip ->Light Interfata -> on()off()brighten()dim()
Cluj-Napoca - 9 Octombrie 2013
Ascunderea implementarii2 tipuri de programatori: creatori de clase creaza clase care expun doar functionalitatea necesara claselor client, restul ramane ascunsprogramatori client consumatori de clase, rolul lor este sa fie echipati cu un set de clase pentru dezvoltarea rapida a aplicatiilor finaleProgramatorii creatori de clase trebuie sa poata schimba implementarea ascunsa fara ca programatorii clienti sa fie afectatiSpeficatori de access:Private: elementele private pot fi accesate doar de creatorul clasei in cadrul metodelor acelei clasePublic: elementele publice sunt disponibile oricaror alte claseProtected: similar cu private, utilizat in mostenire, clasele care mostenesc pot accesa elementele private din clasele de baza
Cluj-Napoca - 9 Octombrie 2013
Cluj-Napoca - 9 Octombrie 2013
Reutilizarea implementarii - compozitieManagementul complexitii: descompunerea elementelor problemei n pri componente
2 metode de realizare a complexitii:
Compoziie: o clas nou conine clase existente
Relaie has-aSe realizeaza prin creare de obiecte membreCompozitia realizata dinamic se numeste agregare
Cluj-Napoca - 9 Octombrie 2013
Cluj-Napoca - 9 Octombrie 2013
Reutilizarea implementarii - mostenireDatele si functionalitatile se pot impacheta dupa concepte care reprezinta idei similare din spatiul problemei
Motenire: o clas nou se aseamn (extinde) o clas existent
Relaie is-a sau is-like-a
Clasa de baza contine caracteristicile si comportamentele care vor fi partajate cu tipurile derivateClasa derivata
Clasa derivata va contine toti membrii clasei de baza (inclusiv cei privati care sunt ascunsi)Toata interfata clasei de baza, care este duplicataClasa derivata este in acelasi timp de tipul clasei de baza
Cluj-Napoca - 9 Octombrie 2013
Cluj-Napoca - 9 Octombrie 2013
Mostenire cum se diferentiaza clasa derivata de clasa de bazaPrin adaugare de noi metode suplimentareSchimbarea comportamentului unor metode existente in clasa de baza (overriding)
Relatia is-a: clasa derivata doar override metode din clasa de baza (principiul substitutiei pure)Relatia is-like-a: clasa derivata adauga elemente noi interfetei clasei de baza (metodele noi nu sunt accesibile din clasa de baza substitutia nu mai este pura)
Cluj-Napoca - 9 Octombrie 2013
Cluj-Napoca - 9 Octombrie 2013
Obiecte interschimbabile prin polimorfismCluj-Napoca - 9 Octombrie 2013
La ierarhiile de clase dorim sa tratam obiectele unitar, sub tipul de bazaAstfel, putem scrie cod care nu depinde de un tip specific si care manipuleaza obiecte genericeSe doreste ca s se execute codul din obiectele claselor derivate fr ca s stim (la compilare) care vor fi efectiv aceste obiecte
Compilatoare traditionale (non OOP) early bindingCompilatoare OOP late binding codul apelat este determinat abia la executie, la compilare se asigura doar corespondenta tipului argumentelor si a tipului de returnJava compilator OOP dynamic (late) bindingProprietatea de upcast: tratarea unui obiect dintr-o clas derivat ca si cum ar fi din clasa de baza
Cluj-Napoca - 9 Octombrie 2013
Ierarhie cu o singura radacinaCluj-Napoca - 9 Octombrie 2013
In Java (si in orice limbaj obiectual cu exceptia C++) toate clasele mostenesc o clasa de baza numit ObjectAstfel, toate obiectele din limbaj pot fi echipate in mod garantat cu anumit functionalitateSe usureaza implementarea garbage collectorului
Cluj-Napoca - 9 Octombrie 2013
ContainereNecesare datorita faptului ca nu stim de la design numarul de obiecte necesare pentru a rezolva o anumita problemaContainerele sunt siruri de referinte catre alte obiecteEle se expandeaza automat pentru a salva noi obiecte, dupa necesitati2 tipuri de liste: ArrayList, LinkedListContainerele in Java sunt create sa pastreze obiecte de tipul Object. -> ele pot salva oricePot aparea exceptii la Downcast la runtime, timp de executie crescut datorit operaiei de DowncastContainere parametrizate: ArrayList shape = new ArrayList();
Cluj-Napoca - 9 Octombrie 2013
Cluj-Napoca - 9 Octombrie 2013