Programare Obiect

21

description

Presentation about object oriented programming in Romanian

Transcript of Programare Obiect

Page 1: Programare Obiect
Page 2: 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.

Page 3: Programare Obiect

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.

Page 4: Programare Obiect

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.

Page 5: Programare Obiect

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*...

Page 6: Programare Obiect

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.

Page 7: Programare Obiect

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

Page 8: Programare Obiect

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.

Page 9: Programare Obiect

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.

Page 10: Programare Obiect

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.

Page 11: Programare Obiect

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.

+

Page 12: Programare Obiect

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

Page 13: Programare Obiect

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.

Page 14: Programare Obiect

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.

Page 15: Programare Obiect

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...

Page 16: Programare Obiect

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.

Page 17: Programare Obiect

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.

Page 18: Programare Obiect

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.

Page 19: Programare Obiect

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.

Page 20: Programare Obiect

Jocul de aziAdrianNavete spatiale care se impusca intre ele?

Page 21: Programare Obiect

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/