bab 9 - kegiatan belajar 11 - implementasi enkapsulasi, pewarisan, dan pomlimofirme
TRANSCRIPT
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 perbedaan antara konsep enkapsulasi, pewarisan, dan
polymorphism
2. Dapat menerapkan konsep enkapsulasi pada class
3. Dapat menerapkan konsep pewarisan pada class
4. Dapat menerapkan konsep polymorphism dalam program Java
91
92 BAB VIII PEMROGRAMAN BERORIENTASI OBJEK
Sumber Pustaka
1. Abdul Kadir, 2005, Dasar Pemrograman Java™ 2, Andi, Yogyakarta.
2. Herbert Schildt, 2005, Java™ : A Beginner’s Guide, Third Edition, McGraw-
Hill/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)
93 BAB VIII PEMROGRAMAN BERORIENTASI OBJEK
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)
94 BAB VIII PEMROGRAMAN BERORIENTASI OBJEK
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)
95 BAB VIII PEMROGRAMAN BERORIENTASI OBJEK
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)
96 BAB VIII PEMROGRAMAN BERORIENTASI OBJEK
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)
97 BAB VIII PEMROGRAMAN BERORIENTASI OBJEK
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)
98 BAB VIII PEMROGRAMAN BERORIENTASI OBJEK
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 berbeda-
beda. Selain itu, terdapat method getBentuk() yang di-override oleh class
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
99 BAB VIII PEMROGRAMAN BERORIENTASI OBJEK
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 berorientasi objek, yaitu enkapsulasi, pewarisan, dan
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.
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
100 BAB VIII PEMROGRAMAN BERORIENTASI OBJEK
3. Pewarisan adalah suatu mekanisme yang mana 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.
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)
101 BAB VIII PEMROGRAMAN BERORIENTASI OBJEK
Suheri, ST – Pemrograman 3 (Pemrograman Berorientasi Objek)
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