Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Cercul De Rich Internet Applications Constructor, Getter,Setter, Display List
1. Cercul de Rich Internet ApplicationsConstructor, getteri, setteri, toString,Display List Facultatea de Informatică Iași
2. Data trecută… am… Discutat despre variabile şi funcţii Despre clase Despre proprietăţi şi metode (ale obiectelor) Văzut ce e ăla un constructor (damaivedemşi azi) Chinuit un căţel Spart câteva baloane 2 http://www.info.uaic.ro/~flash
3. Tura asta vom… Continua puţin cu constructorul (ca să mă asigur că s-a înţeles) Discuta despre câteva funcţii speciale Cum se formează ierarhia obiectelor din scenă 3 http://www.info.uaic.ro/~flash
4. Mulțumesc… Comănescu Ștefan Ionuț Striban … pentru tutorialele video adăugate pe situl nostru: http://flash.info.uaic.ro 4 http://www.info.uaic.ro/~flash
5. Setarea clasei principale În AS3 nu avem metoda main ... Totuşi, din proprietăţile proiectului pot seta care clasă poate fi rulată. 5 http://www.info.uaic.ro/~flash
12. Constructor Constructorulestemetoda care se executa prima… Este executată NUMAI cândestecreatobiectul (şi nu ar trebui să o utilizaţi ulterior) Are mereu acelaşi nume ca şi clasa (care are acelaşinume ca fişierul în care este stocată) Atunci când clasa este “default”, constructoruleste “running point” al aplicatiei 12 http://www.info.uaic.ro/~flash
13. Constructor Constructorul poate avea o serie de parametri dar niciodată nu returnează nimic. Atunci când clasa este cea principală (de la care începe rularea aplicaţiei, constructorul nu are nici un parametru). Constructorul este MEREU metodă publică. De câţi constructori este nevoie pentru a crea un obiect ? 13 http://www.info.uaic.ro/~flash
15. Getteri / Setteri În programarea obiectuală modernă, nu există variabile publice. Așa cum zicea cineva data trecută, unui obiect, în mod normal, nu ar trebui să-i fie schimbate proprietățile fără a fi notificat. [binezis, Cătălin] 15 http://www.info.uaic.ro/~flash
16. Getteri / Setteri Să presupunem că avem o mașină… căreia dorim să-i schimbăm o proprietate (culoare). Pentru ca proprietatea să poată fi schimbată de alt obiect (de exemplu obiectul “vopsitor”) ar trebui să fie declarată publică (și de tip String: “roșu”, “alb”, “verde”). Dacă e publicăoricinepoatesă o acceseze (și să o modifice). Am putea avea așadar: masina.culoare = castravete; 16 http://www.info.uaic.ro/~flash Asta e o legumă !!!
18. Getteri / Setteri Scăpăm de buba dacă am utiliza o variabilă privată care să poată fi modificată doar de o metodă (publică) care ar putea testa dacă este vorba sau nu de o culoare validă. Pentru că nu e chiar frumos să scriem de fiecare dată ceva de genul: masina.schimbaCuloarea(“verde”); …ci ne-ar place maidegrabă: masina.culoare = “verde”; … s-au inventatsetteriișigetterii 18 http://www.info.uaic.ro/~flash
19. Getteri / Setteri Celedouăsuntfuncții speciale ce au numele proprietății pe care o substituie (în cazul nostru culoare). Din acestmotiv, nu trebuie să existe o altă proprietate cu același nume (vom denumi proprietatea privată drept “_culoare”. Metoda setter are rolul de a setaculoarea; Metoda getter are rolul de a returnaculoarea. 19 http://www.info.uaic.ro/~flash
20. Getteri / Setteri Să zicem că variabila _propeste cea privată (cea care vrem să fie accesată dar prin set/get). Și să mai zicem că proprietatea asta este de tip “tipProp”. Atunci: Setterulpentru_prop trebuie neapărat să primească ca parametru o valoare de acelasi tip ca și _prop (de tip tipProp) și să nu returneze nimic. Getterul nu are parametru și returnează valoarea lui _prop(deci o valoare de tip tipProp) Get / Set sunt MEREU de tip public !!! 20 http://www.info.uaic.ro/~flash
24. Exemplu: Getteri/ Setteri 24 http://www.info.uaic.ro/~flash Accesibil ca și cum ar fi proprietatea culoare De tip String setter
25. Exemplu: Getteri/ Setteri 25 http://www.info.uaic.ro/~flash Acum în setter putem verifica validitatea culorii Dacă e ok, o memorăm
26. Exemplu: Getteri/ Setteri 26 http://www.info.uaic.ro/~flash Pentru a prelua culoarea utilizăm getterul Care returnează valoarea
27. Getteri / Setteri Dacă “proprietatea” este apelată în “stânga” se apelează automat setterul: masina.culoare = “alb”; Dacă “proprietatea” este apelată în “dreapta” se apelează automat getterul: trace ( masina.culoare ); 27 http://www.info.uaic.ro/~flash
28. toString() Atunci când clasa este utilizată într-o operație drept șir de caractere, reprezentarea acestuia ca String se realizează prin apelul (implicit) al metodei toString. Aceasta există în orice obiect fiind moștenită din ….. … să vedem cine știe ?!?! 28 http://www.info.uaic.ro/~flash
29. toString() Atunci când clasa este utilizată într-o operație drept șir de caractere, reprezentarea acestuia ca String se realizează prin apelul (implicit) al metodei toString. Aceasta există în orice obiect fiind moștenită din ….. Object 29 http://www.info.uaic.ro/~flash
30. toString() Dacă nu este suprascrisă, metoda toString() va afișa ceva de genul[object <tipObiect>], undetipObiectestetipulobiectuluice a fostutilizat ca un șir de caractere. Atunci când este suprascrisă (nu necesită nepăratoverride. Metoda toString() trebuie NEAPARAT să fie publică, să returneze un String și NU ARE parametri de intrare. 30 http://www.info.uaic.ro/~flash
34. Obiecte grafice Obiectele grafice sunt de două tipuri: - scalare sau raster (fiecare pixel este reprezentat în memorie) - vectoriale (numai anumite date importante sunt memorate in memorie, imaginea fiind construită pe baza acestora: pt un cerc: coordonatelecentruluișiraza) 34 http://www.info.uaic.ro/~flash
35. Obiecte grafice Raster vs. Vectorial a a a 35 http://www.info.uaic.ro/~flash
36. Obiecte grafice E clar că pentru a reprezenta un obiect raster e nevoie de mai multă memorie / spațiu de stocare. Atunci când sunt mărite, obiectele vectoriale arată la fel de bine (nu ca cele raster care devin mozaicuri). Timpul de afișare a unei imagini raster este mult mai mic… procesorul nu trebuie să gândească cum să construiască imaginea. 36 http://www.info.uaic.ro/~flash
37. Obiecte grafice Raster – bune pentru: poze (din lumea reală), aplicare de filtre de tip shadow, blur etc., afișarea rapidă a imaginilor Vectorial – bune la afișarea unor scheme, a literelor 37 http://www.info.uaic.ro/~flash
38. Obiecte grafice Obiectele pe care le vedem într-o aplicație Flash sunt organizat într-o ierarhie (arborescentă). Există o singură rădăcină (root). root-ul este de obicei de tip Sprite (aplicația principală, cea care extinde Sprite) și este adăugat automat scenei de către player-ul Flash în momentul lansării în execuție. 38 http://www.info.uaic.ro/~flash
44. Obiecte grafice După crearea în memorie (cu new), obiectul grafic trebuie să fie adăugat în ierarhia de obiecte din scenă. Acest lucru se realizează cu metoda addChild. (addChild e din DisplayObjectContainer) 44 http://www.info.uaic.ro/~flash
45. Obiecte grafice 45 http://www.info.uaic.ro/~flash Pachetul ce conține obiectele de tip grafic (sau care au legătură cu grafica) Deși publică, această clasă nu se poate instanția, ea oferind un cadru de container pentru subclasele sale
46. Obiecte grafice 46 http://www.info.uaic.ro/~flash Moștenește toate porprietățile și metodele din Object
47. Obiecte grafice 47 http://www.info.uaic.ro/~flash Sau din EventDispatcher prin intermediul căreia se pot arunca evenimente
48. Obiecte grafice 48 http://www.info.uaic.ro/~flash DisplayObject aduce o serie de proprietăți cum ar fi poziția imaginii sau gradul de transparență
49. Obiecte grafice 49 http://www.info.uaic.ro/~flash În Clasa InteractiveObjectsutn definite evenimentele la care containerul poate răspunde (click, keypressed, etc)
50. Obiecte grafice 50 http://www.info.uaic.ro/~flash DisplayObjectContainer oferă posibilitatea adăugării obiectelor grafice sau a altor containere grafice în interiorul său
51. Obiecte grafice 51 http://www.info.uaic.ro/~flash Acestea sunt câteva containere grafice….
52. Obiecte grafice 52 http://www.info.uaic.ro/~flash Cel mai important: Stage (containerul principal). Următorul:Sprite (probabil cel mai utilizat)
53. Obiecte grafice La începutul prezentării povesteam despre o clasă considerată principală (de la care se pornește execuția aplicației). Această clasă extindea Sprite – deci era și ea de tip Sprite – deci un container. Acest container este containerul principal, în el vom adăuga mereu obiecte – denumit și root. 53 http://www.info.uaic.ro/~flash
54. Obiecte grafice root-ul este adăgat automat scenei Dacă un obiect grafic este adăugat ierarhiei de obiecte grafice, el este vizibil, proprietatea root va face referință către containerul principal (root), proprietatea stage va face referire chiar la scena aplicației. Un obiect care nu a fost adăugat ierarhiei are proprietățile de mai sus null. 54 http://www.info.uaic.ro/~flash