You are on page 1of 11

BAB IX IMPLEMENTASI ENKAPSULASI, PEWARISAN, DAN POLIMORFISME

PENDAHULUAN Java merupakan salah satu bahasa pemrograman berorientasi objek, yang menerapkan konsep enkapsulasi, pewarisan dan polymorphism. Dalam

implementasinya, konsep-konsep ini akan saling berkolaborasi membentuk suatu class. Pada bab ini akan dibahas tentang penggunaan konsep enkapsulasi, pewarisan, dan polymorphism di dalam program.

KEGIATAN BELAJAR 11 ENKAPSULASI, PEWARISAN, DAN POLYMORPHISM


Hasil Pembelajaran Setelah menyelesaikan bahasan ini dan mengerjakan soal-soal latihan yang ada, Anda dapat : 1. Memahami konsep dasar pemrograman berorientasi objek 2. Menjelaskan konsep enkapsulasi objek 3. Menjelaskan konsep pewarisan objek 4. Menjelaskan konsep polymorphism objek

Kriteria Penilaian Keberhasilan Anda dalam menguasai bab ini diukur berdasarkan kriteria kemampuan sebagai berikut : 1. Menjelaskan polymorphism 2. Dapat menerapkan konsep enkapsulasi pada class 3. Dapat menerapkan konsep pewarisan pada class 4. Dapat menerapkan konsep polymorphism dalam program Java perbedaan antara konsep enkapsulasi, pewarisan, dan

91

BAB VIII PEMROGRAMAN BERORIENTASI OBJEK

92

Sumber Pustaka 1. Abdul Kadir, 2005, Dasar Pemrograman Java 2, Andi, Yogyakarta. 2. Herbert Schildt, 2005, Java : A Beginners Guide, Third Edition, McGrawHill/Osborne, United States of America. 3. Herbert Schildt, Patrick Naughton , 1999, Java 2 : The Complete Reference, Fourth Edition, McGraw-Hill/Osborne, United States of America. 4. Indrajani, S.Kom., MM., Martin, S.Kom., 2007, Pemrograman Berorientasi Objek dengan Bahasa Java, PT. Elex Media Komputindo, Jakarta.

8.1.

Enkapsulasi
Seperti yang telah dipaparkan pada bab sebelumnya, bahwa enkapsulasi

berfungsi untuk menyembunyikan data yang dimiliki oleh suatu class atau objek dari akses atau interfensi yang berasal dari class atau objek lain. Oleh karena itu, enkapsulasi sangat erat kaitannya dengan akses kontrol, yang mana dapat menetapkan hak akses terhadap class atau objek. Contoh penggunaan enkapsulasi pada program dapat dilihat pada contoh program untuk pewarisan.

8.2.

Pewarisan
Pewarisan adalah salah satu inti dari pemrograman berorientasi objek,

karena pewarisan mengizinkan penciptaan class-class yang dapat diklasifikasikan dalam bentuk hirarki. Dengan menggunakan pewarisan, kita dapat menciptakan general class yang memiliki sifat atau karakteristik yang lebih umum daripada class-class lainnya. Class ini dapat diturunkan lagi menjadi class yang lebih spesifik, sehingga membentuk suatu hirarki class. Pewarisan mengenalkan istilah superclass dan subclass. Superclass merupakan class yang memiliki sifat atau karakteristik yang lebih umum, sedangkan subclass merupakan class yang memiliki sifat yang berasal dari superclass dan ditambah dengan sifat atau karakteristik yang lebih spesifik. Jadi, superclass adalah class yang digunakan untuk menghasilkan class lainnya, yaitu subclass. Dalam implementasinya, pewarisan dilakukan dengan menggunakan

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)

BAB VIII PEMROGRAMAN BERORIENTASI OBJEK

93

keyword extends. Berikut ini adalah sintaks yang digunakan untuk melakukan pewarian :
class subclass extends superclass { //deklarasi-deklarasi variabel //deklarasi-deklarasi method }

Dari sintaks di atas, class superclass akan diturunkan menjadi class baru, yaitu subclass. Berikut ini adalah ilustrasi pewarisan dari superclass menjadi subclass :

Gambar 8.1 Ilustrasi Pewarisan dari class Manusia (Superclass) ke class Pegawai (Subclass)

Berdasarkan gambar 8.1 di atas, class Manusia merupakan superclass yang akan diturunkan menjadi class baru, yaitu Pegawai. Pewarisan ini akan mewariskan semua atribut dan method (operations) dengan akses kontrol selain private ke class turunannya, yaitu class Pegawai. Berikut ini adalah contoh sederhana konsep enkapsulasi dan pewarisan di dalam program :

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)

BAB VIII PEMROGRAMAN BERORIENTASI OBJEK

94

Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
class Manusia { protected String nama; protected String jenisKelamin; public Manusia(String nama, String jenisKelamin) { this.nama = nama; this.jenisKelamin = jenisKelamin; } public String getNama() { return nama; } public String getJenisKelamin() { return jenisKelamin; } }; class Pegawai extends Manusia { private String noPegawai; public Pegawai(String nama, String jenisKelamin, String noPegawai) { super(nama,jenisKelamin); this.noPegawai = noPegawai; } public String getNoPegawai() { return noPegawai; } }; class Pewarisan { public static void main(String args[]) { Pegawai peg = new Pegawai("Hengki","Pria","12345"); System.out.println("Data Pegawai"); System.out.println("No Pegawai : "+ peg.getNoPegawai()); System.out.println("Nama Pegawai : "+peg.getNama()); System.out.println("Jenis Kelamin : "+ peg.getJenisKelamin()); } }

Penjelasan program : Berdasarkan contoh kode program di atas, dapat dilihat bahwa class
Manusia dan Pegawai menerapkan konsep enkapsulasi, yang mana kedua class

tersebut memiliki atribut yang tidak dapat di akses secara langsung, yaitu nama,
jenisKelamin, dan noPegawai. Atribut-atribut ini dapat diakses melalui method,

yaitu getNama() dan getJenisKelamin(), dan getNoPegawai(). Selain itu, class Pegawai menerapkan konsep pewarisan, dimana class Manusia merupakan

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)

BAB VIII PEMROGRAMAN BERORIENTASI OBJEK

95

superclass, sedangkan class Pegawai merupakan subclass dari class Manusia. Sehingga class Pegawai dapat menggunakan atau memanggil method getNama() dan getJenisKelamin(). Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama Pewarisan.java pada direktori C:\PBO\.

Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan program seperti pada gamba berikut ini :

Gambar 8.2 Kompilasi dan Menjalankan Program Pewarisan.java

8.2.1. Class Abstrak Pada kasus tertentu, kita ingin membuat suatu class yang mana tidak semua method yang dideklarasikan di dalamnya memiliki implementasi. Class ini merupakan superclass yang dibuat sebagai dasar untuk membuat subclass. Implementasi dari method yang tidak dibuat di dalam superclass-nya tersebut harus diimplementasikan oleh masing-masing subclass-nya sesuai dengan fungsinya masing-masing. Dengan demikian, superclass tersebut dapat

memastikan bahwa subclass-nya pasti akan memiliki method yang telah ditentukan sebelumnya. Class seperti ini disebut dengan class abstrak. Berikut ini adalah beberapa ketentuan yang perlu diperhatikan berkaitan dengan class abstrak :

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)

BAB VIII PEMROGRAMAN BERORIENTASI OBJEK

96

1. Method yang tidak memiliki implementasi pada suatu class harus dideklarasikan sebagai abstrak menggunakan keyword abstract. 2. Kita tidak dapat membuat instance dari class abstrak. Umumnya agar dapat digunakan, class abstrak tersebut harus diturunkan terlebih dahulu, yang mana class hasil turunannya tersebut harus meng-override semua method abstrak dari superclass-nya dan membuat implementasinya. Setelah itu, class turunan inilah yang digunakan untuk membuat instance. 3. Jika terdapat satu saja method abstrak yang tidak diimplementasikan oleh subclass-nya, maka subclass tersebut juga harus dideklarasikan sebagai abstrak dengan keyword abstract.

Berdasarkan apa yang telah dipaparkan di atas, berikut ini adalah contoh penggunaannya di dalam program :

Langkah 1 : Jalankan Notepad Ketiklah kode program berikut ini pada text editor notepad :
abstract class A { //method abstrak yang tidak memiliki implementasi abstract void callme(); //concrete method tetap diijinkan di dalam class abstrak void callmetoo() { System.out.println("Ini adalah concrete method"); } } class B extends A { //method yang harus diimplementasikan void callme() { System.out.println("Implementasi dari method abstrak"); } } class Abstrak { public static void main(String args[]) { B b = new B(); b.callme(); b.callmetoo(); } }

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)

BAB VIII PEMROGRAMAN BERORIENTASI OBJEK

97

Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama Abstrak.java pada direktori C:\PBO\.

Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan program di atas seperti pada gambar berikut ini :

Gambar 8.3 Kompilasi dan Menjalankan Program Abstrak.java

8.3.

Polymorphism
Konsep polymorphism merupakan konsep yang implementasinya pada

method dari suatu class. Berikut ini penerepan konsep polymorphism dengan menggunakan class abstrak, pewarisan, dan overriding method :

Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
abstract class Bentuk { protected int panjang; protected int lebar; public abstract int hitungLuas(); public String getBentuk() { return "Bentuk Dasar"; } public int getPanjang() { return panjang; } public int getLebar() { return lebar; } }

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)

BAB VIII PEMROGRAMAN BERORIENTASI OBJEK

98

class BujurSangkar extends Bentuk { public BujurSangkar(int panjang, int lebar) { this.panjang = panjang; this.lebar = lebar; } public String getBentuk() { return "Bentuk Bujur Sangkar"; } public int hitungLuas() { return panjang*lebar; } } class SegiTiga extends Bentuk { public SegiTiga(int panjang, int lebar) { this.panjang = panjang; this.lebar = lebar; } public String getBentuk() { return "Bentuk Segi Tiga"; } public int hitungLuas() { return panjang*lebar/2; } } class Polymorphism { public static void cetakLuasBentuk(Bentuk btk) { System.out.println(btk.getBentuk()); System.out.println("Panjang = "+btk.getPanjang()); System.out.println("Lebar = "+btk.getLebar()); System.out.println("Luasnya = "+btk.hitungLuas()); } public static void main(String args[]) { BujurSangkar bs = new BujurSangkar(5,10); SegiTiga st = new SegiTiga(10,20); cetakLuasBentuk(bs); cetakLuasBentuk(st); } }

Penjelasan program : Berdasarkan kode program di atas, terdapat satu buah class abstrak, yaitu class Bentuk yang memiliki method abstrak hitungLuas(). Class abstrak ini kemudian diturunkan menjadi class BujurSangkar dan SegiTiga. Oleh karena method hitungLuas() didefinisikan sebagai abstract, maka class turunannya wajib mengimplementasikan method ini, walaupun implementasinya berbedabeda. Selain itu, terdapat method getBentuk() yang di-override oleh class

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)

BAB VIII PEMROGRAMAN BERORIENTASI OBJEK

99

turunannya, yaitu class BujurSangkar dan SegiTiga. Kedua method inilah merupakan penerapan dari konsep polymorphism.

Langkah 2 : Simpan Program Java Simpanlan kode program di atas dengan nama Polymorphism.java pada direktori C:\PBO\.

Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan program di atas seperti pada gambar berikut ini :

Gambar 8.4 Melakukan Kompilasi dan Menjalankan Program Polymorphism.java

Berdasarkan gambar 8.4 di atas, dapat dilihat bahwa pemanggilan method yang sama tetapi menghasilkan nilai yang berbeda. Inilah merupakan contoh penerapan konsep polymorphism.

Rangkuman
1. Java merupakan salah satu bahasa pemorgraman yang menerapkan konsep pemrograman polymorphism. 2. Enkapsulasi adalah suatu mekanisme untuk menyembunyikan data yang dimiliki oleh suatu class atau objek dari akses atau interfensi yang berasal dari class atau objek lain. berorientasi objek, yaitu enkapsulasi, pewarisan, dan

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)

BAB VIII PEMROGRAMAN BERORIENTASI OBJEK

100

3. Pewarisan adalah suatu mekanisme yang mana mengizinkan penciptaan classclass yang dapat diklasifikasikan dalam bentuk hirarki. Dengan menggunakan pewarisan, kita dapat menciptakan general class yang memiliki sifat atau karakteristik yang lebih umum daripada class-class lainnya. Class ini dapat diturunkan lagi menjadi class yang lebih spesifik, sehingga membentuk suatu hirarki class. 4. Polymorphism merupakan suatu mekanisme yang mengizinkan suatu class dapat memiliki method yang sama tetapi melakukan aksi yang berbeda.

Soal-soal Latihan
1. Keuntungan apa yang dapat diperoleh dengan menggunakan pewarisan dan kapan seorang programmer perlu untuk melakukannya? 2. Apa yang terjadi jika kita mendeklarasikan variabel pada subclass yang sama persis dengan yang dimiliki oleh superclass-nya? Bagaimana pula cara subclass agar dapat mengakses variabel dari superclass tersebut? 3. Buatlah sebuah class turunan bernama TelevisiModern dari class Televisi yang telah dibuat pada soal-soal latihan di Bab 6. Tambahkan fasilitas teletext dan cd player built in yang dapat digunakan untuk memutar VCD. Class tersebut harus dapat digunakan oleh contoh program berikut ini :
public class User { public static void main (String args[]) { TelevisiModern tv = new TelevisiModern(TV Modern, 29 inches,100); String[] semuaChannel = {RCTI,SCTV,INDOSIAR,LA TV, METRO TV,TRANS TV,TPI,TV 7,TVRI,ANTEVE}; String[] channelFavorit = {RCTI,SCTV,INDOSIAR}; System.out.println(Televisi yang baru saya beli : + tv.getDeskripsi()); tv.getChannels(); tv.setChannels(semuaChannel); tv.setChannelAktif(3); tv.setVolume(10); tv.setChannelAktif(9); tv.setChannelAktif(1); tv.setModusTampilan(TelevisiModern.TELETEXT); tv.setHalamanTeletext(250); tv.setModusTampilan(TelevisiModern.TV); tv.playCD(); tv.setDiscTray(The Matrix);

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)

BAB VIII PEMROGRAMAN BERORIENTASI OBJEK

101

tv.playCD(); } }

Dengan output hasil eksekusi sebagai berikut :


Televisi yang baru saya beli : TV Modern, 29 inches Belum ada channel yang diset! Informasi channel berhasil diupdate! Pindah channel ke : LA TV Intensitas volume sekarang : 10 Pindah channel ke : ANTEVE Pindah channel ke : SCTV Modus tampilan : Teletext Berpindah ke halaman teletext 250 Modus tampilan : Televisi Tidak ada CD di dalam disc tray! Memutar film The Matrix

Suheri, ST Pemrograman 3 (Pemrograman Berorientasi Objek)

You might also like