Modul Bahasa Pemrograman 1 2013/2014
INHERITANCE DAN PHLOYMORPHISME Pokok bahasan :
Konsep pewarisan dalam bahasa Java Deklarasi pewarisan dalam bahasa Java Konsep pholymorphisme dalam bahasa Java Deklarasi pholymorphisme dalam bahasa Java Inheritance (pewarisan) Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP. Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, memungkinkan untuk membuat suatu kelas dengan didasarkan pada kelas yang sudah ada sehingga mewarisi semua metode dan variabelnya. Suatu class yang mempunyai class turunan dinamakan parentclass atau base class. Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class. Karena suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent classnya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apa-apa yang ia warisi dari class parent-nya. Sehingga boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent classnya. Dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class. Biasanya kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu class yang dapat diperluas dari class lain. Semua class di dalam Java adalah merupakan subclass dari class super induk yang bernama Object. Pada saat dikompilasi, Kompiler Java akan membacanya sebagai subclass dari class Object. Contoh pada diagram pewarisan dibawah ini. Dimana class Binatang (parentclass), mamalia dan serangga sebagai anak (subclass), dst.
sebagai induk
Tabel pengaksesan :
Contoh program : class Pegawai{ int nik; protected double gaji; public Pegawai(int n, double g){ this.nik = n; this.gaji=g; } public double Hitung(){ return gaji; } } class Manajer extends Pegawai{ protected int hari; Manajer(int n, double g, int hari){ super(n,g); //mengambil nik dan gaji dari class pegawai this.hari=hari; } }
class Utama{ public static void main (String [] args){ Manajer mn = new Manajer (123, 100000, 20); double total = mn.Hitung() * mn.hari; //perhitungan gaji System.out.print("NIK = "+mn.nik); //pemanggilan NIK System.out.print("gaji = "+total); } }
Penjelasan : Pada program di atas ada 3 class, dimana class manajer sebagai induk dan class manajer sebagai anak. Pada class pegawai tidak perlu lagi mendeklarasikan variable nik dan gaji serta method hitung(), karena class manajer extends ke class pegawai. Prose instansiasi cukup dilakukan pada class manajer, karena otomatis class pegawai bisa dipanggil dengan menggunakan obyek dari class manajer. Latihan : -
Kembangkan program diatas menjadi program yang dinamis (ada inputan dari user).
-
Buatlah contoh program lain dengan menggunakan konsep pewarisan
Polymorphisme (Ragam Bentuk) Polimorphisme bisa diartikan satu bentuk banyak aksi, sekilas mirip dengan inheritance tetapi dalam polimorfisme kita data memerintah sebuah objek untuk melakukan tindakan yang secara prinsip sama tapi secara proses dan outputnya berbeda. polymorphism membuat objek-objek yang berasal dari subclass yang berbeda, diperlakukan sebagai objek-objek dari satu superclass. Hal ini terjadi ketika memilih method yang sesuai untuk diimplementasikan ke objek tertentu berdasarkan pada subclass yang memiliki method bersangkutan. Kendaraan bahanBakar()
Mobil bahanBakar()
baha Kereta Api bahanBakar()
Pesawat bahanBakar()
Pada hirarki di atas menjelaskan pada class kendaraan mempunyai method bahanBakar(), dan ketiga class anaknya juga mempunyai method bahanBakar(), tetapi dalam hal ini isi bahanBakarnya berbeda. Sehingga dengan pemanggilan method yang sama tapi isinya bisa berbeda. Contoh program : class kendaraan { public void bahanbakar() { System.out.println("kendaraan berbahanbakar :"); } } // Membuat kelas turunan mobil dari class kendaraan class mobil extends kendaraan { public void bahanbakar() { System.out.println(" MOBIL bahan bakar bensin"); } } //Membuat kelas turunan kereta api dari class kendaraan class keretaapi extends kendaraan { public void bahanbakar() { System.out.println("KERETA API bahan bakar batu bara"); } } //Membuat kelas turunan pesawat dari class kendaraan class pesawat extends kendaraan { public void bahanbakar() { System.out.println("PESAWAT berbahan bakar Bensol"); } } public class Utama { public static void main(String[] args) { kendaraan kendaraan = new kendaraan(); mobil MOBIL = new mobil(); keretaapi KERETAAPI = new keretaapi(); pesawat PESAWAT = new pesawat(); kendaraan.bahanbakar(); kendaraan = MOBIL; kendaraan.bahanbakar(); kendaraan = KERETAAPI; kendaraan.bahanbakar(); kendaraan = PESAWAT; kendaraan.bahanbakar(); } }
Latihan : -
Pejalari program diatas, tambahkan 1 method misal kecepatan() pada setiap class. Kemudian deklarasikan di kelas utama.
-
Mobil
: 120 km/jam
Kereta Api
: 150 km/jam
Pesawat
: 300 km/jam
Pada kasus sebuah bangun datar, cobalah buatkan program menghitung sebuah luas pada sebuah bangun datar. Misal : parentclass
: Bangun datar
subclass
: Persegi Panjang, Segitiga
tambahkan method mencari luas dari bangun datar di atas dengan menggunakan konsep polymorphisme
~ Selamat Menikmati ~ Happy Coding