Cercul De Rich Internet Applications Variabile, Functii, Obiecte, Mosteniri

47
Cercul de Rich Internet Applications Facultatea de Informatică Iași

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/~flash

Transcript of Cercul De Rich Internet Applications Variabile, Functii, Obiecte, Mosteniri

Page 1: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

Cercul de Rich Internet Applications

Facultatea de InformaticăIași

Page 2: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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…

Page 3: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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…

Page 4: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 5: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 6: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 7: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

• Câți dintre voi ați vizitat http://www.info.uaic.ro/~flash ?

Quiz

Page 8: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 9: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

9

Forum

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

Page 10: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Tutoriale Video

Page 11: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Reamintim primul cod…

Page 12: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Să începem cu începutul tura asta….

Page 13: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 14: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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.

Page 15: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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ă

Page 16: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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: + - * / %

Page 17: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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),

Page 18: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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.

Page 19: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Exemple de variabile:

Page 20: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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)

Page 21: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 22: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 23: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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)

Page 24: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 25: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 26: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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 ?

Page 27: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 28: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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.

Page 29: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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”.

Page 30: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 31: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 32: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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.

Page 33: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 34: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Cam așa ar arăta clasa Cățel:

Page 35: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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;

Page 36: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 37: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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.

Page 38: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Despre clase

Page 39: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Sprite are metode din Object

Page 40: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 41: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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.

Page 42: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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.

Page 43: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Page 44: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Clasele (așa, ca idee)

Page 45: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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.

Page 46: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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.

Page 47: Cercul De Rich Internet Applications   Variabile, Functii, Obiecte, Mosteniri

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

Întrebări ?