Anda di halaman 1dari 8

MODUL III

Konsep OOP (Inheritance dan Polimorfisme)

1. Tujuan Praktikum
Agar praktikan dapat memahami dan mengimplementasikan konsep inheritance serta
konsep polimorfisme
2. Alat dan Bahan
 Command Prompt
 Java Development Kit
 Teks Editor (Sublime Text, Atom, dll)
3. Teori Dasar
3.1. Inheritance
Secara umum, dengan hanya menggunakan satu class untuk membuat dua atau lebih
entitas yang serupa tetapi berbeda, bukanlah merupakan desain yang baik. Dalam
pemrograman berorientasi objek, digunakan mekasisme yang disebut dengan inheritance
untuk merancang dua atau lebih entitas yang berbeda tetapi berbagi banyak fitur umum.
Inheritance atau pewarisan/penurunan adalah konsep pemrograman di mana sebuah class
dapat „menurunkan‟ atribut dan method yang dimilikinya kepada class lain. Konsep ini
digunakan untuk memanfaatkan fitur „code reuse‟ untuk menghindari duplikasi kode program.
Pertama, kita mendefinisikan class yang berisi fitur-fitur umum entitas. Kemudian,
definisikan suatu class sebagai perpanjangan atau turunan dari class umum yang akan
mewarisi segalanya dari class umum. Class umum ini disebut dengan superclass, ancestor,
parent class, ataupun base class. Untuk semua class turunan dari superclass disebut dengan
subclass, descendant, child class, ataupun derived class.
Dengan inheritance, class baru (subclass) akan mirip dengan class yang lama (superclass)
namun memiliki karakteristik yang baru. Dalam Java, subclass hanya bisa memiliki satu
superclass (single inheritance). Sedangkan, superclass bisa memiliki satu subclass atau lebih.

BangunRuang

Balok Limas

Gambar 3.1 Contoh hierarki inheritance


Gambar di atas menunjukkan contoh dari hierarki inheritanse. Terlihat pada gambar
bahwa terdapat BangunRuang sebagai superclass serta Balok dan Limas sebagai subclass.
Perhatikan bahwa digambarkan panah yang mengarah dari setiap subclass ke superclassnya.
Hal ini karena subclass dapat merujuk ke item yang ditentukan dalam superclass, tetapi tidak
sebaliknya.
Untuk menerapkan inherintance, gunakan statement “extends”.
namaSubclass extends namaSuperclass {

......... // definisi class

Suatu parent class dapat tidak mewariskan sebagian member-nya kepada subclass-nya.
Sejauh mana suatu member dapat diwariskan ke class lain, ataupun suatu member dapat
diakses dari class lain, sangat berhubungan dengan access control (kontrol pengaksesan). Di
dalam java, kontrol pengaksesan dapat digambarkan dalam tabel berikut ini:

Class yang Package yang


Modifier Subclass Class manapun
sama sama

private √

default √ √

protected √ √ √

public √ √ √ √

Keyword “super” digunakan oleh subclass untuk memanggil member dari superclass,
seperti constructor ataupun method yang ada pada superclass-nya. Adapun keyword “this”
dipakai untuk merujuk pada member dari class itu sendiri.
Contoh untuk memanggil constructor milik superclass :

super()

super(parameter)

Contoh untuk memanggil atribut dan method milik superclass :

super.namaAtribut

super.namaMethod(parameter)
3.2. Polimorfisme
Polimorfisme mempunyai makna „sesuatu yang memiliki banyak bentuk‟. Sehingga,
dalam bahasa pemrograman Java dapat diartikan sebagai konsep pemrograman di mana
terdapat method dengan nama yang sama, tetapi memiliki kelakuan (behavior) yang berbeda.

BangunRuang

hitungLuas()
hitungVolume()

Balok Limas

hitungLuas() hitungLuas()
hitungVolume() hitungVolume()

Gambar 3.2
Dari gambar diagram di atas, terlihat bahwa class BangunRuang merupakan superclass
dari class Balok dan Limas. Class BangunRuang ini memiliki method hitungLuas() serta
hitungVolume(). Dapat dilihat pula bahwa subclass-nya juga memiliki kedua method tersebut.
Meskipun ketiga class itu mempunyai nama method yang sama, tetapi isi (source code/yang
dilakukan/output) dari masing-masing method itu berbeda.
3.2.1. Method Overriding
Method Overriding adalah kemampuan dari subclass untuk memodifikasi method dari
superclass, yaitu dengan cara menumpuk (mendefinisikan kembali) method superclass-nya.
Contoh method overriding dapat dilihat pada Gambar 3.2, di mana pada subclass Balok yang
mendefinisikan kembali method hitungLuas() dan hitungVolume() dari superclass-nya.
Adapun beberapa hal yang perlu diperhatikan dalam menggunakan method overriding,
yaitu sebagai berikut :
 Parameter yang terdapat pada method overriding di subclass harus sama dengan
parameter yang terdapat pada superclass.
 Hak akses method overriding di subclass tidak boleh lebih ketat di bandingkan dengan
hak akses method pada parent class.
3.2.2. Method Overloading
Method Overloading adalah sebuah kemampuan yang membolehkan sebuah class
mempunyai dua atau lebih method dengan nama yang sama, tetapi memiliki parameter yang
berbeda. Pada method overloading perbedaan parameter mencakup :
 Jumlah parameter
 Tipe data dari parameter
 Urutan dari tipe data parameter
4. Langkah Praktikum
4.1. Inheritance
4.1.1. Mendefinisikan superclass dan subclass
1) Buat class baru dengan nama BangunRuang seperti kode berikut :
public class BangunRuang{

2) Buat tiga variabel bertipe float seperti berikut :


...
protected float p;
protected float l;
protected float t;
...

3) Buat constructor untuk memberi nilai awal variabel :


...
BangunRuang(float p, float l, float t){
this.p = p;
this.l = l;
this.t = t;
}
...

4) Tambahkan satu method untuk melakukan perhitungan :


...
float hitungVolume() {
return p*l*t;
}
...

5) Buat class baru dengan nama Balok yang menurunkan class BangunRuang seperti
kode berikut :
public class Balok extends BangunRuang {

6) Buat constructor untuk memberi nilai awal pada variabel seperti kode berikut :
...
Balok(float p, float l, float t){
super(p,l,t);
}
...

7) Tambahkan satu method untuk menampilkan hasil perhitungan :


...
void hasil(){
System.out.println("Volume Balok : " + hitungVolume());
}
...

8) Buat class baru yang bernama Praktikum untuk menjalankan program yang telah
dibuat :
public class Praktikum {
public static void main (String[] args){

}
}

9) Buat objek dari class Balok pada class Praktikum seperti kode berikut :
...
Balok satu = new Balok(3,4,5);
...

10) Tambahkan perintah berikut untuk menampilkan hasil perhitungan :


...
satu.hasil();
...

11) Simpan semua file yang telah dibuat dan jalankan di command prompt.

4.1.2. Pemanggilan constructor milik superclass


1) Bulatlah class dengan nama Parent seperti berikut :
public class Parent {

2) Buat class baru bernama Child yang menurunkan class Parent :


public class Child extends Parent {

3) Tambahkan satu variabel bertipe integer seperti kode berikut :


...
int x;
...

4) Buat constructor seperti kode berikut :


...
public Child(){
x = 5;
super();
}
...

5) Simpan kedua file di atas dan coba jalankan. Apa yang terjadi? Pasti terjadi error.

6) Sekarang ubahlah sedikit kode pada constructor class Child seperti berikut ini :
...
public Child(){
super();
x = 5;
}
...

7) Setelah disimpan dan dijalankan, anda tidak mendapatkan error sebagaimana


sebelumnya. Ini yang harus kita perhatikan bahwa untuk pemanggilan constructor
superclass, kita harus melakukan pemanggilan tersebut di baris pertama pada
constructor subclass.

4.2. Polimorfisme
4.2.1. Method Overriding
1) Bulatlah class dengan nama Limas yang menurunkan class BangunRuang seperti
berikut :
public class Limas extends BangunRuang {

2) Tambahkan constructor seperti kode berikut :


...
Limas(float p, float l, float t){
super(p,l,t);
}
...

3) Buat method overriding dari method hitungVolume() yang ada pada superclass atau
class BangunRuang untuk menghitung volume limas seperti kode berikut ini :
...
float hitungVolume() {
float volume = (p*l*t)/3;
return volume;
}
...

4) Buka class Praktikum yang telah dibuat pada percobaan sebelumnya, kemudian buat
objek baru dari class Limas.
...
Limas dua = new Limas(2,4,6);
...

5) Tambahkan perintah output untuk melihat hasil pengurangannya :


...
System.out.println("Volume Limas : " + dua.hitungVolume());
...

6) Simpan file tersebut dan coba jalankan class Praktikum.

4.2.2. Method Overloading


1) Bulatlah class baru bernama Tabung seperti berikut :
public class Tabung{

2) Bulatlah satu variabel phi seperti berikut :

...
double phi = 3.14;;
...

3) Buat method baru untuk menghitung volume tabung seperti pada kode berikut ini :
...
int volume(int r, int t){
int v = (int) (phi*r*r*t);
return v;
}
...

4) Buat method overloading dari method volume() yang menggunakan parameter


double seperti pada kode berikut :
...
double volume(double r, double t) {
double hasil = phi*r*r*t;
return hasil;
}
...

5) Buka kembali class Praktikum, kemudian buat objek baru dari class Tabung.
...
Tabung tiga = new Tabung();
...

6) Tambahkan perintah output untuk melihat hasil dari method volume() dengan
parameter integer :
...
System.out.println("Volume Tabung pertama: " + tiga.volume(2,7));
...

7) Tambahkan perintah output untuk melihat hasil dari method volume() dengan
parameter double :
...
System.out.println("Volume Tabung kedua :" + tiga.volume(2.0,7.0));
...

8) Simpan semua file tersebut dan coba jalankan class Praktikum.

Anda mungkin juga menyukai