cercul de rich internet applications variabile, functii, obiecte, mosteniri

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

Upload: university-al-i-cuza-of-iasi-romania

Post on 21-Jun-2015

1.204 views

Category:

Technology


2 download

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

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 ?