Penerapan I nheritance

8.8.2. Penerapan I nheritance

Prinsip inheritance atau pewarisan, secara umum telah kalian pelajari di awal bab. Pewarisan adalah keuntungan besar dalam pemrograman beorientasi obyek karena suatu sifat atau method yang telah didefinisikan dalam superclass, secara otomatis diwariskan dari pada semua subclasses. Jadi kita mungkin hanya perlu mendefinisikan method satu kali di superclass kemudian dapat kita gunakan pada subclass. Perhatikan contoh berikut.

Contoh 8.28. Penerapan inheritance.

Rekayasa Perangkat Lunak 201 Rekayasa Perangkat Lunak 201

public void setSuperA(int nilai) {

a = nilai; } public int getSuperA() {

return a; } }

// membuat kelas turunan (subclass) dari kelas A class SubB extends SuperA {

private int b;

public void setSubB(int nilai) {

b = nilai; } public int getSubB() {

return b; } }

class DemoKelasTurunan1 { public static void main(String[] args) {

// melakukan instansiasi terhadap kelas B SubB ObyekB = new SubB();

// mengeset nilai objek dari kelas B ObyekB.setSuperA(50); ObyekB.setSubB(200);

// mendapatkan nilai yang terdapat dalam objek dari kelas B

System.out.println("Nilai a : " + Obyek.getSuperA()); System.out.println("Nilai b : " + Obyek.getSubB());

Pada kode di atas, class SuperA adalah super class yang memiliki satu data yaitu a dan dan dua method yaitu setSuperA dan getSuperA. Class SubB

adalah turunan dari kelas SuperA (perhatikan deklarasi class SubB extends

SuperA). Data dan method yang ada pada class SuperA secara otomatis akan dibawa ke class SubB. Sehingga class SubB akan mempunyai dua data yaitu a dan b. Data a adalah hasil warisan dari class SuperA sedang data b adalah milik class SubB sendiri. Method pada class SubB akan terdiri dari empat method, yaitu setSuperA dan getSuperA yang merupakan warisan dari class SuperA serta class setSubB dan getSubB yang milik class SubB sendiri. Cobalah ketik program di atas kemudian jalankan dan cermati hasil yang diperoleh.

202 Rekayasa Perangkat Lunak

Perhatikan contoh yang lain berikut ini. Contoh 8.29. Penerapan inheritance untuk menghitung luas dan volume.

class Bangun { protected double panjang; protected double lebar;

// constructor default Bangun() {

panjang = lebar = 0; }

Bangun(double p, double l) { panjang = p; lebar = l;

// method yang mengembalikan nilai public double hitungLuas() {

double luas = panjang * lebar; return luas;

class Box extends Bangun { private double tinggi;

// constructor class Box Box (int p, int l, int t) {

panjang = p; lebar = l; tinggi = t;

public double getTinggi() { return tinggi; }

public double hitungVolume() { double volume = panjang * lebar * tinggi; return volume; } }

class inheritBangun { public static void main(String[] args) { Box kotak;

// instansiasi obyek kotak = new Box(6, 8, 3);

Rekayasa Perangkat Lunak 203

// memanggil method hitungLuas(), getTinggi() dan hitung volume() System.out.println("Luas salah satu sisi = " + kotak.hitungLuas()); System.out.println("Tinggi kotak = " + kotak.getTinggi()); System.out.println("Volume kotak = " + kotak.hitungVolume()); } }

Kelas Bangun di atas adalah superclass sedangkan Box adalah subclass. Pada default constructor Bangun, nilai panjang dan lebar diinisialisasi dengan nilai 0. Perhatikan didepan deklarasi variabel panjang dan lebar pada kelas Bangun dicantumkan kata kunci protected yang berarti kelas turunan dari Bangun tetap dapat mengakses nilai dari variabel tersebut namun yang tidak memiliki hubungan turunan tidak dapat mengaksesnya.

Pada Box yang merupakan subclass ditambahkan satu variabel yaitu tinggi dengan tambahan kata kunci private diikuti tipe datanya. Private menunjukkan bahwa variabel tinggi hanya bisa diakses didalam kelas Box. Lawan dari private adalah public, yang berarti dapat diakses oleh siapapun dan dari manapun. Pada kelas Box juga kita tambahkan satu method yaitu hitungVolume(). Pada contoh

8.29 di atas obyek yang kita buat yaitu kotak, merupakan hasil instansiasi dari kelas Box. Oleh karena kelas Box adalah turunan dari kelas Bangun, maka kita dapat mengakses method hitungLuas() yang merupakan warisan dari kelas Bangun. Tentu saja kita bisa mengakses method getTinggi() dan hitungVolume() yang merupakan method pada kelas Box. Kalau kita eksekusi program di atas, maka akan tampak seperti berikut.

Gambar 8.15. Hasil eksekusi program kelas Bangun dan Box.

Dokumen yang terkait

ANALISIS KESESUAIAN ANTARA RENCANA PEMBANGUNAN JANGKA MENENGAH DAERAH 2010-2015 DENGAN ALOKASI DANA, PROGRAM, DAN CAPAAN PROGRAM SATUANKERJA PERANGKAT DAERAH (Studi pada Kabupaten Jember)

1 28 68

ANALISIS KINERJA SIMPANG MENGGUNAKAN PERANGKAT LUNAK KAJI DAN PTV VISTRO (STUDI KASUS : SIMPANG BERSINYAL DAN TAK BERSINYAL PERKOTAAN JEMBER)

5 45 18

ANALISIS PENGARUH PERSEPSI PENERAPAN TRANSPARANSI DAN AKUNTABILITAS PUBLIK TERHADAP KINERJA SATUAN KERJA PERANGKAT DAERAH (Studi Empiris Pada Pemerintah Daerah Kabupaten Bondowoso)

1 31 18

ANALISIS PENGARUH PERSEPSI TRANSPARANSI DAN AKUNTABILITAS TERHADAP KINERJA LAYANAN PUBLIK SATUAN KERJA PERANGKAT DAERAH KABUPATEN BANYUWANGI

1 32 18

ANALISIS PENGARUH PERSEPSI TRANSPARANSI DAN AKUNTABILITAS TERHADAP KINERJA LAYANAN PUBLIK SATUAN KERJA PERANGKAT DAERAH KABUPATEN BANYUWANGI

19 247 18

PERANGKAT PEMBELAJARAN RENCANA PELAKSANAAN RENCANA PELAKSANAAN PEMBELAJARAN PEMBELAJARAN5

0 39 600

PERANGKAT PEMBELAJARAN RENCANA PELAKSANAAN RENCANA PELAKSANAAN PEMBELAJARAN PEMBELAJARAN 4

0 30 284

PENGUJIAN PERANGKAT LUNAK PADA SISTEM INFORMASI RAPOR ONLINE MENGGUNAKAN METODE BLACKBOX TESTING DENGAN TEKNIK EQUIVALENCE CLASS PARTITIONING

3 38 23

PENGEMBANGAN APLIKASI CLIENT E-LEARNING UNTUK LEARNING MANAGEMENT SYSTEM (LMS) CLAROLINE PADA PERANGKAT MOBILE ANDROID

2 27 29

HUBUNGAN KEPEMIMPINAN KEPALA DESA DENGAN EFEKTIVITAS KERJA PERANGKAT DESA (Studi Pada Pemerintah Desa Talang Bojong Kecamatan Kotabumi Kota Kabupaten Lampung Utara)

0 25 90