0% menganggap dokumen ini bermanfaat (0 suara)
134 tayangan17 halaman

Bab V Inheritance Java

Bab V membahas konsep pewarisan (inheritance) dalam pemrograman berorientasi objek. Tujuannya adalah mempraktikkan penerapan pewarisan, overloading, dan overriding dalam pembuatan class dan objek di Java. Pewarisan memungkinkan class baru mewarisi atribut dan metode dari class induk. Overriding mendefinisikan ulang metode class induk, sedangkan overloading mendefinisikan beberapa metode dengan nama yang sama tetapi parameter berbeda. Latihan membuat class dosen

Diunggah oleh

AHMADSA
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
134 tayangan17 halaman

Bab V Inheritance Java

Bab V membahas konsep pewarisan (inheritance) dalam pemrograman berorientasi objek. Tujuannya adalah mempraktikkan penerapan pewarisan, overloading, dan overriding dalam pembuatan class dan objek di Java. Pewarisan memungkinkan class baru mewarisi atribut dan metode dari class induk. Overriding mendefinisikan ulang metode class induk, sedangkan overloading mendefinisikan beberapa metode dengan nama yang sama tetapi parameter berbeda. Latihan membuat class dosen

Diunggah oleh

AHMADSA
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 17

BAB V

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.

5.2 Dasar Teori


5.2.1 Pewarisan
Pewarisan (inheritance) adalah suatu cara pembuatan class baru dengan
menggunakan kembali class yang sudah didefinisikan sebelumnya dengan
menambahkan atribut dan method baru. Sehingga dengan demikian class baru
tersebut tetap memiliki variabel dan fungsi yang dimiliki oleh class
sebelumnya. Pada konsep pewarisan ada beberapa istilah yang perlu
diketahui, yaitu:
1. Subclass, di gunakan untuk menunjukan class anak atau turunan secara
hirarki dari superclass.
2. Superclass, digunakan untuk menunjukan class induk secara hirarki dari
subclass (class anak).
3. Extends, digunakan untuk menunjukan bahwa suatu class merupakan
turunan dari class lain, misal A extends B, berarti class A adalah turunan
dari class B. A merupakan subclass, sedangkan B merupakan superclass.
4. Super, digunkan untuk memanggil konstruktor dari superclass atau
memanggil variabel yang mengacu pada superclass. Misal super(x,y,z),
berarti atribut x,y, dan z diambil dari atribut pada class induk.
Menunjukkan hirarki klas dosen. Klass dosen tersebut memili ki urunan
berupa klas rektor, klas dekan dan klas kalab. Apabila dirancang

105
106

ke dalam diagram class.

Gambar 5. 1 Hirarki class dosen

Pada gambar 5.1 merupakan program penurunan yaitu Dosen sebagai


objek utama nya atau super class nya, dan class Dosen mewarisi semua atribut
yang ada di class Dosen. Class Rektor, Dekan , dan Kalah bisa memakai
atribut yang ada di Class Dosen.

Gambar 5. 2 class diagram untuk hirarki dosen

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().

5.2.2 Hierarki class


Langkah awal dalam pemodelan sistem adalah memikirkan bagaimana
hierarki class yang kita buat. Pembuatan hierarki yang tidak tepat sasaran
dapat membuat program tidak efisien dan susah untuk dikembangkan lagi.
107

Dalam java, hierarki class dibuat dengan mekanisme pewarisan


(inheritence). class yang mewarisi sifat dari class lain disebut dengan
subclass. Sedangkan class yang mewarisi sifat dari class lain disebut dengan
superclass. Sifat yang diwariskan adalah filed dan method. Jadi, semua
subclass mempunyai filed dan metode yang ada pada superclass masing-
masing.
Satu class hanya dapat mempunyai sebuah superclass saja (single
inheritance). Tetapi dapat mempunyai banyak subclass. Java tidak
mengizinkan adanya pewarisan sifat lebih dari satu class atau (multiple
inheritance) dengan alasan dapat membingungkan. Namun, hubunga n
superclass dan subclass dapat terjadi secara bertingkat.
Dengan adanya pewarisan tidak perlu dilakukan definisi ulang kode
untuk filed dan metode dalam subclass. Dengan demikian, kode progr am
lebih ringkas dan mudah dikerjakan. Dengan mengedit filed dan metode pada
superclass, seluruh subclass juga akan mengikuti. Penentuan hierarki class
perlu difikirkan dengan masak. Jika tidak tepat, dapat menimbul ka n
kesulitan-kesulitan dimasa mendatang. Kesulitan dapat terjadi jika kondisi
lapangan yang berubah atau karena program harus dikembangkan lagi untuk
mengkomodasi fasilitas baru.
5.2.3 Overreding
Overriding adalah suatu cara untuk mendefinisikan ulang method yang
ada pada class induk apabila class anak mengingi nkan adanya informasi yang
lain. Overriding dilakukan dengan cara menulis ulang method yang ada pada
class induk dengan syarat bahwa nama dan parameter fungsi tersebut harus
sama (tidak boleh diubah). Meskipun fungsi telah ditulis ulang oleh class
anak, fungsi yang asli pada class induk masih dapat dipanggil di class anak
dengan menggunakan class super.
Konsep pewarisan pada contoh gambar 5.1 dapat dipadukan dengan
konsep overriding. Gambar 5.8 menunjukkan class dosen yang tidak jauh
berbeda dengan class dosen pada contoh 5.1.
Konsep overriding digunakan pada method view(). Method ini ditulis
108

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

private int th_mulai;


private int jabatan_ke;
//inisialisasi
rektor(String namaX, String nikX, String jurX, int
thX, int keX) {
super(namaX, nikX, jurX);
th_mulai = thX;
jabatan_ke = keX;
}
public void viewRektor()
{
System.out.println("Th mulai jabatan:
"+th_mulai);
System.out.println("Jabatan rektor ke:
"+jabatan_ke);
}
}
package bab5.latihan1;
//Ahmad Saifurrohman (32601800003)
public class dekan extends dosen {
private String fakultas;
dekan (String namaX, String nikX, String jurX, String
fakX) {
super(namaX, nikX, jurX);
fakultas = fakX;
}
public void viewdekan()
{
System.out.println("Fakultas: "+fakultas);
}

}
package bab5.latihan1;
//Ahmad Saifurrohman (32601800003)
public class kalab extends dosen{
private String laboratorium;
kalab(String namaX, String nikX, String jurX, String
labX) {
111

super(namaX, nikX, jurX);


laboratorium = labX;
}
public void viewkalab()
{
System.out.println("Laboratorium:
"+laboratorium);
}

}
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

Gambar 5. 3 output Latihan 1

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

dosen(String namaX, String nikX, String jurusanX) {


nama = namaX;
nik = nikX;
jurusan = jurusanX;
113

}
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;

dekan(String namaX, String nikX, String jurusanX,


String fakX) {
super(namaX, nikX, jurusanX);
fakultas = fakX;
}
public void view(){
super.view();
System.out.println("fakultas: "+fakultas);
114

}
}
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

Gambar 5. 4 output latihan 2

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

extends dosen seperti pada latihan 1. Pada program utama


menunjukkan konsep overriding class dosen.

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

System.out.println(kelas+", Jumlah Mahasiswa =


"+jumlah);
}
public void infomahasiswa(int mhslama, int mhsbaru,
int mhscuti, int angkatan)
{
int jumlah = mhslama + mhsbaru + mhscuti;
System.out.println("Sampai Tahun "+angkatan+ "
Jumlah mahasiswa = "+jumlah);
}
}
package bab5.latihan3;
//Ahmad Saifurrohman (32601800003)
public class main {
public static void main(String[] args) {
mahasiswa m = new mahasiswa();
m.infomahasiswa(60, 18, "Kelas A angkatan 2008");
m.infomahasiswa(1000, 400, 25, 2008);
}
}
b. Output

Gambar 5. 5 output latihan 3

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

Gambar 5. 6 output latihan 4

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

double untuk signature(double y1, double y2). Pada program


utama dilakukan pemanggilan fungsi terhadap kedua class yang di-
overload.
5.4 Tugas
1. Tugas 1
Buatlah sebuah class kendaraan dengan turunannya kedaraan darat,
kendaraan laut, kemudian diturunkan lagi menjadi sepeda motor dan
perahu layar. Kemudian buatlah fungsi-fungsi untuk menampilkan data
kendaraan berupa : kecepatan, kapasitas_tangki, tahun_keluar, warna,
daya_angkut_barang, daya_angkut_manusia dan total_daya_angkut.
a. Kode program
package tugas5.tugas1;
//Ahmad Saifurrohman (32601800003)
public class kendaraan {
protected String kecepatan;
protected String kapasitas_tangki;
protected String tahun_keluar;
protected String warna;
protected String daya_angkut_barang;
protected String daya_angkut_manusia;
protected String total_daya_angkut;

kendaraan(String kecepatanX, String


kapasitas_tangkiX, String tahun_keluarX, String warnaX,
String daya_angkut_barangX, String
daya_angkut_manusiaX, String total_daya_angkutX) {
kecepatan = kecepatanX;
kapasitas_tangki = kapasitas_tangkiX;
tahun_keluar = tahun_keluarX;
warna = warnaX;
daya_angkut_barang = daya_angkut_barangX;
daya_angkut_manusia = daya_angkut_manusiaX;
total_daya_angkut = total_daya_angkutX;
}
public void view(){
119

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

Gambar 5. 7 output tugas 1

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.

Anda mungkin juga menyukai