SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Programare procedurala
Decide procedurile necesare.
Alege cei mai buni algoritmi pentru ele.
Programare modulara
Decide modulele necesare.
Imparte programul astfel incat datele sa fie ascunse in module.
Programare generica
Decide algoritmii necesari.
Ii parametrizeaza pentru a fi functionali pe mai multe tipuri de date.
Programare obiect
Decide 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.


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

    Concept: capsula                                                   Concept: roata
    Adica o cabina cu scaune                                          Adica o structura circulara
      care urca si coboara.                                             care se invarte incet.
Abstractizare
Identifica aspectele generale G.
Ignora aspectele particulare P|se va ocupa cineva mai jos de ele...




                                                 Cerc
                                        Are raza si punct central.




                  Roata                                                 Spinner
          Are in plus spite si metal.                            Are in plus viteza si sens.




                                   Roata de distractii
                                   Are in plus cabine cu scaune.
Incapsulare
Ascunde implementarea de client si combina starea cu comportarea.

Nu stim



            Roata metalica                                     Invartitoare
          De unde avem materialul?                         Ce fel de motor o misca?
          Cum au fost facute spitele?                        De unde ia energie?



                                  Roata de distractii
                             Sunt ele legate de spite sau de roata?
                              Se deschid usile la 100m inaltime?


Stim
Ca functioneaza corect.
Ca nu prea avem cum sa o stricam*...
Modularizare
Imparte aplicatia in module|un fel de Divide et Impera.
Rezolva modulele independent si integreaza-le.



               Structura                                              Motor
              Fa rost de cadru.                               Fa rost de bloc motor.
              Fa rost de spite.                                Fa rost de rezervor.
                      ...                                               ...
         Integreaza-le in structura.                         Integreaza-le in motor.




                                 Roata de distractii
                                     Fa rost de un motor.
                                    Fa rost de o structura.
                                               ...
                              Integreaza-le in roata de distractii.
Polimorfism
Fiecare concept are comportamentul lui.
Conceptele au comportamente care arata la fel.


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

                                       Roata de distractii
                                       Daca 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.
Abstractizare
Identifica aspectelor generale G.
Ignora aspectele particulare P|se va ocupa cineva mai jos de ele...
Incapsulare
Ascunde implementarea fata de client.

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

Mostenire
Clasifica pe nivele de abstractizare de la G la P|ierarhizare.
Polimorfism
Fiecare concept are comportamentul lui.
Conceptele au comportamente care arata la fel.
Clasa                           Clasa
Conceptual                      Programatic
Descrie o colectie de obiecte   Structura de date
printr-un set comun de:         ce descrie:
• stari posibile,               • atribute,
• comportamente posibile.       • metode.

        Invartitoare            class invartitoare {


        sta|se invarte stari        private boolean moves = false; // atribut
                                    public void start() { // metoda
        start comportament            moves = true;
        stop comportament           }
                                    public void stop() { // metoda
                                      moves = false;
                                    }
                                }
Obiect                              Obiect
Conceptual                          Programatic
Ceva caracterizat prin:             Variabila caracterizata prin:
• identitate,                       • nume,
• stare,                            • atribute,
• comportament.                     • metode.

         Inv
                                    Inv invartitoare1 = new Inv();
         invartitoare1 identitate
         sta stare
         start|stop comportament
         invartitoare2 identitate   Inv invartitoare2 = new Inv();
         se invarte stare           invartitoare2.start();
         start|stop comportament
Mesaj                                                Obiect
Conceptual                                           Programatic
Forma de comunicare                                  Una sau mai multe metode.
intre obiecte.




             +                                       Variante:
                                                     Motor m = new Motor(putere);
Motorul invarte roata                                Roata r = new Roata(greutate);
Motorul invarte mai multe roti? poate                m.invarte(r);
Cine are viteza si sensul? roata si/sau motorul
Cine ii spune motorului sa invarta roata? noi/auto   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)
Mostenire
Mecanismul prin care obiectele particulare preiau starea si
comportamentul obiectelor generale.
Principiul substituirii Barbara Liskov, 1987 adaptare
Obiectele clasei care mosteneste pot aparea
oriunde apar obiectele clasei mostenite.
Discutie
Importanta preconditiei si postconditiei.
De sus in jos, taria preconditiei scade.                 L </=/> l
De sus in jos, taria postconditiei creste.

Solutie                                                  ?    L=l
Nicio clasa specializata sa nu aiba preconditie extra,
fata de clasa/clasele pe care o specializeaza.
Pentru a o invarti, motorul trebuie sa fie intr-o anume relatie cu roata.
Relatia de asociere
Reprezinta 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 agregare
Reprezinta 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 compozitie
Reprezinta 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, 1988
Entitatile software sunt inchise la modificare si deschise la extindere.

Modele de proiectare
Probleme 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 rezolvat
Se doreste crearea unei clase cu un singur obiect.

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

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

Aplicabilitate
Naveta jucator | daca este unul singur.
Manageri de obiecte.
Harti.
Problema de rezolvat
Se doreste crearea de obiecte care vad ce se intampla cu altele.

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

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

Aplicabilitate
Orice event listener este un observer.
Problema de rezolvat
Se doreste crearea de instante de obiecte multiple.

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

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

Aplicabilitate
Manageri de jucatori.
Manageri de inamici.
... sunt de fapt manageri de nave.
Jocul de azi
Adrian
Navete spatiale
care se impusca
intre ele?
Curs Programare Orientata Obiect 2008 2009
Principala sursa de documentare
Prof. Dr. Dorel Lucanu
Prof. Dr. Gheorghe Grigoras
Facultatea de Informatica Iasi
Wikipedia
Diagrame de clasa, exemple
http://en.wikipedia.org/wiki/Class_diagram

Stock Exchange
Imagini
http://sxc.hu/

Más contenido relacionado

Más de Vlad Manea

How engaging is your lecture?
How engaging is your lecture?How engaging is your lecture?
How engaging is your lecture?Vlad Manea
 
Prototyping for knowledge based entrepreneurship
Prototyping for knowledge based entrepreneurshipPrototyping for knowledge based entrepreneurship
Prototyping for knowledge based entrepreneurshipVlad Manea
 
Balancing priorities: a field study of coordination in distributed elder care
Balancing priorities: a field study of coordination in distributed elder careBalancing priorities: a field study of coordination in distributed elder care
Balancing priorities: a field study of coordination in distributed elder careVlad Manea
 
Regroop Platform presentation
Regroop Platform presentationRegroop Platform presentation
Regroop Platform presentationVlad Manea
 
Graph Algorithms for FII Gamedev
Graph Algorithms for FII GamedevGraph Algorithms for FII Gamedev
Graph Algorithms for FII GamedevVlad Manea
 
Online Educa Berlin Cme
Online Educa Berlin CmeOnline Educa Berlin Cme
Online Educa Berlin CmeVlad Manea
 
Destination Success Animal Shelter
Destination Success Animal ShelterDestination Success Animal Shelter
Destination Success Animal ShelterVlad Manea
 
Efectele consumului de alcool
Efectele consumului de alcoolEfectele consumului de alcool
Efectele consumului de alcoolVlad Manea
 

Más de Vlad Manea (14)

How engaging is your lecture?
How engaging is your lecture?How engaging is your lecture?
How engaging is your lecture?
 
Prototyping for knowledge based entrepreneurship
Prototyping for knowledge based entrepreneurshipPrototyping for knowledge based entrepreneurship
Prototyping for knowledge based entrepreneurship
 
Balancing priorities: a field study of coordination in distributed elder care
Balancing priorities: a field study of coordination in distributed elder careBalancing priorities: a field study of coordination in distributed elder care
Balancing priorities: a field study of coordination in distributed elder care
 
F11 Final
F11 FinalF11 Final
F11 Final
 
F11 press
F11 pressF11 press
F11 press
 
Regroop Platform presentation
Regroop Platform presentationRegroop Platform presentation
Regroop Platform presentation
 
Graph Algorithms for FII Gamedev
Graph Algorithms for FII GamedevGraph Algorithms for FII Gamedev
Graph Algorithms for FII Gamedev
 
Slideshare
SlideshareSlideshare
Slideshare
 
Online Educa Berlin Cme
Online Educa Berlin CmeOnline Educa Berlin Cme
Online Educa Berlin Cme
 
Destination Success Animal Shelter
Destination Success Animal ShelterDestination Success Animal Shelter
Destination Success Animal Shelter
 
Worldbase
WorldbaseWorldbase
Worldbase
 
Inteligenta
InteligentaInteligenta
Inteligenta
 
Efectele consumului de alcool
Efectele consumului de alcoolEfectele consumului de alcool
Efectele consumului de alcool
 
Jazzup
JazzupJazzup
Jazzup
 

Programare Obiect

  • 1.
  • 2. Programare procedurala Decide procedurile necesare. Alege cei mai buni algoritmi pentru ele. Programare modulara Decide modulele necesare. Imparte programul astfel incat datele sa fie ascunse in module. Programare generica Decide algoritmii necesari. Ii parametrizeaza pentru a fi functionali pe mai multe tipuri de date. Programare obiect Decide clasele necesare. Proiecteaza un set de operatii pentru ele. Generalizeaza prin relatia de mostenire. Particularizeaza prin polirmofism.
  • 3. 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. Lege: capsula e prinsa de roata Daca nu e prinsa, sistemul nu este functional, iar parcul de distractii da faliment. Concept: capsula Concept: roata Adica o cabina cu scaune Adica o structura circulara care urca si coboara. care se invarte incet.
  • 4. Abstractizare Identifica aspectele generale G. Ignora aspectele particulare P|se va ocupa cineva mai jos de ele... Cerc Are raza si punct central. Roata Spinner Are in plus spite si metal. Are in plus viteza si sens. Roata de distractii Are in plus cabine cu scaune.
  • 5. Incapsulare Ascunde implementarea de client si combina starea cu comportarea. Nu stim Roata metalica Invartitoare De unde avem materialul? Ce fel de motor o misca? Cum au fost facute spitele? De unde ia energie? Roata de distractii Sunt ele legate de spite sau de roata? Se deschid usile la 100m inaltime? Stim Ca functioneaza corect. Ca nu prea avem cum sa o stricam*...
  • 6. Modularizare Imparte aplicatia in module|un fel de Divide et Impera. Rezolva modulele independent si integreaza-le. Structura Motor Fa rost de cadru. Fa rost de bloc motor. Fa rost de spite. Fa rost de rezervor. ... ... Integreaza-le in structura. Integreaza-le in motor. Roata de distractii Fa rost de un motor. Fa rost de o structura. ... Integreaza-le in roata de distractii.
  • 7. Polimorfism Fiecare concept are comportamentul lui. Conceptele au comportamente care arata la fel. Elice de moara Daca vine Don Quijote, fa v infinit. Daca pleaca Don Quijote, fa v zero. invarte|roteste spre dreapta cu viteza v Invartitoare invarte|roteste Roata de distractii Daca 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.
  • 8. Abstractizare Identifica aspectelor generale G. Ignora aspectele particulare P|se va ocupa cineva mai jos de ele... Incapsulare Ascunde implementarea fata de client. Modularizare Imparte aplicatia in module|un fel de Divide et Impera. Rezolva modulele independent si integreaza-le. Mostenire Clasifica pe nivele de abstractizare de la G la P|ierarhizare. Polimorfism Fiecare concept are comportamentul lui. Conceptele au comportamente care arata la fel.
  • 9. Clasa Clasa Conceptual Programatic Descrie o colectie de obiecte Structura de date printr-un set comun de: ce descrie: • stari posibile, • atribute, • comportamente posibile. • metode. Invartitoare class invartitoare { sta|se invarte stari private boolean moves = false; // atribut public void start() { // metoda start comportament moves = true; stop comportament } public void stop() { // metoda moves = false; } }
  • 10. Obiect Obiect Conceptual Programatic Ceva caracterizat prin: Variabila caracterizata prin: • identitate, • nume, • stare, • atribute, • comportament. • metode. Inv Inv invartitoare1 = new Inv(); invartitoare1 identitate sta stare start|stop comportament invartitoare2 identitate Inv invartitoare2 = new Inv(); se invarte stare invartitoare2.start(); start|stop comportament
  • 11. Mesaj Obiect Conceptual Programatic Forma de comunicare Una sau mai multe metode. intre obiecte. + Variante: Motor m = new Motor(putere); Motorul invarte roata Roata r = new Roata(greutate); Motorul invarte mai multe roti? poate m.invarte(r); Cine are viteza si sensul? roata si/sau motorul Cine ii spune motorului sa invarta roata? noi/auto 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)
  • 12. Mostenire Mecanismul prin care obiectele particulare preiau starea si comportamentul obiectelor generale. Principiul substituirii Barbara Liskov, 1987 adaptare Obiectele clasei care mosteneste pot aparea oriunde apar obiectele clasei mostenite. Discutie Importanta preconditiei si postconditiei. De sus in jos, taria preconditiei scade. L </=/> l De sus in jos, taria postconditiei creste. Solutie ? L=l Nicio clasa specializata sa nu aiba preconditie extra, fata de clasa/clasele pe care o specializeaza.
  • 13. Pentru a o invarti, motorul trebuie sa fie intr-o anume relatie cu roata. Relatia de asociere Reprezinta 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.
  • 14. Roata are una sau mai multe capsule cu scaune pentru privitori. Relatia de agregare Reprezinta 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.
  • 15. Capsula in uz are o legatura metalica in uz cu roata. Relatia de compozitie Reprezinta 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...
  • 16. Principiul inchis deschis Betrand Meyer, 1988 Entitatile software sunt inchise la modificare si deschise la extindere. Modele de proiectare Probleme 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.
  • 17. Problema de rezolvat Se doreste crearea unei clase cu un singur obiect. Solutie propusa Blocarea crearii de instante din exterior prin suprascriere. Accesul la o instanta statica creata din interiorul clasei. Consecinte Reducerea costurilor de memorie pentru variabile globale. Acces controlat la unica instanta. Aplicabilitate Naveta jucator | daca este unul singur. Manageri de obiecte. Harti.
  • 18. Problema de rezolvat Se doreste crearea de obiecte care vad ce se intampla cu altele. Solutie propusa Observatul|stiu obiectele care ma vad si le zic cand ma actualizez. Observatorul|se anunta ca observator la observat. Consecinte Relatii intre obiecte bazate pe anumite stari si comportamente. Executie (a)sincrona a elementelor aplicatiei. Aplicabilitate Orice event listener este un observer.
  • 19. Problema de rezolvat Se doreste crearea de instante de obiecte multiple. Solutie propusa Clasele se inregistreaza la fabrica, oferind o metoda de creare a instantelor lor. Fabrica creeaza instante din clasele inregistrate. Consecinte Crearea de instante de multe tipuri de catre o autoritate centrala. Se foloseste de mostenire. Aplicabilitate Manageri de jucatori. Manageri de inamici. ... sunt de fapt manageri de nave.
  • 20. Jocul de azi Adrian Navete spatiale care se impusca intre ele?
  • 21. Curs Programare Orientata Obiect 2008 2009 Principala sursa de documentare Prof. Dr. Dorel Lucanu Prof. Dr. Gheorghe Grigoras Facultatea de Informatica Iasi Wikipedia Diagrame de clasa, exemple http://en.wikipedia.org/wiki/Class_diagram Stock Exchange Imagini http://sxc.hu/