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 */
No comments:
Post a Comment