Wednesday, March 24, 2010

Membuat Class Berbentuk Template

Pada tulisan sebelumnya sudah dijelaskan bagaimana kita dapat membuat fungsi dalam bentuk template. Dengan konsep yang sama, kita juga dapat membuat class berbentuk template. Berikut ini adalah contoh sederhananya :

template<class T>
class KelasSaya
{
public:
T getNilaiTerkecil(T a, T b)
{
//implementasi dari getNilaiTerkecil
//silahkan lihat tulisan sebelumnya
}
void swap (T* a, T* b)
{
//implementasi fungsi swap
//silahkan lihat tulisan tentang fungsi swap
}
};

Cara memanggil kelas buatan kita diatas adalah sebagai berikut :

KelasSaya<int> objekKelasSaya;

cout<<objekKelasSaya.getNilaiTerkecil(1,4);

int a = 4;
int b = 3;
objekKelasSaya.swap(&a, &b);

Kita juga bisa menambahkan parameter tambahan pada kelas yang ditulis di dalam bentuk template. Alasan penambahan ini bisa bermacam-macam, misalnya saja kita ingin memberikan nilai pada sebuah konstanta yang terdapat didalam kelas tersebut. Berikut ini adalah contohnya: kita ingin menambahakan sebuah konstanta dengan nama NILAI_TERKECIL yang dipakai untuk memproteksi nilai terkecil yang bisa diberikan ke dalam kelas kita.

template<class T, int batasBawah>
class KelasSaya
{
public:
KelasSaya(): NILAI_TERKECIL(batasBawah)
{
//implementasi dari konstruktor
}
T getNilaiTerkecil(T a, T b)
{
//proteksi
if ( a<NILAI_TERKECIL || b<NILAI_TERKECIL)
{
cout << "KESALAHAN: Nilai untuk a & b harus lebih besar dari " <<
NILAI_TERKECIL << endl;
return 0;
}

//silahkan lihat tulisan sebelumnya
//implementasi dari getNilaiTerkecil
}
void swap (T* a, T* b)
{
//proteksi
if ( *a<NILAI_TERKECIL || *b<NILAI_TERKECIL)
{
cout << "KESALAHAN: Nilai untuk a & b harus lebih besar dari " <<
NILAI_TERKECIL << endl;
return;
}
//implementasi fungsi swap
//silahkan lihat tulisan tentang fungsi swap
}
private:
const T NILAI_TERKECIL;
};

Dari implementasi diatas dapat dilihat bahwa konstanta NILAI_TERKECIL dipakai untuk menentukan nilai terkecil dari parameter yang dikirimkan.

Perlu juga diperhatikan, teknik pemberian nilai pada konstanta. Tampak bahwa kita memberikan nilai pada konstanta disaat pemanggilan konstruktor - fungsi yang memiliki nama yang sama dengan nama kelas, dan ditulis seperti berikut:

KelasSaya(): NILAI_TERKECIL(batasBawah)

Berikut ini adalah contoh pemanggilan kelas kita:

KelasSaya<int,10> objekKelasSaya;
cout << objekKelasSaya.getNilaiTerkecil(12,1);

pada pemanggilan diatas, kita sudah membatasi nilai terkecil yang dapat diberikan kepada parameter dari semua fungsi yang berada didalam class KelasSaya, yaitu 10. Pada baris kedua, tampak bahwa kita memberikan nilai 1 ke parameter b dari fungsi getNilaiTerkecil(), dan nilai ini lebih kecil dari 10, sehingga secara otomatis pesan KESALAHAN akan ditampilkan.




1 comment:

  1. Salam kenal sob,....
    Trims artikelnya sanagt bermanfaat.

    ReplyDelete