12
Limbaje de programare – curs 3 - - Informatică Economică, an III – Cluj-Napoca - 9 Octombrie 2013 Introducere in obiectualitate. Operatori. Controlul executiei programelor

Introducere

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