нов 252014
 

FLASH MAHER

 

Adobe Flash Professional – Univerzalna knjiga

ACTION SCRIPT 3.0

 

OPP – OBJEKTNO ORIJENTISANO PROGRAMIRANJE

 

FLASH MAHER - OPP - OBJEKTNO ORIJENTISANO PROGRAMIRANJE

FLASH MAHER – OPP – OBJEKTNO ORIJENTISANO PROGRAMIRANJE

 

Adobe Flash Professional ima predviđene mogućnosti objektno orijentisanog programiranja koje se odnose i na dizajn (često se naziva objektno orijentisani dizajn) i na kodiranje – programiranje.
OOP u AS3.0 nam olakšava kodiranje u AS3.0, jer se uz pomoć OOP stvaraju pregledniji i razumljiviji kodovi, koje je lakše moguće ispravljati i ponovo koristiti. OOP podrazumeva organizovanje programa u objekte – pakete koda koji mogu da imaju svoje podatke, svojstva, metode i događaje. Praćenje i korišćenje svakog paketa je lakše uz OOP pomoću jednog podatka – instance (kojoj je dodeljen taj paket) pomoću koje je moguće pratiti i menjati sve ono što je vezano za taj paket.
Uobičajeni zadaci koje treba poznavati u OOP su definisanje klasa i definisanje svojstava i metoda – funkcija. Njihovo korišćenje nakon pravilnog definisanja je lako.
Pri OOP se stalno koristi reč klasa (class) koja predstavlja jedan objekat koji ima definisanu strukturu – kod i definisano ponašanje. Klase mogu biti hijerarhiski organizovane, t.j. jedna klasa može da nasleđuje funkcionalnost iz druge. Atributi klasa su karakteristike koje najčešće ukazuju na privatnost svojstava i metoda klasa. Kao i kod simbola, za korišćenje klasa se koriste instance, koje moraju da imaju svoja jedinstvena imena.
Klasa (njen kod) se piše u okviru posebnog fajla sa ’.as’ ekstenzijom, a ne u okviru glavnog fajla sa ’.fla’ ekstenzijom. Sastoji se iz ključnog imena ’class’ nakon koga sledi jedinstveno ime klase i na kraju u okviru velikih zagrada ’{ /*code*/ }’ telo klase. To izgleda ovako:

class MyFirstClass {

trace(“Hello!”);

}

AS3.0 Vam dozvoljava da izaberete glavne atribute klase i to:
internal (klasa vidljiva u okviru sopstvenog paketa – osnovna vrednost)
public (klasa vidljiva svuda)
dinamic (klasa koju je moguće menjati programski)
final (klasa ne moža da bude izvršena iz drugih klasa)

ActionScript fajl ’.as’ mora da ima jednu javno vidljivu definiciju klase označenu sa ’public class’, koja se piše u okviru paketa koji sadrži ključnu reč ’package’ i telo u okviru velikih zagrada ’{ }’. Osnovni izgled bi bio sledeći:

package {

public class MyFirstClass {

trace(“Hello!”);

}

}

Da bi ovaj paket funkcionisao potrebno je da se snimi u istom folderu u kome je i ’.fla’ fajl sa jedinstvenim imenom paketa ’MyFirstClass.as’ u ovom slučaju. Da bi pozvali ovaj paket iz glavnog ’.fla’ fajla potrebno je da u njemu unesete kod za uvoženje ovog paketa (import MyFirstClass;) i da formirate jednu instancu kao klasu:

var MyInstance: MyFirstClass = new MyFirstClass();

Postupak je sličan kreiranju bilo kog podatka ili funkcije:

var MyTraceFunction:Function = function () { trace(“Hi!”); }

To se zajedno kodira na sledći način:

import MyFirstClass;

var MyInstance:MyFirstClass = new MyFirstClass();

AS3.0 Vam dozvoljava da u okviru jednog paketa imate više klasa, koje su vidljive klasama iz ovog paketa, dok je samo glavna klasa ’public’ vidljiva svuda.

package {

public class MyFirstClass {

trace(“Hello!”);

var MySecondInstance:MySecondClass = new MySecondClass()č

}

}

class MySecondClass {

trace(“Hi again!”);

var MyThirdInstance:MyThirdClass = new MyThirdClass();

}

class MyThirdClass {

trace(“Hi, hi, hi!”);

}

Dinamičke klase dopuštaju da im se dodaju programski nove osobine.

package {

public dynamic class MyFirstClass {

trace(“Hello!”);

}

}

Novi ’.fla’ kod:

import MyFirstClass;

var MyInstance:MyFirstClass = new MyFirstClass();

MyInstance.NewValue = “Working…”;

trace(MyInstance.NewValue);

Atributi podataka, svojstava i metoda klase mogu biti:
internal (osnovna vrednost – vidljivo u okviru paketa)
private (vidljivo samo u okviru klase)
public (vidljivo svuda)
protected (vidljivo samo u okviru iste klase i izvedenih klasa)
static (navodi pripadnost klasi)
UserDefinedNamespace (prilagođeno ime koje definiše korisnik)

Možemo definisati podatke:

public var VisibleValue:String = “Use from .as & .fla file.”;

private var PackageValue:String = “Use only from .as file.”;

Slično kao i podaci i metode ili funkcije klase mogu biti:
internal (osnovna vrednost – vidljivo u okviru paketa)
private (vidljivo samo u okviru klase)
public (vidljivo svuda)
protected (vidljivo samo u okviru iste klase i izvedenih klasa)
static (navodi pripadnost klasi)
UserDefinedNamespace (prilagođeno ime koje definiše korisnik)

Kao i ranije funkcije u okviru klase mogu biti definisane na dva načina:

1) public function Example() { /* code */ }

2) public var Example:Function = function () { /* code */ }

Isto važi i za ulazne i izlazne vrednosti funkcija.

AS3.0 dopušta ne samo zamenu javnih vrednosti podataka klasama, već i zamenu metoda – funkcija uz pomoć naredbe ’override’. U sledećem primeru je objašnjeno izračunavanje površine objekta preko klase ’Answer’, s tim da se navodi kojoj klasi objekt pripada ’Square’ ili ’Circle’. Kada se navede kojoj klasi objekt pripada, odgovarajuća klasa menja funkciju klase ’Answer’.

OverrideExample.fla

import Answer;

import Circle;

import Square;

var Object_1:Circle = new Circle();

trace(Object_1.Value(5)); // 78.53981633974483

var Object_2:Square = new Square();

trace(Object_2.Value(5)); // 25

Answer.as

package {

public class Answer {

public function Value(InputValue:Number):Number {

return NaN;

}

}

}

Circle.as

package {

import Answer;

public class Circle extends Answer {

override public function Value(Radius:Number):Number {

return (Radius * Radius * Math.PI);

}

}

}

Square.as

package {

import Answer;

public class Square extends Answer {

override public function Value(Length:Number):Number {

return (Length * Length);

}

}

}

Kada se vidi ovaj primer sve izgleda tako prosto, ali retko ko uspe da oformi izvršenje ovih skripti, jer su na internetu mnoge informacije nepotpuno objašnjene.
U slučaju da imate više ’.as’ skripti i da želite da ih organizujete u foldere, možete i to da uradite uz navođenje putanje ’.fla’ fajlu gde se nalazi željeni ’.as’ fajl. Putanja se ne odvaja pomoću ’/’ već pomoću ’.’ i navodi se na sledeći način:

import Folder_1.Folder_2.Folder_3.File_2;

import Folder_1. File_1;

Odgovarajući paketi ’File_1.as’ i ’File_2.as’ moraju imati u sebi istovetne putanje iza ključne reči ’package’.

File_1.as

package Folder_1 { /* */ }

File_2.as

package Folder_1.Folder_2.Folder_3 { /* */ }

Moguće je i importovanje svih ’.as’ fajlova iz jednog direktorijuma, ako se napiše kod na sledeći način:

import Folder_1.Folder_2.Folder_3.*;

 

FLASH MAHER!
FLASH MAHER – UVOD!
FLASH MAHER – OSNOVNI PODACI!
FLASH MAHER – OPERATORI I USLOVNE NAREDBE!
FLASH MAHER – FUNKCIJE!
FLASH MAHER – DOGAĐAJI!
FLASH MAHER – FILTERI!
FLASH MAHER – GRAFIKA!
FLASH MAHER – MASKA!
FLASH MAHER – ANIMACIJA!
FLASH MAHER – OPP – OBJEKTNO ORIJENTISANO PROGRAMIRANJE!
FLASH MAHER – FLASH I PHP!

VojaMaher