55
Cercul de Rich Internet Applications Constructor, getteri, setteri, toString, Display List Facultatea de Informatică Iași

Cercul De Rich Internet Applications Constructor, Getter,Setter, Display List

Embed Size (px)

Citation preview

Page 1: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

Cercul de Rich Internet ApplicationsConstructor, getteri, setteri, toString,

Display List

Facultatea de InformaticăIași

Page 2: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 2

• Discutat despre variabile și funcţii• Despre clase• Despre proprietăţi și metode (ale obiectelor)• Văzut ce e ăla un constructor (da mai vedem și

azi)• Chinuit un căţel• Spart câteva baloane

Data trecută… am…

Page 3: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 3

• 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ă

Tura asta vom…

Page 4: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 4

• Comănescu Ștefan• Ionuţ Striban

… pentru tutorialele video adăugate pe situl nostru: http://flash.info.uaic.ro

Mulţumesc…

Page 5: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 5

• În AS3 nu avem metoda main ... Totuși, din proprietăţile proiectului pot seta care clasă poate fi rulată.

Setarea clasei principale

Page 6: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 6

1. Click dreapta > proprietati

2

3

Page 7: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 7

4

Page 8: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 8

Constructor

Asta este clasa :D

Page 9: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 9

Constructor

Constructorul este executat primul…

Page 10: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 10

Constructor

Dacă aplicaţia este “default”, ar putea fi considerata ca fiind

punctul de plecare al aplicaţiei

Page 11: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 11

Constructor

Un fel de main din C / C++

Page 12: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 12

• Constructorul este metoda care se executa prima…

• Este executată NUMAI când este creat obiectul (şi nu ar trebui să o utilizaţi ulterior)

• Are mereu același nume ca și clasa (care are același nume ca fișierul în care este stocată)

• Atunci când clasa este “default”, constructorul este “running point” al aplicatiei

Constructor

Page 13: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 13

• 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 ?

Constructor

Page 14: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 14

ÎNTREBĂRI PE TEMA CONSTRUCTORILOR ?

Constructori..

Page 15: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 15

• Î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. [bine zis, Cătălin]

Getteri / Setteri

Page 16: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 16

• 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ă oricine poate să o acceseze (și să o modifice). Am putea avea așadar:

masina.culoare = castravete;

Getteri / Setteri

Asta e o legumă !!!

Page 17: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 17

Page 18: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 18

• 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 mai degrabă: masina.culoare = “verde”; … s-au inventat setterii și getterii

Getteri / Setteri

Page 19: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 19

• Cele două sunt funcţii speciale ce au numele proprietăţii pe care o substituie (în cazul nostru culoare). Din acest motiv, nu trebuie să existe o altă proprietate cu același nume (vom denumi proprietatea privată drept “_culoare”.

• Metoda setter are rolul de a seta culoarea;• Metoda getter are rolul de a returna culoarea.

Getteri / Setteri

Page 20: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 20

• Să zicem că variabila _prop este cea privată (cea care vrem să fie accesată dar prin set/get).

• Și să mai zicem că proprietatea asta este de tip “tipProp”. Atunci:

1. Setterul pentru _prop trebuie neapărat să primească ca parametru o valoare de acelasi tip ca și _prop (de tip tipProp) și să nu returneze nimic.

2. Getterul nu are parametru și returnează valoarea lui _prop (deci o valoare de tip tipProp)

Get / Set sunt MEREU de tip public !!!

Getteri / Setteri

Page 21: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 21

Exemplu: Getteri / Setteri

Page 22: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 22

Exemplu: Getteri / Setteri

Proprietatea privată – nu poate fi accesată din exterior

Page 23: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 23

Exemplu: Getteri / Setteri

Proprietatea privată

Page 24: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 24

Exemplu: Getteri / Setteri

setter

Accesibil ca și cum ar fi proprietatea culoare De tip String

Page 25: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 25

Exemplu: Getteri / Setteri

Acum în setter putem verifica validitatea culorii

Dacă e ok, o memorăm

Page 26: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 26

Exemplu: Getteri / Setteri

Pentru a prelua culoarea utilizăm getterul

Care returnează valoarea

Page 27: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 27

• 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 );

Getteri / Setteri

Page 28: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 28

• 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 ?!?!

toString()

Page 29: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 29

• 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

toString()

Page 30: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 30

• Dacă nu este suprascrisă, metoda toString() va afișa ceva de genul [object <tipObiect>], unde tipObiect este tipul obiectului ce a fost utilizat ca un șir de caractere.

• Atunci când este suprascrisă (nu necesită nepărat override.

• Metoda toString() trebuie NEAPARAT să fie publică, să returneze un String și NU ARE parametri de intrare.

toString()

Page 31: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 31

Exemplu toString()

Page 32: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 32

PAUZĂ ?

Page 33: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 33

Ierarhia de obiecte din scenă

Page 34: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

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: coordonatele centrului și raza)

Page 35: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 35

Obiecte grafice

Raster vs. Vectorial a a

a

Page 36: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

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.

Page 37: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

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

Page 38: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

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.

Page 39: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 39

Obiecte grafice

Page 40: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 40

Obiecte grafice

Page 41: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 41

Afisate Neafisate

Page 42: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 42

addChild() – adaugă la ierarhie

Page 43: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 43

Afisate Neafisate

Page 44: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

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)

Page 45: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 45

Obiecte grafice

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

Page 46: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 46

Obiecte grafice

Moștenește toate porprietăţile și metodele din

Object

Page 47: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 47

Obiecte grafice

Sau din EventDispatcher prin intermediul căreia se pot

arunca evenimente

Page 48: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 48

Obiecte grafice

DisplayObject aduce o serie de proprietăţi cum ar fi

poziţia imaginii sau gradul de transparenţă

Page 49: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 49

Obiecte grafice În Clasa InteractiveObject sutn definite evenimentele la care containerul poate răspunde

(click, keypressed, etc)

Page 50: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 50

Obiecte grafice DisplayObjectContainer oferă

posibilitatea adăugării obiectelor grafice sau a altor

containere grafice în interiorul său

Page 51: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 51

Obiecte grafice

Acestea sunt câteva containere grafice….

Page 52: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 52

Obiecte grafice Cel mai important: Stage (containerul principal).

Următorul: Sprite (probabil cel mai utilizat)

Page 53: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 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.

Page 54: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

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.

Page 55: Cercul De Rich Internet Applications   Constructor, Getter,Setter, Display List

http://www.info.uaic.ro/~flash 55

Întrebări ?