360 likes | 610 Views
Sabloane de proiectare : Observer. Cosmin Varlan. PE 22 VINE ADOBE :D. VESTEA BUNA:. Ne usureaza viata …. Ne ajuta sa organizam mai bine treaba Putem sa intelegem “ mai bine ” OOP Uneori pot reduce oridunl de complexitate al problemei ….
E N D
http://www.infoiasi.ro/~flash/prezentari_cerc Sabloane de proiectare:Observer CosminVarlan
PE 22 VINE ADOBE :D http://www.infoiasi.ro/~flash/prezentari_cerc VESTEA BUNA:
Ne usureazaviata…. Ne ajutasaorganizammaibinetreaba Putemsaintelegem “maibine” OOP Uneori pot reduce oridunl de complexitate al problemei…. … saufacdefinitiileobietelormaiusor de inteles… http://www.infoiasi.ro/~flash/prezentari_cerc Sabloane de proiectare (design patterns)
http://www.infoiasi.ro/~flash/prezentari_cerc Sabloane de proiectare • … simultealtele….
http://www.infoiasi.ro/~flash/prezentari_cerc Da, o gasitisipetorente… Recomandare:
http://www.infoiasi.ro/~flash/prezentari_cerc Sabloane de proiectare Despreastavomvorbiazi…
Ionel, Maria, GigelsiIoanasuntfoarteinteresati de ActionScript. Eivorsaaflecandvaaparenouaversiune a flexului, cea care incorporeazanoilefacilitati ale Flash Playerului 10 (3D, engine noupentruformatareatextului, pixelBenderssimultealtele). http://www.infoiasi.ro/~flash/prezentari_cerc Problema:
Ca saafle, ei intra zilnicpesitul Adobe, chiar de douaoripezisau in cazulIoanei care e super-maniaca de AS3 de treiori. Adobe s-a saturatsafacatraficmereusimereuspreaceleasipersoanesi din cauzaasta vine cu o solutie:…. http://www.infoiasi.ro/~flash/prezentari_cerc Problema:
Hai ca vaziceucandapareflexul ala, dati-mi voiadreselevoastre de mail sicand o aparevatrimiticate un mail la fiecare. http://www.infoiasi.ro/~flash/prezentari_cerc Problema - solutia:
In exempluldat, Ionel, Maria, GigelsiIoana (nu neaparat in ordineaasta) suntobservatori. Ei se “inregistreaza” intr-un fel la entitateape care vorsa o interogheze (sipentru care vorsaaflecandi s-a modificat o anumitaproprietate) . Obiectulobservat se numeste “Subject” Obiectele care observa se numesc “Observers” http://www.infoiasi.ro/~flash/prezentari_cerc Observer…
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: Salut, eusuntobiectul Subject
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: Am o proprietateinteresanta: culoare (RGB)
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: Obiectele din dreaptasuntceleinteresate de culoarea mea
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: Atuncicandimischimbculoarea, le transmit sieiisivorschimbaculoareapentru a fi ca mine Because I’m cool
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: Sa imischimbculoarea
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: Am o proprietate de tip Array in care pastrezreferintecatreobservatoriimei…
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: Pentrufiecareobiect din Array ii voitransmitenouaculoare.
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer:
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: OK OK OK
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: Momentan Array-ul cu referinteeste: Observatori = {Cerc, Patrat, Pentagon}
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: Vreausieusafiu Cool (ca tine). Cerc.register(“me”)….
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: Ok… Observatori.push(stea);
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer:
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer:
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: OK, aidevenitpreamandru, nu temaiplac, Cerc.unregister(“me”)
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: OK, DeleteFromList(“pentagon”)
http://www.infoiasi.ro/~flash/prezentari_cerc Pasii “de urmat” pentru a deveni un observer: … color changing ….
Pentru a puteainregistra / eliminaobserveri, obiectul Subject trebuiesaposedecate o functiecevafiapelata de observatori (posibilisauexistenti). In obiectul-subiecttrebuiesaexiste un Array cevacontinereferintecatreobiecteleinregistrate. register vaadauga o referinta, unregister vaelimina o referinta http://www.infoiasi.ro/~flash/prezentari_cerc Cum se realizeaza ?
Dacaobiectele - observatorisuntheterogene, arfibinesaimplementeze o interfata : saprimeascatotimodificareaprinaceeasifunctie.. “receiveData” http://www.infoiasi.ro/~flash/prezentari_cerc Cum se realizeaza ?
Interfata cu: - registerObject() - unregisterObject() - notifyObservers() Eventual (vedemacusi de ce): - getState(); - setState http://www.infoiasi.ro/~flash/prezentari_cerc Subiectul:
Interfata cu: - update http://www.infoiasi.ro/~flash/prezentari_cerc Observerul:
De cesatrimitefortatdatelecatreobservatori? Am puteamaidegrabadoarsainformamobservatorii ca o proprietate s-a schimbatsisafacemaceaproprietatedisponibilaprintr-un getter. DacaObserverulesteinteresat, vapreluasingurinformatia (interesantcandsuntmulteproprietatice pot fimodificate) De astaaveamnevoie de getState / setState de maisus. http://www.infoiasi.ro/~flash/prezentari_cerc O altaidee… (Java - like)
Avem un numar mare de buline (400) care se “plimba“ intr-un plan. Cu cat o bulina are mai multi vecini cu atatvafimai mare (schimbamdiamentrul in functie de distanta: de exemplu la diametrulbulineicurente se adauga 1/(distanta*10) dintre ea sitoatecelelaltebuline). De la o anumitavaloareincolo nu maiconteaza (de exempludacadistantaestemai mare ca 20, diametrul se vamari cu 1/200 - insignifiant) http://www.infoiasi.ro/~flash/prezentari_cerc Problema:
Arfi ok daca am impartiplanul 2D in patrate cu latura de 20px si de fiecare data cand un punct intra intr-un patrat, se inregistreazaaceluipatrat. Cat timpeste in patratprimestenotificari de la acesta cu listaobiectelor care se maiafla in patrat In functie de aceastalista, va reduce numarulcalculelor de la 400 la numarulpnctelor din patrat. http://www.infoiasi.ro/~flash/prezentari_cerc Problema:
Atuncicandiese din patrat, face unregister si face register la noulpatrat (desiaiciarfibinesafaca unregister/register) din doua in douapatrate (adicasa se inregistreze in patratulcurentsi in patrateleadiacente). Motivuleste ca dacatrecedintr-un patrataglomeratintr-unulgol se stingepreabrusc. Se asteaptaimplementatori http://www.infoiasi.ro/~flash/prezentari_cerc Problema:
PE 22 VINE ADOBE :D Fitiprezenti…… http://www.infoiasi.ro/~flash/prezentari_cerc NU UITATI !!!