Bab V Inheritance Java
Bab V Inheritance Java
PEWARISAN (INHERITANCE)
5.1 Tujuan
Adapun tujuan dari praktikum bab 5 ini adalah sebagai berikut :
1. Praktikan mampu menterjemahkan UML ke dalam bentuk pemrograman.
2. Praktikan dapat membedakan pemakaian overloading dan overriding.
3. Praktikan mampu menerapkan konsep pewarisan, overloading dan
overriding dalam pemrograman dengan Java.
105
106
Pada Gambar 5.2 tersebut, class induk (class dosen) memiliki atribut
nama, nik dan jurusan. Method yang dimiliki oleh class dosen adalah
view(). Class turunan dari class dosen ada tiga class. Pada class rektor,
terdapat tambahan atribut berupa th_mulai dan jabatan_ke, serta method
viewRektor(). Pada class dekan terdapat tambahan atribut fakultas, dan
method viewDekan(). Pada class kalab terdapat tambahan atribut
laboratorium, dan method viewKalab().
ulang pada setiap subclass yaitu subclass rektor, dekan, dan kalab dengan
menambahkan instruksi tambahan yang dibutuhkan pada setiap class.
5.2.4 Overloading
Overloading fungsi adalah penulisan beberapa fungsi (dua atau lebih)
yang memiliki nama yang sama. Pada bahasan overloading dikenal istilah
signature. Signature sebuah fungsi adalah parameter lengkap dengan tipe
datanya yang terdapat dalam fungsi tersebut. Misal terdapat fungsi:
Public int jumlah Mahasiswa (int laki2, int perempuan string kelas); maka
signature dari fungsi tersebut adalah (int, int, String).
Suatu fungsi dikatakan di-overload manakala terdapat beberapa fungsi
dengan nama yang sama namun memiliki signature yang berbeda-beda,
sebagai contoh:
Public void infoMahasiswa (int laki2, int perempuan, string
kelas)
{
...
}
public void infoMahasiswa (int mhsLama, int mhsBaru, int
mhsCuti, int angkatan)
{
...
}
Berikut terdapat class mahasiswa program diatas. Pada class tersebut
terdapat dua subclass dengan nama yang sama yaitu infoMahasiswa namun
memiliki signature yang berbeda. Subclass pertama digunakan untuk
menghitung jumlah mahasiswa kelas A angkatan 2008. Sedangkan pada
subclass kedua digunakan untuk menghitung jumlah mahasiswa aktif sampai
tahun 2008.
Overloading fungsi ditentukan oleh signature nya, tidak ditentukan oleh
nilai balikan fungsi. Dalam satu class, apabila ada dua atau lebih fungsi yang
memiliki nilai balikan yang berbeda namun memiliki signatue yang sama,
maka fungsi tersebut tidak dapat dikatakan sebagai overloading.
Berikut terdapat dua class bernama jumlah untuk untuk menjumlahka n dua
109
bilangan. Class jumlah yang pertama memiliki nilai balikan yang bertipe
integer untuk signature (int x1, int x2). Sedangkan class jumlah yang kedua
memiliki nilai balikan yang bertipe double untuk signature (double y1,
double y2). Class yang dibentuk sebagaimana terlihat pada Gambar 5.15.
Overloading fungsi ditentukan oleh signature nya, tidak ditentukan oleh
nilai balikan fungsi. Dalam satu class, apabila ada dua atau lebih fungsi yang
memiliki nilai balikan yang berbeda namun memiliki signatuer yang sama,
maka fungsi tersebut tidak dapat dikatakan sebagai overloading.
5.3 Latihan
Lakukan praktek di atas dan lakukan evaluasi
1. Latihan 1
a. Kode program
package bab5.latihan1;
//Ahmad Saifurrohman (32601800003)
public class dosen {
protected String nama;
protected String nik;
protected String jurusan;
//membuat constructor
dosen (String namaX, String nikX, String jurX) {
nama = namaX;
nik = nikX;
jurusan = jurX;
}
//menampilkan informasi
public void view(){
System.out.println("Nama: "+nama);
System.out.println("Nik: "+nik);
System.out.println("Jurusan: "+jurusan);
}
}
package bab5.latihan1;
//Ahmad Saifurrohman (32601800003)
public class rektor extends dosen{
110
}
package bab5.latihan1;
//Ahmad Saifurrohman (32601800003)
public class kalab extends dosen{
private String laboratorium;
kalab(String namaX, String nikX, String jurX, String
labX) {
111
}
package bab5.latihan1;
//Ahmad Saifurrohman (32601800003)
public class main {
public static void main (String [ ] args) {
rektor rek = new rektor ( " Andi " , " 885230202
" , " Informatika " , 2006 , 2 ) ;
dekan dek = new dekan ( " Ahmad " , " 995230101
" , " T.Kimia " , " TI " ) ;
kalab lab = new kalab ( " Indah " , " 035230302
" , " Informatika " , " KSC " ) ;
rek.view();
rek.viewRektor();
dek.view();
dek.viewdekan();
lab.view();
lab.viewkalab();
}
}
112
b. Output
c. Penjelasan
Pada gambar 5.3 merupakan hierarki class dosen, dimana class
dosen memiliki turunan class rektor dengan syntax public static
class rektor extends dosen, class dekan denagn syntax public
static class dekan extends dosen dan class kalab dengan syntax
public static class kalab extends dosen.
2. Latihan 2
a. Kode program
package bab5.latihan2;
//Ahmad Saifurrohman (32601800003)
public class dosen {
protected String nama;
protected String nik;
protected String jurusan;
//inisialisasi
}
public void view(){
System.out.println("Nama: "+nama);
System.out.println("NIK: "+nik);
System.out.println("Jurussan: "+jurusan);
}
}
package bab5.latihan2;
//Ahmad Saifurrohman (32601800003)
public class rektor extends dosen{
private int th_mulai;
private int jabatan_ke;
rektor(String namaX, String nikX, String jurusanX,
int thX, int keX) {
super(namaX, nikX, jurusanX);
th_mulai = thX;
jabatan_ke = keX;
}
public void view(){
super.view();
System.out.println("Tahun mulai: "+th_mulai);
System.out.println("Jabatan rektor ke:
"+jabatan_ke);
}
}
package bab5.latihan2;
//Ahmad Saifurrohman (32601800003)
public class dekan extends dosen{
private String fakultas;
}
}
package bab5.latihan2;
//Ahmad Saifurrohman (32601800003)
public class kalab extends dosen{
private String laboratorium;
kalab(String namaX, String nikX, String jurusanX,
String labX) {
super(namaX, nikX, jurusanX);
laboratorium = labX;
}
public void view(){
super.view();
System.out.println("Laboratorium:
"+laboratorium);
}
}
package bab5.latihan2;
//Ahmad Saifurrohman (32601800003)
public class main {
public static void main(String[] args) {
dosen p;
rektor rek = new rektor ( " Andi " , " 885230202
" , " Informatika " , 2006 , 2 ) ;
dekan dek = new dekan ( " Ahmad " , " 995230101
" , " T.Kimia " , " TI " ) ;
kalab lab = new kalab ( " Indah " , " 035230302
" , " Informatika " , " KSC " ) ;
p = rek;
p.view();
p = dek;
p.view();
p = lab;
p.view();
}
}
115
b. Output
c. Penjelasan
Pada gambar 5.4 diatas merupakan konsep pewarisan yang
dipadukan dengan konsep overriding yang digunakan pada method
view(). Pada class dosen memiliki turunan class rektor dengan
syntax public static class rektor extends dosen, class dekan
denagn syntax public static class dekan extends dosen
dan class kalab dengan syntax public static class kalab
3. Latihan 3
a. Kode program
package bab5.latihan3;
//Ahmad Saifurrohman (32601800003)
public class mahasiswa {
public void infomahasiswa (int laki2, int perempuan,
String kelas)
{
int jumlah = laki2 + perempuan;
116
c. Penjelasan
Pada gambar 5.5 diatas terdapat dua class infoMahasiswa dengan
signature yang berbeda. Pada program utama dilakukan pemanggilan
kedua fungsi yang di-overload dengan syntax M.infoMahasiswa(60,
18, "Kelas A ngkatan 2008");dan M.infoMahasiswa(1000,
400, 25, 2008);
117
4. Latihan 4
a. Kode Program
package bab5.latihan4;
//Ahmad Saifurrohman (32601800003)
public class penjumlahan {
public int jumlah (int x1, int x2){
return (x1+x2);
}
//Bilangan real
public double jumlah (double y1, double y2){
return (y1+y2);
}
public static void main(String[] args) {
int x1=10, x2=15;
double y1=10.5, y2=15.8;
penjumlahan p = new penjumlahan();
System.out.println(x1+" + " +x2+ " = "
+p.jumlah(x1, x2));
System.out.println(x1+" + " +x2+ " = "
+p.jumlah(y1, y2));
}
}
b. Output
c. Penjelasan
Pada gambar 5.6 tersebut terdapat dua class bernama jumlah
dengan signature yang berbeda. Pada class pertama bertipe integer
untuk signature(int x1, int x2)dan pada class kedua bertipe
118
System.out.println("kecepatan : "+kecepatan);
System.out.println("kapasitas tangki
:"+kapasitas_tangki);
System.out.println("tahun_keluar :
"+tahun_keluar);
System.out.println("warna : "+warna);
System.out.println("daya angkut barang
:"+daya_angkut_barang);
System.out.println("daya angkut manusia :
"+daya_angkut_manusia);
System.out.println("total daya angkut :
"+total_daya_angkut);
}
public static class darat extends kendaraan{
darat(String kecepatanX, String
kapasitas_tangkiX, String tahun_keluarX, String warnaX,
String daya_angkut_barangX, String daya_angkut_manusiaX,
String total_daya_angkutX) {
super(kecepatan X , kapasitas _ tangki X , tahun
_ keluar X , warnaX , daya _ angkut _ barangX , daya _
angkut _ manusiaX , total_daya_angkutX);
}
public void viewdarat(){
System.out.println();
}
}
public static class laut extends kendaraan{
laut(String kecepatanX, String
kapasitas_tangkiX, String tahun_keluarX, String warnaX,
String daya_angkut_barangX, String daya_angkut_manusiaX,
String total_daya_angkutX) {
super(kecepatanX, kapasitas_tangkiX,
tahun_keluarX, warnaX, daya_angkut_barangX,
daya_angkut_manusiaX, total_daya_angkutX);
}
public void viewlaut(){
System.out.println();
}
120
}
public static void main(String[] args) {
darat dar = new darat("100 km/jam","20
ltr","2010","Merah","50 kg","100 kg","150 kg");
laut lau = new laut("75 km/jam","20
ltr","2008","Hijau","100 kg","200 kg","300 kg");
dar.view();
dar.viewdarat();
System.out.println();
lau.view();
lau.viewlaut();
}
}
b. Output
c. Penjelasan
Pada gambar 5.7 merupakan program dengan beberapa class,
dimana class utama adalah class kendaraan lalu ada class turunan
yaitu class-class perahu dan sepeda motor. Konsep program ini sama
dengan program pada latihan 1. Untuk menjalankannya cukup di-run
pada main class-nya .
121
5.5 Kesimpulan
Inheritance merupakan penurunan atau pewarisan atribut dan
method. Kata kunci untuk inheritance adalah "extends". Inheritance
merupakan penurunan atribut dan method dari suatu kelas , kelas induk ke
sub kelas, kelas anak. Pewarisan ini bersifat menyeluruh sehingga semua
attribute dan method yang di miliki kelas super dapat diturunkan ke sub kelas.
Inheritance / pewarisan merupakan suatu subclass dapat mewarisi semua atau
sebagian member dari parent kelasnya untuk menerapkan inheritance dalam
java kita harus menambahkan keyword extends setelah deklarasi nama class
kemudian diikuti nama parent class-nya. Dalam inheritance semua file akan
diwariskan kecuali file bertipe private.