Programare Obiect

download Programare Obiect

of 21

  • date post

    03-Jul-2015
  • Category

    Education

  • view

    371
  • download

    4

Embed Size (px)

description

Presentation about object oriented programming in Romanian

Transcript of Programare Obiect

  • Programare proceduralaDecide procedurile necesare.Alege cei mai buni algoritmi pentru ele.

    Programare modularaDecide modulele necesare.Imparte programul astfel incat datele sa fie ascunse in module.

    Programare genericaDecide algoritmii necesari.Ii parametrizeaza pentru a fi functionali pe mai multe tipuri de date.

    Programare obiectDecide clasele necesare.Proiecteaza un set de operatii pentru ele.Generalizeaza prin relatia de mostenire.Particularizeaza prin polirmofism.

  • Totalitatea conceptelor legilor care fundamenteaza programarea obiect.

    Concept|aspect esential ce poate fi definit matematic.Lege|regula care stabileste un raport esential intre doua concepte.

    Concept: capsulaAdica o cabina cu scaune

    care urca si coboara.

    Concept: roataAdica o structura circulara

    care se invarte incet.

    Lege: capsula e prinsa de roataDaca nu e prinsa, sistemul nu este functional, iar parcul de distractii da faliment.

  • AbstractizareIdentifica aspectele generale G.Ignora aspectele particulare P|se va ocupa cineva mai jos de ele...

    CercAre raza si punct central.

    RoataAre in plus spite si metal.

    SpinnerAre in plus viteza si sens.

    Roata de distractiiAre in plus cabine cu scaune.

  • IncapsulareAscunde implementarea de client si combina starea cu comportarea.

    Nu stim

    Roata metalicaDe unde avem materialul?Cum au fost facute spitele?

    InvartitoareCe fel de motor o misca?

    De unde ia energie?

    Roata de distractiiSunt ele legate de spite sau de roata?

    Se deschid usile la 100m inaltime?

    StimCa functioneaza corect.Ca nu prea avem cum sa o stricam*...

  • ModularizareImparte aplicatia in module|un fel de Divide et Impera.Rezolva modulele independent si integreaza-le.

    StructuraFa rost de cadru.Fa rost de spite.

    ...Integreaza-le in structura.

    MotorFa rost de bloc motor.

    Fa rost de rezervor....

    Integreaza-le in motor.

    Roata de distractiiFa rost de un motor.

    Fa rost de o structura....

    Integreaza-le in roata de distractii.

  • PolimorfismFiecare concept are comportamentul lui.Conceptele au comportamente care arata la fel.

    Elice de moaraDaca vine Don Quijote, fa v infinit.Daca pleaca Don Quijote, fa v zero.invarte|roteste spre dreapta cu viteza v

    Roata de distractiiDaca e prea mare greutatea, scade v.Daca nu are pasageri, fa v zero.Daca s-a tras semnal de cutremur, fa v zero*.Daca s-a rotit 10 minute, inverseaza s.invarte|roteste cu viteza v in sensul s

    Toate cele trei se numesc sintactic invarte, dar se comporta diferit.

    Invartitoareinvarte|roteste

  • AbstractizareIdentifica aspectelor generale G.Ignora aspectele particulare P|se va ocupa cineva mai jos de ele...

    IncapsulareAscunde implementarea fata de client.

    ModularizareImparte aplicatia in module|un fel de Divide et Impera.Rezolva modulele independent si integreaza-le.

    MostenireClasifica pe nivele de abstractizare de la G la P|ierarhizare.

    PolimorfismFiecare concept are comportamentul lui.Conceptele au comportamente care arata la fel.

  • Clasa

    ConceptualDescrie o colectie de obiecte printr-un set comun de: stari posibile, comportamente posibile.

    Invartitoare

    sta|se invarte staristart comportamentstop comportament

    class invartitoare {

    private boolean moves = false; // atributpublic void start() { // metoda

    moves = true;}public void stop() { // metoda

    moves = false;}

    }

    Clasa

    ProgramaticStructura de date ce descrie: atribute, metode.

  • Obiect

    ConceptualCeva caracterizat prin: identitate, stare, comportament.

    Inv

    invartitoare1 identitatesta starestart|stop comportament

    invartitoare2 identitatese invarte starestart|stop comportament

    Inv invartitoare1 = new Inv();

    Inv invartitoare2 = new Inv();invartitoare2.start();

    Obiect

    ProgramaticVariabila caracterizata prin: nume, atribute, metode.

  • Mesaj

    ConceptualForma de comunicare intre obiecte.

    Motorul invarte roataMotorul invarte mai multe roti? poateCine are viteza si sensul? roata si/sau motorulCine ii spune motorului sa invarta roata? noi/auto

    Variante:

    Motor m = new Motor(putere);Roata r = new Roata(greutate);m.invarte(r);

    Motor m = new Motor(putere);Roata r = new Roata(greutate);m.adauga(r); // daca r e prea grea?m.invarte(); // for r in m.roti m.invarte(r)

    Obiect

    ProgramaticUna sau mai multe metode.

    +

  • MostenireMecanismul prin care obiectele particulare preiau starea si comportamentul obiectelor generale.

    Principiul substituirii Barbara Liskov, 1987 adaptareObiectele clasei care mosteneste pot aparea oriunde apar obiectele clasei mostenite.

    DiscutieImportanta preconditiei si postconditiei.De sus in jos, taria preconditiei scade.De sus in jos, taria postconditiei creste.

    SolutieNicio clasa specializata sa nu aiba preconditie extra,fata de clasa/clasele pe care o specializeaza.

    L = l?

    L l

  • Pentru a o invarti, motorul trebuie sa fie intr-o anume relatie cu roata.

    Relatia de asociereReprezinta o familie de legaturi intre obiectele a doua clase.Poate avea necunoastere si multiplicitate: 0..1, 0..n, 1, 1..n.

    Roata este invartita de un Motor necunoscut.Motorul invarte zero sau mai multe Roti.

  • Roata are una sau mai multe capsule cu scaune pentru privitori.

    Relatia de agregareReprezinta o familie de legaturi de forma are niste intre obiecte.Poate avea necunoastere si multiplicitate: 0..1, 0..n, 1, 1..n.

    Roata are prinse una sau mai multe Capsule.Capsula are o Roata pe care este prinsa.

  • Capsula in uz are o legatura metalica in uz cu roata.

    Relatia de compozitieReprezinta o familie de legaturi puternice de forma are niste.Poate avea necunoastere si multiplicitate: 1, 1..n

    Agregare

    Compozitie

    CapsulaInUz are o LegaturaMetalica...LegaturaMetalica are o CapsulaInUz...

  • Principiul inchis deschis Betrand Meyer, 1988Entitatile software sunt inchise la modificare si deschise la extindere.

    Modele de proiectareProbleme care se petrec repetat, ale caror solutie este descrisa astfel incat sa fie folosita repetat fara a fi modificata repetat.

    Elemente principale nume, problema de rezolvat, solutie propusa, consecinte, aplicabilitate.

  • Problema de rezolvatSe doreste crearea unei clase cu un singur obiect.

    Solutie propusaBlocarea crearii de instante din exterior prin suprascriere.Accesul la o instanta statica creata din interiorul clasei.

    ConsecinteReducerea costurilor de memorie pentru variabile globale.Acces controlat la unica instanta.

    AplicabilitateNaveta jucator | daca este unul singur.Manageri de obiecte.Harti.

  • Problema de rezolvatSe doreste crearea de obiecte care vad ce se intampla cu altele.

    Solutie propusaObservatul|stiu obiectele care ma vad si le zic cand ma actualizez.Observatorul|se anunta ca observator la observat.

    ConsecinteRelatii intre obiecte bazate pe anumite stari si comportamente.Executie (a)sincrona a elementelor aplicatiei.

    AplicabilitateOrice event listener este un observer.

  • Problema de rezolvatSe doreste crearea de instante de obiecte multiple.

    Solutie propusaClasele se inregistreaza la fabrica, oferind o metoda de creare a instantelor lor. Fabrica creeaza instante din clasele inregistrate.

    ConsecinteCrearea de instante de multe tipuri de catre o autoritate centrala.Se foloseste de mostenire.

    AplicabilitateManageri de jucatori.Manageri de inamici.... sunt de fapt manageri de nave.

  • Jocul de aziAdrianNavete spatiale care se impusca intre ele?

  • Curs Programare Orientata Obiect 2008 2009Principala sursa de documentareProf. Dr. Dorel LucanuProf. Dr. Gheorghe GrigorasFacultatea de Informatica Iasi

    WikipediaDiagrame de clasa, exemplehttp://en.wikipedia.org/wiki/Class_diagram

    Stock ExchangeImaginihttp://sxc.hu/