Dokumen ini membahas tentang konsep inheritance dalam pemrograman berorientasi objek. Inheritance memungkinkan hubungan antara class dimana subclass mewarisi atribut dan method dari superclass. Dokumen ini memberikan contoh kode program untuk mempraktekkan single inheritance, multilevel inheritance, dan access control. Juga dijelaskan penggunaan kata kunci super dan konstruktor yang tidak diwariskan.
2. TI009 – Pemrograman Berorientasi Objek
LEARNING OUTCOMES
Mahasiswa mampu memahami dan menerapkan penggunaan inheritance.
OUTLINE MATERI
Inheritance:
- Single inheritance
- Multilevel inheritance
- Access control
- Konstruktor tidak diwariskan
- Super keyword
3. TI009 – Pemrograman Berorientasi Objek
ISI
1. Mengenal Inheritance
Dalam konsep pemrograman berorientasi objek, inheritance yang memungkinkan
hubungan di mana ada class yang mewarisi semua attribute dan method dari class lain.
Class baru yang lebih spesifik disebut subclass atau class turunan, sedangkan class yang
diturunkan disebut superclass.
Untuk menguji inheritance, cara lain yang dapat digunakan adalah menggunakan
rumus “IS A”. Kekurangan metode tersebut adalah hanya berlaku searah (dari subclass
superclass).
Contoh:
- Mamalia (mempunyai daun telinga, beranak, menyusui). Contoh: anjing, kucing,
marmut. Cara mengujinya adalah: anjing IS A mamalia.
- Kendaraan (mempunyai kemudi). Contoh: mobil, motor, pesawat. Cara mengujinya
adalah: mobil IS A kendaraan
2. Latihan 1
Kita akan menggunakan kata kunci extends. Kata kunci ini digunakan untuk
membuat class turunan. Strukturnya yaitu:
public class [nama subclass] extends [nama super class)] {}
Contoh: public class Kamus extends Buku {}
Sekarang kita coba membuat program yang menerapkan prinsip inheritance
tersebut.
a. Buatlah program yang akan menjadi super class
4. TI009 – Pemrograman Berorientasi Objek
b. Buatlah program yang akan menjadi sub class dengan menggunakan kata kunci
extends
c. Buatlah class testernya
Source code-nya:
package latihaninheritance1;
//class ini bertindak sebagai super class
class A {
int x;
int y;
void getNilai() {
System.out.println("nilai x: " + x + " nilai y:" + y);
}
}
//class ini bertindak sebagai subclass
class B extends A {
int z;
void getJumlah() {
System.out.println("Jumlah: " + (x + y + z));
}
}
5. TI009 – Pemrograman Berorientasi Objek
//class ini akan digunakan sebagai class tester
public class LatihanInheritance1 {
public static void main(String[] args) {
// TODO code application logic here
A ortu = new A();
B anak = new B();
System.out.println("-----Super Class-----");
ortu.x = 43;
ortu.y = 33;
ortu.getNilai();
System.out.println("---------------------");
System.out.println(" ");
System.out.println("------Subclass-------");
anak.x = 5;
anak.y = 23;
anak.getNilai();
anak.z = 25;
anak.getJumlah();
}
}
Keterangan:
Dari kode program diatas, kita dapat melihat bahwa bahwa method getNilai() muncul
pada class B. Padahal kita tidak melihat adanya method getNilai() di class B. Hal ini
membuktikan bahwa terdapat proses inheritance dari class A ke class B. Hubungan ini
6. TI009 – Pemrograman Berorientasi Objek
bersifat generalization dimana ClassChild mempunyai semua sifat dari ClassParent.
Oleh karena itu, pada ClassChild cukup ditambahkan bagian yang memang merupakan
spesifik milik ClassChild.
3. Latihan 2
Pada program diatas, setiap atribut yang digunakan bertipe default. Dengan kata lain,
atribut pada program diatas tidak terenkapsulasi sehingga dengan mudah kita dapat
mengisi nilai x dan y tanpa mengakses method apapun dari luar class A maupun B. Pada
kelas teori, kita belajar untuk melakukan enkapsulasi dengan menggunakan hak akses
yang bertipe private. Untuk tahap latihan, silahkan ubah program diatas menjadi seperti
dibawah ini:
7. TI009 – Pemrograman Berorientasi Objek
4. Latihan 3
a. Buatlah sebuah class lagi yang mewarisi class B, misalkan class C:
8. TI009 – Pemrograman Berorientasi Objek
b. Kemudian ubahlah class InheritanceTest menjadi seperti dibawah ini:
Apakah program yang dibuat diatas menghasilkan error? Jika Error, class apa
yang error dan apa bunyinya?
c. Jika keyword this digunakan untuk membedakan variabel local dengan atribut suatu
objek, maka untuk membedakan atribut superclass dengan atribut subclass digunakan
keyword super. Buatlah program dibawah ini:
9. TI009 – Pemrograman Berorientasi Objek
d. Untuk pengaksesan constructor method dari super class, digunakan bentuk sebagai
berikut :
super (argumen1, argumen2, …) ;
Buatlah program dibawah ini:
11. TI009 – Pemrograman Berorientasi Objek
6. Soal
Studi kasus:
- Sebuah institusi membagi karyawannya kedalam tiga kelompok yaitu: karyawan
tetap, karyawan kontrak, dan karyawan harian.
- Setiap karyawan memiliki NIK, nama, alamat, TTL, jenis kelamin, status, jumlah
anak, total penghasilan.
- Karyawan harian mempunyai upah harian sebesar Rp 15.000 yang akan diberikan
pada akhir bulan dengan nilai sesuai dengan jumlah hari masuk kerjanya.
- Karyawan kontrak mempunyai gaji pokok
- Karyawan tetap mempunyai gaji pokok, tunjangan kesehatan 10% dari gaji, tunjangan
istri 20% dari gaji pokok bagi yang sudah menikah, tunjangan anak 10% per anak
bagi yang sudah menikah dan maksimal 3 anak yang mendapat tunjangan.
- Gaji pokok ditentukan berdasarkan golongan dengan ketentuan sbb :
Gol A = Rp 1.000.000, gol B = Rp 2.000.000, gol C = Rp 3.000.000, gol D = Rp
4.000.000
- Gaji pokok karyawan kontrak adalah 80% dari gaji pokok.
Contoh tampilan:
---------------KARYAWAN------------------
NIK :
Nama Karyawan :
Alamat :
Golongan :
Status :
Jenis Kelamin :
Jumlah Anak :
12. TI009 – Pemrograman Berorientasi Objek
Penghasilan :
------------KARYAWAN HARIAN-------
Nama Karyawan :
Masuk Kerja :
Upah Per Hari :
Gaji Pokok :
----------KARYAWAN KONTRAK-------
Nama Karyawan :
Gaji Pokok :
-----------KARYAWAN TETAP------------
Nama Karyawan :
Gaji Pokok :
Tunjangan Kesehatan :
Tunjangan Istri :
Tunjangan Anak :
Total Penghasilan :