Ads (728x90)

Latest Post

Kesehatan

Tips


Sama seperti pada Java, pembuatan kelas dalam C++ menggunakan kata kunci class. Di dalam kelas tersebut terdapat data dan method yang akan digunakan oleh obyek yang akan dibuat (instance) dari kelas tersebut. Data dan method ini biasanya disebut sebagai anggota kelas (class member). Method dalam C++ sama bentuknya dengan fungsi yang telah kita pahami di sub label sebelumnya. Perhatikan contoh berikut.

Contoh 9.26. Deklarasi dan penggunaan kelas.

#include <iostream> using namespace std;

class PersegiPanjang {
int x, y;
public:
void set_nilai (int,int);
int luas() {return (x*y);}
};

void PersegiPanjang::set_nilai (int a, int b) {
x = a;
y = b;
}

int main () {
PersegiPanjang pp1, pp2;
pp1.set_nilai (3,4);
pp2.set_nilai (7,12);
cout << "Luas pp1 : " << pp1.luas()<<endl;
cout << "Luas pp2 : " << pp2.luas()<<endl;
return 0;
}

Pada contoh di atas, kelas yang kita deklarasikan bernama PersegiPanjang dan mempunyai anggota kelas dua data yaitu: x dan y, juga dua method yaitu: set_nilai dan luas(). Dua buah method tersebut ditetapkan mempunyai akses public. Seperti halnya java, ada 3 hak akses terhadap data atau method dalam kelas, yaitu: public, private, dan protected. Public berarti anggota kelas tersebut dapat diakses dari luar kelas. Private berarti anggota kelas tersebut hanya dapat diakses di dalam kelas tersebut. Sedangkan protected berarti anggota kelas tersebut dapat diakses oleh turunan (subclass) dari kelas tersebut, tetapi tidak oleh bagian di luar kelas.

Method set_nilai mempunyai dua argument/parameter yang semuanya bertipe data int namun tidak memiliki pengembalian nilai, sehingga kita menggunakan kata kunci void. Method luas() tidak memiliki argumen, namun memiliki pengembalian nilai. Untuk method yang memiliki pengembalian nilai, maka kita menggunakan tipe data di depan nama method.

Pada C++ kita dapat mengimplementasikan method di dalam kelas atau di luar kelas, tetapi deklarasi method harus berada di dalam kelas. Umumnya kita meletakkan implementasi method di luar kelas (di luar tanda { }). Perhatikan pada contoh di atas. Deklarasi method set_nilai terletak di dalam kelas PersegiPanjang namun implementasinya berada di luar kelas. Sedangkan method luas(), baik deklarasi maupun implementasi berada di dalam kelas. Pada implementasi method di luar kelas kita menggunakan tanda :: untuk mendefinisikan anggota kelas di luar kelasnya (perhatikan pada baris void PersegiPanjang::set_nilai (int a, int b)).

Setelah kelas terbentuk, kita dapat menggunakan dengan membuat obyek yang merupakan instance dari kelas tersebut. Perhatikan pada bagian yang diawali dengan int main(). Pada bagian ini kita membentuk dua obyek dengan nama pp1 dan pp2 sebagai instance dari kelas PersegiPanjang. Kemudian, kita menggunakan obyek-obyek ini untuk memanggil method set_nilai dan luas() dari kelas PersegiPanjang. Ketikkan program di atas kemudian jalankan. Bagaimanakah hasilnya?

Seperti pada Java, umumnya suatu kelas akan mempunyai constructor yang digunakan untuk menginisialisasi variabel atau mengalokasikan memori. Constructor ini mempunyai nama yang sama dengan kelasnya. Di dalam suatu kelas, sebaiknya juga dibentuk method destructor. Destructor adalah kebalikan dari constructor. Tujuan utamanya adalah mengembalikan nilai variabel ke bentuk awal, dan membebaskan memori dari penggunaan variabel. Method destructor mempunyai nama yang sama dengan nama kelasnya, tetapi dengan ditambah awalan tanda ~. Perhatikan contoh penggunaan constructor dan destructor berikut.

Contoh 9.27. Constructor dan destructor.

#include <iostream>
using namespace std;

class PersegiPanjang {
int *panjang, *lebar;
public:
PersegiPanjang (int,int);
~PersegiPanjang ();

int luas () {return (*panjang * *lebar);}
};

PersegiPanjang::PersegiPanjang (int a, int b) {
panjang = new int;
lebar = new int;
*panjang = a;
*lebar = b;
}

PersegiPanjang::~PersegiPanjang () {
delete panjang;
delete lebar;
}

int main () {
PersegiPanjang pp1 (3,4), pp2 (5,6); cout << "Luas pp1: " << pp1.luas() << endl;
cout << "Luas pp2: " << pp2.luas() << endl;
return 0;
}

Halaman Terkait:
| Kelas | Inheritance | Polimorfisme |

Post a Comment