cercul de rich internet applications variabile, functii, obiecte, mosteniri
DESCRIPTION
In acest Cerc de RIA am discutat despre variabile, funcții, clase, obiecte - la un nivel mai mult informal. De asemenea am realizat o aplicație cu balane (pe care o găsiți la adresa http://www.info.uaic.ro/~flashTRANSCRIPT
Cercul de Rich Internet Applications
Facultatea de InformaticăIași
http://www.info.uaic.ro/~flash 2
• Am văzut cam ce și cine este RIA• Am vizionat o grămadă (mică) de exemple• Am aflat istoria Flash-ului• Am discutat despre instrumentele necesare
pentru realizarea aplicațiilor Flash• Am înțeles ce înseamnă player Flash• Am făcut o primă aplicație (banală) de tip Hello World
Data trecută… am…
http://www.info.uaic.ro/~flash 3
• Face “prezența” aia să vă cunosc și io [și să văd câți ați rămas] – facem o listă pe undeva ?
• Facem un quiz rapid• Nu uitați de site… http
://www.info.uaic.ro/~flash• Ne băgăm în AS3: Variabile, Funcții, Obiecte,
Moștenire
Tura asta vom…
http://www.info.uaic.ro/~flash 4
• Cam cât de bine știți să programați în Flash (sau Java, C#, JavaScript, PHP)
Quiz
http://www.info.uaic.ro/~flash 5
• Aveți vreun subiect favorit despre care ați dori să auziți pe la cercul acesta ?
Quiz
http://www.info.uaic.ro/~flash 6
• Câți dintre dvs. ați făcut Hello World-ul de data trecută ? – de curiozitate să vedeți dacă vă iese?
Quiz
http://www.info.uaic.ro/~flash 7
• Câți dintre voi ați vizitat http://www.info.uaic.ro/~flash ?
Quiz
http://www.info.uaic.ro/~flash 8
9
Forum
http://www.info.uaic.ro/~flash
http://www.info.uaic.ro/~flash 10
Tutoriale Video
http://www.info.uaic.ro/~flash 11
Reamintim primul cod…
http://www.info.uaic.ro/~flash 12
Să începem cu începutul tura asta….
http://www.info.uaic.ro/~flash 13
Variabilă
• Valorile pe care le utilizăm în programare sunt păstrate în memoria calculatorului.
• Pentru că nouă (oamenilor) ne este greu să știm mereu la ce adresă (număr foarte mare) de memorie se află o valoare, preferăm să creăm identificatori care să memoreze pentru noi aceste valori.
• Accesul se va face ulterior pe baza identificatorilor (denumiți variabile).
http://www.info.uaic.ro/~flash 14
Variabilă
• O variabilă este așadar un identificator ușor de ținut minte care indică o anumită zonă de memorie.
• Uneori zona de memorie este mai mică, alteori mai mare (ca să descriem un elefant ne trebuie mai multă memorie decât cea necesară pentru a descrie un purice).
• Din acest motiv, zicem că variabilele au anumite tipuri.
http://www.info.uaic.ro/~flash 15
Variabilă
• O variabilă este (în final) un identificator ce indică o anumită zonă de memorie (și când zicem zonă, zicem de unde începe și cât de mare este).
• Pentru a declara o variabilă în AS3 procedăm astfel:
var numeVariabilă : tip [ = valoare]
Cuvânt - cheienume tipul Opțional o valoare inițială
http://www.info.uaic.ro/~flash 16
Tipuri de date
• Numerice: - int (întreg cu semn, pe 32 biți) - uint (întreg fără semn, tot pe 32 de biți) - Number (virgulă mobilă, 64 de biți)• Atunci când aveți de ales între ele, țineți cont
că int, uint sunt accesate mai rapid de FlashPlayer.
• Operatori: + - * / %
http://www.info.uaic.ro/~flash 17
Tipuri de date
• Boolean - două valori: true / false• Operatori logici: && - și logic, || - sau logic, ! – not logic• Operatorii de comparație au ca rezultat o
valoare booleană. Aceștia sunt: <, >, <=, >=, ==, != (diferit),
http://www.info.uaic.ro/~flash 18
Tipuri de date
• String – șiruri de caractere• Array – tablouri de elemente• Object – definirea unui obiect generic• Date – pentru manipularea datelor
calendaristice• * - date fără tip (nerecomandat)• XML, Sprite, Sound, MovieClip, Event, Video,
TextField, Microphone, Bitmap, RegExp, etc.
http://www.info.uaic.ro/~flash 19
Exemple de variabile:
http://www.info.uaic.ro/~flash 20
Funcții
• Funcțiile sunt subprograme care “fac ceva”.• De exemplu: adună două numere, testează
dacă azi e joi, desenează un cerc, redă o melodie etc.
• La fel ca variabilele, funcțiile au un identificator – un nume (pentru a apela funcția)
http://www.info.uaic.ro/~flash 21
Funcții
• Funcția poate primi o serie de parametri (de exemplu dacă e să adunăm trei numere, aceste trei valori trebuie să ajungă într-un fel în interiorul funcției).
• Funcția poate returna o valoare (de exemplu suma numerelor) care poate sau nu să fie utilizată/memorată.
http://www.info.uaic.ro/~flash 22
Funcții
• Funcția poate primi o serie de parametri (de exemplu dacă e să adunăm trei numere, aceste trei valori trebuie să ajungă într-un fel în interiorul funcției).
• Funcția poate returna o valoare (de exemplu suma numerelor) care poate sau nu să fie utilizată/memorată.
http://www.info.uaic.ro/~flash 23
Cam așa arată o funcție:
function aduna(a: uint, b:uint):uint{return ( a + b );
}
Cuvânt cheie
Numele funcției
Parametrii și tipurile lor
Tipul valorii returnate de
funcție
Dacă returnează ceva, trebuie să aibă return
Tipul valorii a + b este uint (deci de tipul returnat de
funcție)
http://www.info.uaic.ro/~flash 24
Funcții
• Variabilele pot fi inițializate în antetul funcției, în cazul în care apelul nu conține acea variabilă, se va considera valoarea predefinită:
function aduna(a: uint, b:uint = 2):uint{return ( a + b );
}aduna ( 7 ); // de fapt va aduna 7 cu 2
http://www.info.uaic.ro/~flash 25
Funcții
• Un tip special de dată de intrare este args. Acest tip poate primi oricâte valori ce vor fi memorate automat într-un tablou:
function aduna(...args):uint{ var suma:uint = 0 for(var i:uint = 0; i<args.length; i++) suma = suma + args[i]; return suma;}aduna ( 7, 8, 2, 9, 12, 122 ); //7+8+..122=160
http://www.info.uaic.ro/~flash 26
AS3 lucrează NUMAI cu obiecte
• Ei, și dacă funcționează numai cu obiecte, ce-o fi acela un obiect ?
http://www.info.uaic.ro/~flash 27
Ce e acela obiect ?!
• Exemplu: presupunem că în fața blocului nostru trăiește un cățel (maidanez) – să vedem cum “funcționează” :D
http://www.info.uaic.ro/~flash 28
Ce e acela obiect ?!
• Câinele are un nume: Max, are o culoare: maro cu negru, culoarea ochilor este: maro, are o vârstă: 4, un număr de picioare: 3 (e veteran de lătrat după mașini).
• Toate cele mai de sus se numesc proprietăți (sau atribute) ale obiectului.
http://www.info.uaic.ro/~flash 29
Ce e acela obiect ?!
• Câinele poate face o serie de acțiuni: latră, mușcă, aleargă, mănâncă etc.
• Acțiunile pe care le face câinele pot fi considerate “funcții” pe care cățelul nostru le poate executa.
• Aceste funcții se numesc “metode”.
http://www.info.uaic.ro/~flash 30
Ce e acela obiect ?!
• Uneori, anumite metode sunt executate automat din pricina apariției unor “evenimente”: dacă cineva strigă “cuțu”, atunci este apelată automat metoda “întoarce capul” sau “dă din coadă”
http://www.info.uaic.ro/~flash 31
Cum se definește un obiect ?
• Ei bine, Max este un caz particular de cățel. Putem totuși să ne gândim că toți cățeii au un nume, o culoare sau pot lătra.
• Atunci pentru a defini obiectul va trebui să creăm o “definiție” a acestuia: acest lucru se realizează într-o clasă.
http://www.info.uaic.ro/~flash 32
Câte ceva despre clase
• Anumite proprietăți pot fi accesate și modificate de alte obiecte (numele câinelui).
• Unele proprietăți pot fi citite de alte obiecte și nu pot fi modificate (culoarea ochilor).
• Un obiect poate avea anumite proprietăți “intime”… la care celelalte obiecte nu trebuie să aibă acces: [inima, ficatul]
• Așa au apărut modificatorii de acces.
http://www.info.uaic.ro/~flash 33
Câte ceva despre clase
• Fiecare dată membru (proprietate sau metodă) trebuie să aibă un modificator de acces !
• Modificatorii de acces în AS3 sunt:
- public (poate accesa oricine) - private (poate accesa doar obiectul) - protected (poate fi accesată și de instanțe ale
sublcaselor) - internal (poate fi accesată de clase din același pachet) - namespaces ??
http://www.info.uaic.ro/~flash 34
Cam așa ar arăta clasa Cățel:
http://www.info.uaic.ro/~flash 35
Despre clase (moștenire)
• OK, avem clasa Cățel. Dar dacă drept animal vreau să am și un Dulău (un câine mult mai mare) ?
• Dacă vrem să construim o clasă pornind de la o clasă deja existentă, facem acest lucru prin extinderea clasei inițiale.
• După numele clasei putem adăugaȘ ……extends ClasăDeBazăEx: public class Dulău extends Cățel;
http://www.info.uaic.ro/~flash 36
Despre clase (moștenire)
• Clasa extinsă se va numi superclasă.• Clasa nouă se numește subclasă.
• În mod uzual, subclasa va avea toate proprietățile și metodele definite în superclasă (de exemplu orice dulău va lătra, mușca, va avea un nume sau o culoare).
http://www.info.uaic.ro/~flash 37
Despre clase (moștenire)
• Deoarece moștenirea creează obiecte mai bune sau particularizate într-un anumit fel, s-a hotărât ca în AS3 (dar nu numai) să existe o clasă generală: clasa Object.
• Orice clasă din AS3 este construită prin extinderea clasei Object sau prin extinderea unei clase ce a extins Object.
http://www.info.uaic.ro/~flash 38
Despre clase
http://www.info.uaic.ro/~flash 39
Sprite are metode din Object
http://www.info.uaic.ro/~flash 40
Utilizarea clasei:
• Un obiect se declară la fel cum se declara orice variabilă.
• Deoarece obiectele (mai complexe decât Number, uint, String – care sunt și ele obiecte, subclase ale lui Object) nu sunt create automat în memorie, este nevoie de instanțierea lor explicită, utilizând un operator special: new
http://www.info.uaic.ro/~flash 41
Utilizarea clasei:
• Exemplu de instanțieri de clase: var catelulBlocului : Catel; // declarare
catelulBlocului = new Catel(); // creare
• Partea frumoasă e că putem crea oricâte instanțe și să le particularizăm diferit.
http://www.info.uaic.ro/~flash 42
Utilizarea clasei:
• Atunci când este creat un nou obiect (instanță), este apelată o metodă specială denumită constructor. Din acest motiv, după numele clasei (din dreptul lui new) apar paranteze.
http://www.info.uaic.ro/~flash 43
Constructorul unei clase
• Constructorul are rolul de a face anumite inițializări necesare bunei funcționări ale obiectului.
• Pentru că este atât de specială, metoda-constructor are același nume ca și clasa ;)
http://www.info.uaic.ro/~flash 44
Clasele (așa, ca idee)
http://www.info.uaic.ro/~flash 45
Ne jucam cu cerculețe….
• Let’s code somethin’
• Să facem clasa Balon. Clasa Balon extinde Sprite, în Sprite există o proprietate graphics (care este un obiect de tip Graphics) în care putem desena – un oval (balonul).
• Clasa Balon va avea proprietățile x și y reprezentând poziția balonului.
http://www.info.uaic.ro/~flash 46
Ne jucam cu cerculețe….
• Cu ajutorul metodei setInterval putem apela la un interval de timp o anumită metodă. Dacă apelăm setInterval în constructorul clasei balon, putem face ca o metodă din cadrul balonului să fie apelată la un interval de timp (0.1 secunde de exemplu) deplasând de fiecare dată balonul pe una din axe.
http://www.info.uaic.ro/~flash 47
Întrebări ?