bab 9 - kegiatan belajar 11 - implementasi enkapsulasi, pewarisan, dan pomlimofirme

11

Click here to load reader

Upload: nicole-robinson

Post on 08-Aug-2015

712 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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

Page 2: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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)

Page 3: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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)

Page 4: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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)

Page 5: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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)

Page 6: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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)

Page 7: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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)

Page 8: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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)

Page 9: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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)

Page 10: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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)

Page 11: BAB 9 - Kegiatan Belajar 11 - Implementasi Enkapsulasi, Pewarisan, Dan Pomlimofirme

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