Tuesday, October 28, 2014

Apa itu Array ?


Array adalah sebuah kumpulan data yang terdiri dari jenis data yang sama. Setiap nilai yang berada di dalam array disebut sebagai element, apapun jenis data. Nombor-nombor data yang menunjuk pada element array disebut subscript atau offset.

Array dapat digambarkan sebagai sebuah rak dengan ukuran yang sama dan untuk menyimpan barang-barang yang sejenis (jenis yang sama). Misalkan rak untuk menyimpan  baju. Perhatikan gambar di bawah ini :





Rak di atas bernama baju, terdiri dari 4 rak yang diberi nomor 0 hingga 3 dan rak tersebut diisi dengan jenis-jenis baju untuk keperluan tertentu. Dalam contoh di atas ada 4 jenis baju,iaitu pesta, tidur, santai, dan olahraga sehingga dapat disebut rak baju mempunyai 4 element. Apabila kita memerintahkan komputer untuk mengambil baju tidur, maka akan dituliskan :

jenis_data baju[2]; //menunjuk pada rak ketiga

Syntax array adalah sebagai berikut :

jenis_data nama_array[jml_element];

Kita dapat mengakses elemen-elemen array dengan menunjuk kepada nombor elemen array. Nombor offset elemen array dimulai dari no l sehingga elemen array yang pertama adalah :

namaArray[0];

Sebagai pegangan kita tentang penomboran array dengan elemennya, maka misalkan sebuah array cubaArray[n] pasti mempunyai n elemen yang dinombori dengan cubaArray[0],cubaArray[1], sampai dengan cubaArray[n-1]. Ada programmer yang menganggap bahawa cubaArray[0] merupakan elemen array ke nol. Hal ini bukan merupakan hal yang baik, karena jika cubaArray[0] merupakan elemen ke nol, maka cubaArray[14] merupakan elemen ke-14. Apakah demikian ? Cuba kita lihat rumus di atas, bukankah sebenarnya cubaArray[14] merupakan elemen ke-15 dari array cubaArray. Oleh kerana itu, lebih baik jika kita dari awal menyebut bahawa cubaArray[0] merupakan elemen pertama dan nombor offset-nya nol.

  

Array #1 : Pengenalan Data Array

Array adalah suatu variable yang dapat menampung jenis data yang sama. Dalam satu variable array dapat menampung satu set data kedalam elemen array.
Sebagai contoh array “nama hari”, maka elemen datanya adalah : “Ahad”,”isnin”,”Selasa”,”Rabu”,”Khamis”,”Jumaat”,”Sabtu”.
Implementasi array pada action script adalah sebagai berikut:
hari=new Array("Ahad","isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu");
selain itu, array juga dapt didefinisikan dengan cara seperti berikut:














hari=new Array();

hari[0]="Minggu";

hari[1]="Senin";

hari[2]="Selasa";

hari[3]="Rabu";

hari[4]="Kamis";

hari[5]="Jumat";

hari[6]="Sabtu";

Index data selalu bermula dengan angka 0, sehingga  jumlah elemen array ada 7 maka indexnya adalah 0-6.
Untuk melakukan pengujian, array juga dipanggil dengan perintah trace.
trace(hari);
                                                                                    
Sekarang kita pelajari bagaimana cara mengakses data pada array.
Untuk mengakses elemen array tertentu, kita juga memanggilnya dengan menuliskan index yang di tuju.
trace(hari[3]);  //melihat data hari pada index ke 3.
Array memiliki beberapa properti yang dapat digunakan untuk memanipulasi data seperti menambah, menghapus atau menyisipkan data.
push()
Metode push() berfungsi menambah elemen data pada array pada index terakhir.






produk=new Array();

produk.push("Photoshop");

produk.push("Flash");

trace(produk);//output: Photoshop, Flash
pop()
Metode pop() berfungsi untuk menghapus data array pada index terakhir.


produk.pop();

trace(produk); //output: Photoshop
splice()
Metode splice() berfungsi untuk menghapus sekaligus menambahkan elemen baru pada array.






produk=new Array("Adobe","Flash","Photoshop");

trace(produk);//output:"Adobe","Flash","Photoshop"

produk.splice(0,1,"Dreamweaver");//menghapus "Adobe" dan menambahkan "Dreamweaver"

trace(produk);//output:"Dreamweaver","Flash","Photoshop"


Sebelum ini kita sudah mengenal data array dan cara mengakses data array. Sekarang kita pelajar jenis array yang memiliki data berdimensi 2 atau multidimensi.
Array multidimensi dapat diilustrasikan seperti sebuah jadual dimana jadual tersebut memiliki baris dan kolum.
index
0
1
2
3
0
5
0
25
9
1
5
9
17
5
2
9
12
11
12
3
32
3
5
2
Cara mendeklarasikan array 2 dimensi adalah sebagai berikut:
var dataNilai:Array=new Array();

dataNilai[0]=[5,0,25,9];

dataNilai[1]=[5,9,17,5];

dataNilai[2]=[9,12,11,12];

dataNilai[3]=[32,3,5,2];

trace(dataNilai);
Untuk mengkses data array tertentu, cukup memanggilnya dengan memasukan index baris dan kolum yang di tuju:

trace(dataNilai[3][1]);//output:3


  
Di AS3 ada tiga types of "list" object: Arrays, Vectors & Dictionaries. Ketiganya memungkinkan Anda untuk menyimpan atau  menampung data sehingga anda dapat mengaksesnya kembali.

Array

CUBA DAPATKAN OUTPUT-OUTPUT DENGAN ATURCARA ARRAY DIBAWAH
Array adalah cara paling sederhana dan paling banyak digunakan

Membuat array kosong
var a:Array = new Array( );
trace(a);
membuat 5 data array
var b:Array = new Array(5);
trace(b);
membuat data siti,bob,aniq,azie,Kak Katy,niza,miza,alia,Anas
var c:Array = new Array("siti","bob","aniq","azie","Kak Katy","niza","miza","alia","Anas");
trace(c);
menampilkan jumlah elemen dalam array
trace(c.length);
mengakses elemen dalam array
trace(c[5]);
menganti elemen dalam array
trace(c[4]="SKM2101");
mencari indeks elemen dalam array
trace(c.indexOf("niza"));
membuat reverse pada Array (reverse atau sort)
var oceans:Array = ["ayam", "lembu", "itik", "kambing"];
oceans.reverse();
membuat sort pada Array
var oceans:Array = ["ayam", "lembu", "itik", "kambing"];
oceans.sort();
Tutorial reverce dan sort dalam Array
var poets:Array = ["saya", "suka", "tidur", "dalam","Kelas",];
poets.sort();
trace(poets);
poets.sort(Array.CASEINSENSITIVE);
trace(poets);
poets.sort(Array.DESCENDING);
trace(poets);
poets.sort(Array.DESCENDING | Array.CASEINSENSITIVE);
trace(poets);
*Cuba Latihan ini dan tukar sort kepada reverse


  ARRAY
Tugas biasa array 
Berikut adalah tugas-tugas yang biasa dalam array:
Mewujudkan tatasusunan diindeks
Menambah dan mengeluarkan unsur
Menyusun unsur  
Mengekstrak bahagian array
Bekerja dengan array bersekutu
Bekerja dengan tatasusunan multidimensi
Menyalin elemen array
Mewujudkan subkelas array


Indexed Arrays
Arrays indeks menyimpan satu siri satu atau lebih nilai-nilai yang dianjurkan supaya setiap nilai boleh  diakses dengan menggunakan nilai integer tak bertanda. Indeks pertama sentiasa bilangan 0, dan kenaikan indeks dengan 1 untuk setiap elemen berikutnya ditambah kepada array.

// Use Array constructor.
var myArray:Array = new Array();
myArray.push("one");
myArray.push("two");
myArray.push("three");
trace(myArray); // output: one,two,three
// Use Array literal.
var myArray:Array = ["one", "two", "three"];
trace(myArray); // output: one,two,three

Creating Arrays
Fungsi Creating Array  boleh digunakan dalam tiga cara. Pertama, jika anda memanggil pembina tanpa argument, anda akan mendapat nilai kosong. Sebagai contoh, kod berikut panggilan Array yang pembina tanpa argument


var names:Array = new Array();
trace(names.length); // output: 0

jika anda menggunakan nombor sebagai satu parameter untuk pembina Array itu, dengan nilai setiap unsur yang bersedia untuk undefined. ia mestilah  integer  antara nilai 0 dan 4294967295. Sebagai contoh, kod berikut panggilan pembina Array dengan hujah angka tunggal:
var names:Array = new Array(3);
trace(names.length); // output: 3
trace(names[0]); // output: undefined
trace(names[1]); // output: undefined
trace(names[2]); // output: undefined

jika anda memanggil constructor dan senarai  sebagai parameter, array created, dengan unsur-unsur yang sepadan dengan setiap parameter.  Berikut adalah  tiga kod untuk  Array created:

var names:Array = new Array("John", "Jane", "David");
trace(names.length); // output: 3
trace(names[0]); // output: John
trace(names[1]); // output: Jane
trace(names[2]); // output: David


Inserting Array Element
Tiga daripada kelas Array kaedah push (), unshift (), dan splice () - membolehkan anda untuk memasukkan unsur-unsur ke dalam array.

Push ()
kaedah menyertakan satu atau lebih unsur-unsur ke akhir satu array. Dalam erti kata lain, elemen terakhir dimasukkan ke dalam array menggunakan push () kaedah akan mempunyai nombor indeks yang tertinggi.

unshift ()
kaedah memasukkan satu atau lebih unsur-unsur di permulaan , yang sentiasa di nombor indeks 0.


splice()
kaedah akan memasukkan apa-apa bilangan item di indeks yang dinyatakan dalam array.
Contoh :
var planets:Array = new Array();
planets.push("Mars"); // array contents: Mars
planets.unshift("Mercury"); // array contents: Mercury,Mars
planets.splice(1, 0, "Venus", "Earth");
trace(planets); // array contents: Mercury,Venus,Earth,Mars

Removing array elements
Tiga kaedah yang Array pop (), shift (), dan splice () - membolehkan anda untuk menghapuskan unsur-unsur dari array

pop (),
shift() ,
splice()-

Pop ()
kaedah menyingkirkan elemen dari array yang terakhir. dalam erti kata lain, ia membuang elemen di nombor indeks yang tertinggi.

Shift()
kaedah menyingkirkan elemen dari permulaan array, yang bermaksud bahawa ia sentiasa membuang elemen di nombor indeks 0.

Splice ()
yang juga  digunakan untuk memasukkan  unsur-unsur, menghilangkan nombor  elemen bermula di nombor indeks yang ditetapkan.
CONTOH
var oceans:Array = ["Victoria", "Pacific", "Aral", "Superior", "Indian","Huron"];
oceans.splice(2, 2, "Arctic", "Atlantic"); // replaces Aral and Superior
oceans.pop(); // removes Huron
oceans.shift(); // removes Victoria
trace(oceans); // output: Pacific,Arctic,Atlantic,Indian

Sorting an array
Terdapat tiga kaedah-reverse (), sort (),dan sortOn () - yang membolehkan anda untuk menukar perintah array, sama ada dengan mengasingkan atau menterbalikkan perintah itu. Semua kaedah ini mengubah suai pelbagai yang sedia ada.
Reverse()
sort ()
sortOn ()

reverse ()
kaedah menukar giliran susunan seperti yang terakhir elemen menjadi elemen pertama, unsur kedua terakhir menjadi elemen kedua, dan sebagainya.

var oceans:Array = ["Arctic", "Atlantic", "Indian", "Pacific"];
oceans.reverse();
trace(oceans); // output: Pacific,Indian,Atlantic,Arctic

Sort ()
kaedah membolehkan anda untuk menyusun pelbagai dalam pelbagai cara yang telah ditetapkan, dan juga membolehkan anda membuat  sorting algoritma.

var poets:Array = ["Blake", "cummings", "Angelou", "Dante"];
poets.sort(); // default sort
trace(poets); // output: Angelou,Blake,Dante,cummings
poets.sort(Array.CASEINSENSITIVE);
trace(poets); // output: Angelou,Blake,cummings,Dante
poets.sort(Array.DESCENDING);
trace(poets); // output: cummings,Dante,Blake,Angelou
poets.sort(Array.DESCENDING | Array.CASEINSENSITIVE); // use two options
trace(poets); // output: Dante,cummings,Blake,Angelou



sortOn ()
kaedah membolehkan anda untuk menyusun pelbagai diindeks objek yang mempunyai satu atau lebih ciri-ciri yang sama yang boleh digunakan sebagai jenis kunci.

poets.sortOn("born", Array.NUMERIC);
for (var i:int = 0; i < poets.length; ++i)
{
trace(poets[i].name, poets[i].born);
}
/* output:
Wang 701
Dante 1265
Blake 1757
cummings 1894
Angelou 1928

*/

Asas-asas pengaturcaraan berorientasi objek(OOP)



Pengenalan kepada pengaturcaraan berorientasikan objek
Pengaturcaraan berorientasi objek (OOP) adalah satu cara menyusun kod di dalam program dengan kumpulan ke dalam objek-individu unsur-unsur yang termasuk maklumat (nilai-nilai data) dan fungsi. Dengan menggunakan pendekatan berorientasikan objek untuk menganjurkan program yang membolehkan anda untuk mengumpul  maklumat tertentu (misalnya, maklumat muzik seperti tajuk album, tajuk, atau nama artis) bersama-sama dengan fungsi yang sama atau tindakan yang berkaitan dengan maklumat (seperti "menambah trek ke senarai main" atau "memainkan semua lagu-lagu oleh artis ini"). Ruangan ini digabungkan menjadi satu item, sesuatu objek (contohnya, "Album" atau "MusicTrack").


Tugas biasa Berorientasikan objek pengaturcaraan
Pengaturcaraan berorientasi objek mempunyai dua bahagian iaitu  strategi dan teknik, untuk  membentuk program (sering dipanggil reka bentuk berorientasikan objek).
Tugas-tugas biasa yang terdapat dalam OOP:
■ Mewujudkan ciri-ciri, kaedah,mendapat dan mencapai (accessor methods)
■ Mengawal akses kepada classes, properties, methods, and accessors(mencapai)
■ Mewujudkan ciri-ciri statik dan kaedah
■ Mewujudkan struktur penghitungan
■ Mendefinisikan dan menggunakan antara muka
■ Bekerja unsur-unsur kelas utama



Konsep penting dan terma
Senarai rujukan berikut mengandungi istilah penting yang perlu tahu:
■ Attribute: Satu ciri yang diberikan kepada elemen kelas (seperti property or method) dalam
definisi kelas. Sifat-sifat yang biasa digunakan untuk menentukan sama ada property atau
method boleh didapati untuk diakses pada bahagian-bahagian program yang lain. Sebagai contoh,
sifat private  dan  public . Kaedah private hanya boleh dipanggil oleh kod dalam
kelas, manakala kaedah public boleh dipanggil oleh mana-mana kod dalam program ini.
■ Class: Struktur dan kelakuan jenis objek tertentu (seperti template atau rangka tindakan untuk objek jenis data).
■ Class hierarchy: Struktur yang pelbagai kelas, berkaitan dengan kelas fungsi dari kelas lain.
■ Data type: Jenis maklumat pembolehubah tertentu yang boleh menyimpan. Secara amnya, data type adalah perkara yang sama seperti kelas.
■ Operator Dot: (.) Tanda tempoh yang ada pada ActionScript (banyak pengaturcaraan lain bahasa) digunakan untuk menunjukkan bahawa nama merujuk kepada Child elemen objek (seperti property atau method). Sebagai contoh, dalam ungkapan myObject.myProperty, titik operator menunjukkan bahawa myProperty istilah ini merujuk kepada beberapa nilai yang unsur objek yang dinamakan myObject.
■ Enumeration (Penghitungan) : Satu set nilai yang tetap , dikumpulkan bersama untuk menjadikan  satu kelas.
■ Inheritance:  Mekanisme OOP  membolehkan satu definisi kelas untuk memasukkan semua fungsi definisi kelas yang berlainan (untuk menambah fungsi ).
■ instance: Objek yang sebenar diwujudkan dalam program.
■ Namespace (Ruang nama): Pada dasarnya sifat , membolehkan kawalan yang lebih baik di mana kod boleh mengakses kod lain


Classes
Classes adalah persembahan abstrak objek. Maklumat  kelas mengenai jenis data yang objek boleh memegang dan mempamerkan tingkah laku pada objek. Kebergunaan mungkin tidak ketara apabila menulis skrip  yang mengandungi hanya beberapa objek yang berinteraksi  satu sama lain. Bagaimanapun, bilangan objek yang perlu diuruskan akan meningkat, mendapati kelas membolehkan untuk mengawal bagaimana objek diwujudkan dan bagaimana mereka berinteraksi antara satu sama lain dengan lebih baik. ActionScript 1.0, pengaturcara ActionScript boleh menggunakan objek Fungsi yang boleh menyerupai kelas. ActionScript 2.0 menambah sokongan untuk kelas dengan kata kunci seperti class dan extends. ActionScript 3.0 bukan sahaja  menyokong kata kunci yang diperkenalkan pada ActionScript 2.0, tetapi juga boleh menambah beberapa keupayaan baru, seperti kawalan akses yang dipertingkatkan dengan ciri-ciri yang protected dan internal, dan kawalan kata kunci yang lebih baik.
(Jika anda pernah mencipta kelas dalam bahasa pengaturcaraan seperti Java, C ++, atau C #, anda akan mendapati ActionScript yang menyediakan satu pengalaman yang biasa)


Definisi kelas
Definisi kelas ActionScript 3.0 menggunakan sintaks yang sama seperti yang digunakan dalam ActionScript 2.0 . Sintaks yang betul untuk definisi kelas memerlukan kata kunci kelas diikuti oleh nama kelas. Badan kelas, yang tertutup oleh pendakap kerinting ({}), berikut nama kelas. Sebagai contoh, kod berikut mewujudkan kelas dinamakan Shape yang mengandungi satu pembolehubah, dinamakan visible:

public class Shape                         nama kelas
{
var visible:Boolean = true;
}

Satu perubahan yang ketara melibatkan sintaks definisi kelas yang berada di dalam pakej. dalam ActionScript 2.0, jika kelas yang berada di dalam satu pakej, nama pakej yang perlu dimasukkan ke dalam kelas declaration. Dalam ActionScript 3.0, yang memperkenalkan satu kenyataan pakej, nama pakej hendaklah dimasukkan ke dalam akuan pakej dan bukannya dalam akuan kelas. Sebagai contoh, pengisytiharan kelas berikut menunjukkan bagaimana kelas BitmapData, yang merupakan sebahagian daripada pakej flash.display, ditakrifkan dalam ActionScript 2.0 dan ActionScript 3.0:
// ActionScript 2.0
class flash.display.BitmapData {}
// ActionScript 3.0
package flash.display
{
public class BitmapData {}
}

Sifat-sifat kelas
ActionScript 3.0 membolehkan anda untuk mengubah suai definisi kelas menggunakan satu daripada empat sifat-sifat:
Attribute (sifat)
Definition
Dynamic
Benarkan properties yang akan ditambah kepada keadaan pada run time.
Final
Mesti tidak dilanjutkan kepada kelas yang lain.
Internal(default)
Boleh dilihat di dalam pakej semasa.
Public
Untuk rujukan mana-mana

Bagi setiap sifat-sifat ini, kecuali untuk internal, sifat mesti jelas termasuk untuk mendapatkan tingkah laku yang berkaitan. Sebagai contoh, jika tidak  meletakkan sifat Dynamic apabila mentakrifkan kelas, anda tidak akan dapat menambah properties untuk contoh kelas pada run time. Perlu menetapkan sifat dengan dengan jelas pada awal definisi kelas, kod berikut menunjukkan secara meletakkan sifat:
Dynamie class Shape {}
Perhatikan bahawa senarai ini tidak termasuk satu sifat yang dinamakan abstract. Ini kerana abstrak
kelas tidak disokong di ActionScript 3.0. Perhatikan juga bahawa senarai ini tidak termasuk sifat-sifat yang dinamakan private dan protected. Sifat-sifat ini mempunyai makna hanya di dalam kelas definisi, dan tidak boleh digunakan untuk kelas sendiri.

Class Body
Class body, yang tertutup oleh pendakap, digunakan untuk menentukan pembolehubah, pemalar, dan kaedah kelas. Contoh berikut menunjukkan pengisytiharan untuk akses kelas dalam API Adobe Flash Player:
public final class Accessibility
{
public static function get active():Boolean;
public static function updateProperties():void;
}

Anda juga boleh menentukan ruang nama di dalam badan kelas. Contoh berikut menunjukkan bagaimana ruang nama boleh ditakrifkan dalam badan kelas dan digunakan sebagai satu sifat kaedah yang ada dalam class:
public class SampleClass
{
public namespace sampleNamespace;
sampleNamespace function doSomething():void;
}

ActionScript 3.0 membolehkan anda untuk memasukkan bukan sahaja definisi dalam badan kelas, tetapi juga kenyataan. Kenyataan yang berada di dalam badan kelas, tetapi di luar definisi kaedah, adalah dilaksanakan dengan tepat apabila definisi pertama dan kelas yang berkaitan objek dicipta. Contoh berikut termasuk panggilan kepada fungsi luaran, hello (), dan kenyataan trace yang output mesej pengesahan apabila kelas ditakrifkan:
function hello():String
{
trace("hola");
}
class SampleClass
{
hello();
trace("class created");
}
// output when class is created
hola
class created

Berbeza dengan versi ActionScript terdahulu, dalam ActionScript 3.0 adalah dibenarkan untuk menentukan property statik dan instance property dengan nama yang sama di dalam badan kelas yang sama. Sebagai contoh, kod berikut mengisytiharkan pemboleh ubah statik bernama message dan pembolehubah dengan nama yang sama:

class StaticTest
{
static var message:String = "static variable";
var message:String = "instance variable";
// In your script
var myST:StaticTest = new StaticTest();
trace(StaticTest.message); // output: static variable
trace(myST.message); // output: instance variable
Sifat-sifat Class property
Dalam perbincangan model objek ActionScript, istilah property bermakna apa-apa yang boleh terdapat pada kelas, termasuk pembolehubah, pemalar dan kaedah. Ini berlainan daripada cara istilah ini digunakan dalam ActionScript 3.0 Languane and component Reference, Dalam ActionScript 3.0, terdapat satu set ciri-ciri yang boleh digunakan dengan mana-mana class property. Berikut senarai jadual set sifat-sifat.
Attribute
Definition
Internal
Rujukan di dalam pakej yang sama.
Private
Sebutan dalam kelas yang sama.
Protected
Sebutan dalam kelas yang sama dan kelas yang diperolehi.
Public
Untuk rujukan mana-mana.
Static
Menetapkan bahawa property yang dimiliki oleh kelas, bertentangan dengan contoh-contoh kelas.
UserDefinedNamespace
Custom nama ruang nama yang ditakrifkan oleh pengguna.




Terdapat 4 jenis fungsi dalam sesebuah kelas. Antara fungsi-fungsi yang diperlukan adalah seperti
1.       Constructor methods -fungsi yang berkongsi Nama yang sama seperti nama kelas di mana ia ditakrifkan
class Example
{
public var status:String;
public function Example()
{
status = "initialized";
}
}
var myExample:Example = new Example();
trace(myExample.status); // output: initialized

2.       Statis methods -juga dikenali sebagai class methods. methods yang diisytiharkan dengan kata kunci yang statik

contoh Date Class, seperti
sebagai getMonth ().

3.       Instance methods-kaedah yang diisytiharkan tanpa kata kunci yang statik
public class CustomArray extends Array
{
public static var arrayCountTotal:int = 0;
public var arrayNumber:int;
public function CustomArray()
{
arrayNumber = ++arrayCountTotal;
}
public function getArrayPosition():String
{
return ("Array " + arrayNumber + " of " + arrayCountTotal);
}
}

4.       Bound methods - juga dikenali sebagai kaedah penutupan, adalah satu kaedah yang diekstrak

class ThisTest
{
private var num:Number = 3;
function foo():void // bound method defined
{
trace("foo's this: " + this);
trace("num: " + num);
}
function bar():Function
{
return foo; // bound method returned
}
}
var myTest:ThisTest = new ThisTest();
var myFunc:Function = myTest.bar();
trace(this); // output: [object global]
myFunc();
/* output:
foo's this: [object ThisTest]
output: num: 3 */