0
Posted by Yoshua_Brilliant
on
00.33
Konsep dasar OOP (Object
Oriented Programming) pada pemrograman Java terdiri dari 3 bagian yaitu:
1.
Enkapsulasi/pengkapsulan (encapsulation)
2. Pewarisan (Inheritance)
3. Polimorfisme (polimorphism)
Tetapi yang saya akan
bahas adalah Polimorfisme, berikut postingan saya mengenai Polimorfisme :
Polymorphism merupakan salah satu konsep penting dalam object
oriented programming (OOP) khusunya di bahasa Java setelah abstraction dan
inheritance. Polymorphism berarti banyak bentuk. Ada beberapa definisi berbeda
tentang polymorphism yang berkaitan dengan pemrograman berorientasi obyek.
Sedangkan apa yang dimaksud dengan polymorphism sendiri, sebenarnya sulit untuk
didefinisikan. Sejalan dengan contoh yang diberikan, Anda diharapkan dapat
mengerti dan memahami konsep polymorphism itu sendiri.
Polymorphism sering dikaitkan dengan
penggunaan lebih dari satu metoda dengan nama sama. Penggunaan metoda dengan
nama sama dapat diterapkan dengan method overloading dan method overriding.
Peran polymorphism sebenarnya tidak terbatas hanya pada hal tersebut. Ada
keterkaitan antara polymorphism dan inheritance (turunan).
Dalam konsep turunan, saat obyek dari
subclass dikonstruksi, obyek dari superclass juga ikut dikonstruksi. Jadi
setiap instance dari subclass adalah juga instance dari superclass. Apabila
Anda mendeklarasikan metoda dengan parameter dari tipe superclass, Anda
diperbolehkan untuk memberi argumen berupa obyek subclass yang merupakan
turunan dari superclass tersebut.
Berikut ini adalah contoh program yang
dapat memberikan gambaran berkaitan dengan konsep polymorphism. Perlu dipahami
dan dimengerti bahwa kelas Object merupakan akar dari semua kelas Java dan
menduduki puncak tertinggi dalam hirarkhi. Program akan mendefinisikan kelas
yang berkaitan dengan bidang datar secara sederhana termasuk beberapa kelas
turunannya (kelas PersegiPanjang dan Balok) dan membatasi hanya pada penerapan
method overriding.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
// Nama file : Polimorphism.java
// Contoh penerapan konsep polimorphism
public class Polimorphism {
public static void main(String[ ] args) {
cetakObjek(new Balok());
cetakObjek(new PersegiPanjang());
cetakObjek(new BangunDatar());
cetakObjek(new Object());
}
public static void cetakObjek(Object objek) {
System.out.println(objek);
}
} // Akhir kelas Polimorphism
class Balok extends PersegiPanjang {
public String toString() {
return "Mempunyai sisi panjang, lebar dan
tinggi";
}
}
class PersegiPanjang
extends BangunDatar
{
public String toString() {
return "Mempunyai sisi panjang dan lebar";
}
}
class BangunDatar
extends Object {
public String toString() {
return "Mempunyai berbagai bentuk";
}
}
|
Baris nomor 14 -16 adalah deklarasi
metoda cetakObjek yang mempunyai satu parameter dengan tipe kelas Object. Kelas
Object merupakan akar dari semua kelas di Java. Langsung maupun tidak langsung,
semua kelas di Java merupakan turunan dari kelas Object. Anda dapat memanggil
atau menggunakan metoda cetakObjek dengan argumen berupa obyek yang dibuat dari
kelas turunan superclass Object.
Ketika metoda cetakObjek dipanggil
(baris nomor 8 – 11), argumen obyek akan diminta. obyek sebagai argumen metoda
dapat berupa obyek yang merupakan kelas turunan dari kelas Object yaitu kelas
BangunDatar, kelas PersegiPanjang maupun kelas Balok. Masing-masing kelas turunan
mendeklarasikan ulang metoda toString yang mempunyai implementasi berbeda. Java
Virtual Machine (JVM) akan menentukan secara dinamis implementasi metode
toString yang akan digunakan saat program dijalankan. Kemampuan menentukan
secara dinamis ini disebut dengan dynamic binding.
Dari gambaran program di atas, apabila
parameter sebuah metoda adalah tipe superclass, maka argumen metoda yang
diberikan dapat berupa tipe dari subclassnya. Kemampuan seperti inilah yang
dimaksud dengan polymorphism. Dari gambaran tersebut, dapat didefinisikan
kembali bahwa polymorphism adalah kemampuan untuk menghasilkan sesuatu yang
berbeda dengan cara yang sama. Pemberian obyek dari subclass ke obyek dari
superclass dapat dilakukan tanpa perlu melakukan konversi.
Semoga postingan saya kali ini bisa bermanfaat bagi teman-teman
sekalian yang membutuhkan. Terimakasih sudah mau mengunjungi Blog saya. GBU all.
Posting Komentar