You are here

Polimorpisme

Akhirnya sampai juga kepembahasan yang terakhir tentang konsep OOP, polimorpisme. Sebenarnya konsep terakhir ini yang paling gampang tapi karena banyak menggunakan hal yang baru yang tidak digunakan sebelumnya (misal: pointer dan fungsi virtual), jadi mau gak mau kalian harus paham tentang hal itu. Kalo pointer mungkin udah pada pernah gunainnya yach? jadi artikel tentang virtual saja yang dikasih. Klik di sini untuk baca artikel virtual.

Coba baca lagi contoh program tentang inheriten di pembahasan sebelumnya, klik di sini. Perhatikan baris ke 58 sampai 78. Yup, di sana dibuat apa yang akan dilakukan jika user memilih mobil truk dan apa yang dilakukan bila memilih mobil biasa. Berhubung cuman dua jadi gak terlalu panjang. Bagaimana jika jenis kendaraannya diperbanyak? misalnya ada truk, traktor, sedan, angkot, dll sampai 20 jenis. Tinggal buat 20 kondisi if? wow repot kalo gitu. Padahal kalo diperhatikan kodingnya gak jauh beda. Tapi dengan polimorpisme hal itu bisa dibuat mudah.

Dulu gua udah rada ngerti tentang enkapsulasi dan inheriten. Tapi tentang polimorpisme gak tahu sama sekali (bingung abis), artikel yang bahasa inggrisnya banyak tapi gak tau yang mana polimorpisme. Akhirnya karena kebingungan sambil duduk manis didepan komputer gua baca-baca buku Visual Basic .Net . Pas lagi asik-asik baca sekilas, ketemu pembahasan Overload. "Wahh..., keren juga ni cara", kata gua. Tapi gua pikir-pikir apa ini yang disebut polimorpisme? Wahh... ternyata dengan membaca itu gua jadi ngerti, makasih banget buat penulis buku itu :* . Mau tau apa gimana contoh programnya? Perhatikan:

Overloads Sub Display(ByVal theChar as Char)
  'kode yang menampilkan data bertipe char
ditulis di sini
end sub

Overloads Sub Display(ByVal theInteger as Integer)
  'kode yang menampilkan data bertipe Integer
ditulis di sini
end sub

Overloads Sub Display(ByVal theDouble as Integer)
  'kode yang menampilkan data bertipe double
ditulis di sini
end sub

Bila tidak menggunakan overload, maka harus ditulis seperti ini:

Sub DisplayChar(ByVal theChar as Char)
  'kode yang menampilkan data bertipe char 
ditulis di sini
end sub

Sub DisplayInt(ByVal theInteger as Integer)
  'kode yang menampilkan data bertipe Integer 
ditulis di sini
end sub

Sub DisplayDouble(ByVal theDouble as Integer)
  'kode yang menampilkan data bertipe double 
ditulis di sini
end sub

Bagaimana, repot bukan jika menggunakan cara kedua? Sekarang perhatikan contoh penggunaannya. Anggap saja ini ditaruh di even click

Display("9"C)  'Memanggil Display dengan data 
bertipe string

Display(9)     'Memanggil Display dengan data 
bertipe integer

Display(9.9R)  'Memanggil Display dengan data 
bertipe double

Walaupun kita gak lagi belajar vb .Net, tapi kalo ngakunya seorang programmer minimal mesti bisa baca alur program yang ditulis dalam bahasa apapun :p. Kalo gak ngerti juga dijelasin dech. Begini jadinya, dengan membuat prosedur (kalo di vb buat prosedur pake sub dan fungsi peke function) yang overload, kita bisa melakukan beberapa hal yang berbeda dengan nama yang sama. Coba dech perhatikan cara penggunaannya. Jika ditulis "Display(9)", maka secara otomatis vb .Net akan mengetahui dengan sendirinya bahwa 9 itu integer dan akan mengeksekusi prosedur Display dengan data bertipe Integer, bukan dengan data string.

Bagaimana konsepnya, ngerti kan? Sekarang baca lagi Pengenalan OOP dan lihat contoh polimorpisme yang diberikan. Kemudian bandingkan dengan contoh program di atas. Resapi dengan penuh perasaan.... (eh, maksudnya dicocok-cocokin :D). Pasti ngertikan? Sekarang kita kembali dengan contoh program Visual C++. Program ini mirip dengan contoh program inheriten yang lalu tapi gua ubah (lebih diutamakan contoh polimorpisme dibandingkan inheriten).

Contoh program polimorpisme

1:  //Program OOP
2:  #include 
3:  #include 
4:  #include 
5:
6:  //Deklarasiin Class
7:  class Kendaraan
8:    {
9:       public:
10:        virtual void Cetak()
11:          {
12:             cout > tipe;
41:     cin.ignore(80,'\n');
42:     if (tipe == 'w' || tipe == 'W')
43:       kendaraan_ptr = new BMW;
44:     else
45:       kendaraan_ptr = new Bemo;
46:     kendaraan_ptr->Cetak();
47:     system("PAUSE");
48: 	return 0; 
49:   }

Sekarang liat baris ke 35 sampai 49. Apabila kita pilih w (baris 42) maka kendaraan_ptr akan diset "new BMW" dan dia akan mengingat tipe dia yang sebenarnya. Ketika dibaris ke 46 ditulis kendaraan_ptr->Cetak();, maka dia akan melihat informasi yang dimasukkan user dan menunjuk keversi yang sebenarnya untuk dijalankan (karena yang dipilih w, maka yang dijalankan baris ke 30).

Yah, itulah konsep polimorpisme.Contoh di atas itu yang gua persentasiin loohh.... Kalo gak ngerti apa itu virtual, bisa dibaca dihalaman sebelumnya. Untuk pendalaman konsep OOP, misal tentang penurunan bertingkat, mendeklarasikan class untuk inheriten virtual, dll bisa baca di sini.

Sekarang kembali ke contoh terdahulu diinheriten, apabila jumlah jenis kendaraannya banyak maka kita bakal repot. Dengan mengubah dan menggunakan konsep polimorpisme programnya akan lebih sederhana dan cepat dieksekusi. Gua rasa kalian udah pada paham yach, jadi gua kasih sourcenya saja. Klik di sini untuk melihat contoh polimorpisme

Regards,

dj

Comments

Blog yang selalu merupakan sumber utama mendapatkan informasi yang akurat dan memberikan hasil yang berguna, Anda bisa mendapatkan informasi yang cepat dan handal yang tentunya akan membantu Anda dalam setiap bidang perhatian Anda. Saya pasca sarjana di IT dan SDM. Hari ini saya lakukan persiapan sertifikasi online yang berbeda dan saya menemukan panduan network+ certification adalah sumber yang terbaik yang membantu menyediakan bahan 100% asli. Saya juga menghabiskan waktu ekstra dalam surfing internet, mendengarkan musik dan bermain game. Setelah ujian saya ingin bergabung dengan grup Anda.