1 / 44

Sabloane de proiectare : Singleton

Sabloane de proiectare : Singleton. 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 ….

branxton
Download Presentation

Sabloane de proiectare : Singleton

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. http://www.infoiasi.ro/~flash/prezentari_cerc Sabloane de proiectare:Singleton CosminVarlan

  2. PE 22 VINE ADOBE :D http://www.infoiasi.ro/~flash/prezentari_cerc VESTEA BUNA:

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

  4. http://www.infoiasi.ro/~flash/prezentari_cerc Sabloane de proiectare • … simultealtele….

  5. http://www.infoiasi.ro/~flash/prezentari_cerc Da, o gasitisipetorente… Recomandare:

  6. http://www.infoiasi.ro/~flash/prezentari_cerc Sabloane de proiectare Despreastavomvorbiazi…

  7. public static varvaloare:uint; Variabila “valoare” vafiaccesibila de oriunde, fara a finevoie de creare a uneiinstante din clasa din cre face parte. De exempludacaesteproprietate a clasei “Culoare”, putemsa o accesamastfel: Culoare.valoare = 5; http://www.infoiasi.ro/~flash/prezentari_cerc But first….. Ce e cu staticul ala ?!?!

  8. Putemaveasifunctiistatice: public static function f():val { …… } Intrebare: avemvoiesafolosim “this” in aceastafunctie ?! http://www.infoiasi.ro/~flash/prezentari_cerc But first….. Ce e cu staticul ala ?!?!

  9. Putemaveasifunctiistatice: public static function f():uint { …… } Raspuns: NU, deoarece nu exista o instantaatuncicand se face apelul; Apeleuleste tot de forma: Ceva:uint = Culoarea.f(); http://www.infoiasi.ro/~flash/prezentari_cerc But first….. Ce e cu staticul ala ?!?!

  10. Putemaveasifunctiistatice: public static function f():uint { …… } Interbare: Putemsaaccesam o proprietatepublica/privata a claseiCuloare ? http://www.infoiasi.ro/~flash/prezentari_cerc But first….. Ce e cu staticul ala ?!?!

  11. Putemaveasifunctiistatice: public static function f():uint { …… } Raspuns: NU ! Nu putem, deoarece o proprietateeste data numaiunuiobiect. Cum aici nu avemnici un obiect, inseamna ca nu avemnici o proprietateprivata (saupublica) – e ca si cum atiscrie[null].proprietate http://www.infoiasi.ro/~flash/prezentari_cerc But first….. Ce e cu staticul ala ?!?!

  12. Putemaveasifunctiistatice: public static function f():uint { …… } Interbare: Dar putemapelaaltafunctie (publica/privata) ? Raspuns: … tot NU (metodelesunt de asemeneaspecificeinstantei nu clasei) http://www.infoiasi.ro/~flash/prezentari_cerc But first….. Ce e cu staticul ala ?!?!

  13. Putemaveasifunctiistatice: public static function f():uint { …… } Intrebare: TOTUSI, maiputemaccesaaltceva din clasaasta (cea din care face parte functiastatica) ?! http://www.infoiasi.ro/~flash/prezentari_cerc But first….. Ce e cu staticul ala ?!?!

  14. Putemaveasifunctiistatice: public static function f():uint { …… } Raspuns: da, altemetodesauproprietatistatice… [ele nu au nevoie de o instantapentru a fiapelate] http://www.infoiasi.ro/~flash/prezentari_cerc But first….. Ce e cu staticul ala ?!?!

  15. La ce e bun ? Pai de multeori nu avetinevoiesainstantiati un obiectpentru a face ceva. De exemplu, nu avetinevoiesainstantiati un obiect din clasa Math pentru a face Math.sin(Math.PI); (sin estemetodastatica din math, PI esteconstantastatica din Math) http://www.infoiasi.ro/~flash/prezentari_cerc But first….. Ce e cu staticul ala ?!?!

  16. La ce e bun ? Decifolosestepentru a creaproprietatisimetode ale clasei (un fel de metaproprietati). Exercitiu: ConstruiticlasaCulori care saaibaconstantestatice: Rosu, Verde, Albastrusi o metoda de asemeneastatica “combineColors” care vareturnaculoareaobtinutaprinamestecarea RGB a culorilorprimite ca parametri. http://www.infoiasi.ro/~flash/prezentari_cerc But first….. Ce e cu staticul ala ?!?!

  17. OK, am scapat de “But first”, savedemce e cu Singleton-ul ala…. http://www.infoiasi.ro/~flash/prezentari_cerc

  18. Am facut un “moozic player” … sauatifacut (voi cu Alex) Obiectul de tip Sound desiesteunulsingurilreciclatimereu (incarcand de fiecare data altamelodie)… De multeori nu esteaccesibil de oriunde, (Sound-ulasta) Atiputeagresisiinstantiadouaobiectesunet care suprapuseartransforma 2 melodiiintr-un balamuc… http://www.infoiasi.ro/~flash/prezentari_cerc Problema:

  19. Un Sablon de proiectare care vausureazaviataatuncicandtrebuiesaimplementatiobiecte “Unice” este Singleton Daca un obiectesteconstruitdupaacestsablon, nu poateaveaniciodatadouainstante… Pe cat pare de simplu, peatat e de complex “inside” http://www.infoiasi.ro/~flash/prezentari_cerc Problema:

  20. Codulcelmai basic arfiurmatorul: http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding:

  21. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding:

  22. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Eusunt un Singleton… micsirau

  23. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Mereuestenevoiesa se tina ca variabilaprivata o variabila de tipul….

  24. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Hei, are acelasi tip ca siclasa…

  25. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: In plus, cerost are sa fie privatasistatica ?!?!

  26. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Doar static inseamna ca vreausaaccesezasa: Single._instance = …..

  27. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Single._instance = ….. Dar nu pot face astadecat din clasa (pentru ca e privata)

  28. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Singurainstantacevaficreatapentru un singleton esteaceasta… Da, nu poatefiaccesata din exterior (e privata)

  29. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Pentru a o accesa, ii construim o metodataspeciala: getInstance()

  30. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Care nu are nici un parametrusireturneazachiarobiectul _instance (vedetitipulreturnat ?)

  31. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Binebine, darinstantanoastra nu a fostinca “instantiata” :D [adica nu am facut: _instance = new (Single);]

  32. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Facemnew NUMAI daca ea nu a fostcreata [adicadaca are valoarea null].

  33. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Fie ca e abiacreata, fie ca dejaexista, returnaminstanta.

  34. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: De ce e astastatica?!

  35. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Pentru a puteaapela sub forma: Single.getInstance().ceva [ceva = metodasauproprietate]

  36. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Vomputea face “new” si din afaraclasei ?!?!

  37. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Practicda… Teoreticconstructorularfitrebuitsa fie privat… (asa e in Java de ex). In Flex esteimposibil.

  38. http://www.infoiasi.ro/~flash/prezentari_cerc Singleton - codding: Daca as fiputut face constructorulprivatatunci nu as fiputut face new dinafaraclasei…

  39. Singleton se invata la Facultatea de Informatica la un curs numit “Ingineriaprogramarii” ? 80% din studenti nu stiunimicdespre singleton candsuntintrebati in licenta ? [de fapt la fel se intamplasi cu celelaltesabloane de proiectare care par prea simple sauprea inutile…] http://www.infoiasi.ro/~flash/prezentari_cerc Stiati ca…

  40. http://www.infoiasi.ro/~flash/prezentari_cerc Pare usordar e celmai “smart”: Intrebari…

  41. http://www.infoiasi.ro/~flash/prezentari_cerc Exemplu de utilizare a clasei de maisus:

  42. http://www.infoiasi.ro/~flash/prezentari_cerc Exemplu de utilizare a casei de maisus: Da, atighicit, A si B sunt de faptpointericatreaceeasiinstanta (_instance din Single) sivoraveaaceeasivaloare a proprietatiiadaugatedinamic “txt”

  43. Exercitiu: Incercatisafaceti o clasa care saincarce o imagine sisa o afiseze. Clasasa fie Singleton sipentru a incarcaimaginisapoatafiapelataastfel: Imagine.getInstance().loadImage(“imagine.jpg”); Si cand am facutapelulasta, imagineasaaparadeja in scena… ;) http://www.infoiasi.ro/~flash/prezentari_cerc

  44. END http://www.infoiasi.ro/~flash/prezentari_cerc

More Related