Dengan cara yang sama, sebuah kelas juga menyediakan sekumpulan operasi
(biasanya public) dan sekumpulan data bit (biasanya non-public) yang menyatakan
nilai abstrak objek dari kelas tersebut.
Hubungan antara kelas dengan objek dapat dinyatakan dengan analogi
berikut:
class vs. object = type vs. variable
Pendeklarasian kelas (terutama fungsi anggotanya) menentukan perilaku
objek dalam operasi penciptaan, pemanipulasian, pemusnahan objek dari kelas
tersebut. Dalam pemrograman dengan bahasa yang berorientasi objek dapat dilihat
adanya peran perancang kelas dan pengguna kelas. Perancang kelas menentukan
representasi internal objek yang berasal kelas yang dirancangnya.
Pendeklarasian kelas dilakukan seperti pende_nisian sebuah struktur
namun dengan mengganti kata kunci struct dengan class. Kata kunci class dalam C++ dapat dipandang sebagai
perluasan dari kata kunci struct, hanya perbedaannya nama kelas (tag-name) dalam C++ sekaligus merupakan tipe baru.
Contoh Sebuah struct yang memiliki prosedur/fungsi
struct Stack {
// nama tag "Stack" sekaligus menjadi tipe baru
/*******************
*
function member *
*******************/
void
Pop(int&);
void
Push (int);
int
isEmpty();
//
... definisi fungsi lainnya
/***************
*
data member *
***************/
int
topStack;
int
*data;
//
... definisi data lainnya
};
Sebuah kelas
memiliki satu atau lebih member
(analog dengan _eld pada struct). Ada dua jenis member:
·
Data
member, yang merupakan representasi internal dari kelas
·
Function
member, kumpulan operasi (service/method) yang dapat diterapkan terhadap objek,
seringkali disebut juga sebagai class interface
Setiap _eld yang dimiliki sebuah struct dapat secara bebas diakses dari luar struktur tersebut. Hal ini berbeda
dibandingkan dengan pengaksesan terhadap anggota kelas. Hak akses dunia luar
terhadap anggota (data dan fungsi) diatur melalui tiga kata kunci private, public, dan protected. Setiap
fungsi anggota kelas selalu dapat mengakses data dan fungsi anggota kelas
tersebut (dimanapun data tersebut dideklarasikan: private, public, protected). Sedangkan
fungsi bukan anggota kelas hanya dapat mengakses anggota yang berada di bagian public. Hak akses terhadap fungsi dan data anggota kelas dinyatakan dalam
Tabel dibawah ini.
Wilayah member
di deklarasikan
|
Makna
|
public
|
dapat diakses
oleh fungsi di luar kelas (fungsi bukan anggota kelas tersebut) dengan
menggunakan operator selektor (.
atau ->)
|
private
|
hanya dapat
diakses oleh fungsi anggota kelas tersebut
|
protected
|
hanya dapat
diakses oleh fungsi anggota kelas tersebut dan fungsi-fungi anggota kelas
turunan
|
Dalam deklarasi \kelas" Stack pada Contoh
diatas, semua anggota bersifat public, karena hal ini sesuai dengan sifat sebuah struct. Namun jika, kata kunci \struct" diganti menjadi \class", maka semua anggota otomatis bersifat private.
Dalam contoh tersebut, fungsi-fungsi anggota Pop(), Push(), dsb hanya dideklarasikan namun belum dide_nisikan. Pende_nisian anggota fungsi dapat
dilakukan dengan dua cara:
·
Di
dalam class body, otomatis menjadi inline function
·
Di luar
class body, nama fungsi harus didahului oleh class scope
Contoh dibawah
menyajikan deklarasi kelas Stack
dengan menggunakan kata kunci class 3
Contoh Deklarasi
kelas Stack beserta fungsi anggota
class Stack {
public:
// function
member
void
Pop(int& ); // deklarasi (prototype)
void Push
(int); // deklarasi (prototype)
/*---
pendefinisian di dalam class body ---*/
int isEmpty() {
return topStack
== 0;
}
private:
// data member
int topStack; /*
posisi yang akan diisi berikutnya */
int *data;
}; //
PERHATIKAN TITIK KOMA !!!
//
pendefinisian member function Pop di luar
// class body
void
Stack::Pop(int& item) {
if (isEmpty())
{
// error
message
}
else {
topStack--;
item = data
[topStack];
}
} // TIDAK
PERLU TITIK KOMA !!!
void
Stack::Push (int item) {
if (isFull()) {
// error
message
}
else {
data [topStack]
= item;
topStack++;
}
}
0 komentar:
Posting Komentar