Tuesday, July 26, 2011

Konsep Class dalam OOP dan Implementasinya dalam C++

Class adalah tipe data baru seperti halnya struct yang merupakan representasi sebuah objek yang nantinya sangat berguna dalam OOP (Object Oriented Programming). Seperti halnya object, class juga memiliki properties(bagian – bagian) dan method(metode yang digunakan untuk mengubah properties tertentu). Namun representasinya dalam class properties-nya sendiri dibuat bertipe data primitif(char, int, float, double, bool, maupun enum), sedangkan methodnya berupa fungsi yang digunakan untuk merubah properties object itu sendiri. Class hampir sama dengan struct, bedanya jika stuct semua elemennya bisa diakses langsung dari fungsi main(), class tidak, karena tipe pengaksesan elemen class atau yang sering disebut access modifier ada beberapa macam, antara lain public, private dan protected. Dalam class elemen yang dapat diakses langsung dari fungsi main() adalah elemen public. Sedangkan protected hanya bisa diakses dari derivate(turunan class) yaitu class yang lebih spesific dari class utama yang memiliki ciri khas tertentu namun masih memiliki beberapa sifat yang ada pada class utama.  Misalnya class utama merepresentasikan object kue, class derivate-nya mungkin merepresentasikan object donat, bolu atau jenis kue yang lainnya.
Dalam class, ada 2 bagian yang harus selalu ada
  1. Constructor
  2. Constructor berfungsi membuat objek. Melalui constructor properties object diset dengan nilai tertentu. Jika properties berupa array atau pointer atau reference, melalui constructor, properties tersebut diberi alokasi memory sesuai yang dibutuhkan. Nama constructor selalu sama dengan nama class.
  3. Destructor
  4. Destructor berfungsi menghilangkan(destroy) objek. Jika properties berupa array atau pointer atau reference, melalui constructor, alokasi memory properties tersebut dihapus/dibebaskan. Nama destructor selalu sama dengan nama class namun diawali tanda ?~? Berikut ini contoh pendeklarasian struct yang merepresentasikan object manusia. typedef struct orang { string nama; // properti orang int umur, tinggi, berat; // properti orang }; Keterangan : Setelah didefinisikan, struct orang bisa dianggap seperti tipe data baru, jadi bisa digunakan untuk mendeklarasikan suatu variabel seperti halnya int atau char.
Jika properti object ingin diubah di fungsi main(), maka bisa langsung diubah dengan pengaksesan biasa. Misalnya ingin memberi tinggi badan 180 cm.
main()
{
// mendeklarasikan variabel tinggiObj dengan tipe integer
int tinggiObj = 180;
// mendeklarasikan variabe man dengan tipe orang
orang man;
/* mengubah nilai elemen tinggi pada struct orang melalui variabel man yang telah dideklarasikan sebelumnya */
man.tinggi = tinggiObj;
}
Sedikit berbeda dengan struct, class dideklarasikan dengan acces modifier tertentu. Agar terlihat perbedaannya, kita ambil contoh yang sama yaitu, merepresentasikan objek yang sama yaitu manusia dan properti yang diubah adalah tinggi badannya.
class orang
{
private : // elemen class private berupa properties object
string nama;
int umur, berat, tinggi;
public : /* elemen class public berupa method untuk mengubah proprties */
orang() // fungsi constructor tanpa parameter
{
nama = sanctuary;
tinggi = 160;
berat = 50;
umur = 17;
};
orang(int setTinggi) /* fungsi constructor dengan parameter untuk mengubah nilai */
{
tinggi = setTinggi;
}
// bisa ditambah fungsi – fungsi tambahan
~orang() // fungsi destructor
{};
};
Dalam class tersebut, properties sudah diset dengan nilai tertentu. Untuk mengubah nilai tinggi tidak bisa secara langsung, dibutuhkan fungsi, constructor misalnya.
main()
{
int tinggiObj = 180;
orang man;
man = orang(tinggiObj); // mengubah nilai tinggi object
}

0 comments:

Post a Comment

 
Copyright (c) 2010 printf("hello world"); and Powered by Blogger.