Upload
suhadakakbar
View
296
Download
34
Embed Size (px)
DESCRIPTION
nothing
Citation preview
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
A. DEFINISI MASALAH 1. Buatlah class Employee yang d-inherit oleh class Manager, Pegawai tetap, Pegawai
tidak tetap. Setelah itu program akan meminta user untuk menginputkan nama,
idKerja, jabatan employee, mempunyai istri atau tidak, mempunyai anak atau tidak
dan memasukkan tahun masuk kerja. Ketentuan untuk mengerjakan soal ini adalah
sebagai berikut :
a. Berlaku untuk semua jabatan (kecuali non PNS)
- Jika masa kerja di bawah 5 tahun maka tidak mendapatkan bonus dan tidak
mendapatkan tunjangan (sama dengan employee).
- Jika masa kerja di antara 6-10 tahun maka mendapatkan bonus 0.05 dari
lama kerja dan tidak mendapatkan tunjangan.
- Jika masa kerja di atas 10 tahun maka mendapatkan bonus 0.1 dari lama
kerja dan mendapatkan tunjangan 0.1 dari lama kerja.
- Jika mempunyai istri maka akan mendapatkan tunjangan 0.1 dari total gaji
yang didapat (gaji+lama kerja+tunjangan) jika tidak maka tunjangan istri 0
rupiah.
- Jika mempunyai anak maka mendapatkan tunjangan anak sebesar 0.15 dari
jumlah gaji yang didapatkan (gaji+lama kerja+tunjangan), tunjangan anak
hanya diberikan sampai anak ketiga saja.
b. Berlaku untuk Manager saja
- Untuk manager selain mendapatkan bonus kerja dan tunjangan, pada
manager mendapatkan tunjangan jabatan sebesar 0.1 dari jumlah gaji
(gaji+lama kerja+tunjangan).
c. Berlaku untuk pegawai tidak tetap
- Gaji yang didapatkan adalah sama dengan gaji employee, namun terdapat
gaji lembur. Untuk mendapatkan gaji lembur, pegawai non PNS harus
bekerja lebih dari 10 jam dengan mendapatkan gaji lembur sebesar 10.000
perjamnya. Namun jika di bawah 10 jam maka tidak akan mendapatkan
gaji lembur.
Untuk mengerjakan soal ini gunakan test case sebanyak 1 Manager, 10 Pegawai
tetap dan 5 pegawai tidak tetap yang mencakup seluruh ketentuan yang ada.
B. SOURCE CODE
Employee.java
1 public class Employee {
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public String nama, jabatan, idKerja, istri;
int thnKerja, anak;
static double gaji, bonus;
public Employee(String nama, String jabatan, String
idKerja, String istri, int anak, int thn){
this.nama = nama;
this.jabatan = jabatan;
this.idKerja = idKerja;
this.istri = istri;
this.anak = anak;
thnKerja = thn;
}
public String getNama(){
return nama;
}
public String getJabatan(){
return jabatan;
}
public String getIdKerja(){
return idKerja;
}
public double getGaji(){
return gaji;
}
}
Manager.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Manager extends Employee{
public Manager(String nama, String jabatan, String idKerja,
String istri, int anak, int thn){
super(nama, jabatan, idKerja, istri, anak, thn);
gaji = 5000000;
}
public void setBonus(int thn, String istri, int anak){
if(thn
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
gaji+=(gaji*(0.1/100))+(gaji*(0.1/100));
}
else if(istri.equalsIgnoreCase("kawin") && anak3){
gaji+=(gaji*(0.1/100))+((gaji*(0.15/100))*3)+(gaji*(0.1/100
));
}
else if(istri.equalsIgnoreCase("cerai") && anak3){
gaji+=((gaji*(0.15/100))*3)+(gaji*(0.1/100));
}
else{
gaji+=(gaji*(0.1/100));
}
}
}
PegawaiTetap.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class PegawaiTetap extends Employee{
public PegawaiTetap(String nama, String jabatan, String
idKerja, String istri, int anak, int thn){
super(nama, jabatan, idKerja, istri, anak, thn);
gaji = 3000000;
}
public void setBonus(int thn, String istri, int anak){
if(thn
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
gaji+=(gaji*(0.1/100))+((gaji*(0.15/100))*anak);
}
else if(istri.equalsIgnoreCase("kawin") && anak>3){
gaji+=(gaji*(0.1/100))+((gaji*(0.15/100))*3);
}
else if(istri.equalsIgnoreCase("cerai") && anak3){
gaji+=((gaji*(0.15/100))*3);
}
else{
gaji+=0;
}
}
}
PegawaiTidakTetap.java
1
2
3
4
5
6
7
8
9
10
11
public class PegawaiTidakTetap extends Employee{
public PegawaiTidakTetap(String nama, String jabatan,
String idKerja, String istri, int anak, int thn){
super(nama, jabatan, idKerja, istri, anak, thn);
gaji = 1500000;
}
public void setBonus(int jam){
gaji+=((10000*(jam-10))*30);
}
}
Main.java
1
2
3
4
5
6
7
8
9
10
11
12
import java.io.*;
public class Main {
static String daftar="\n| ID Kerja\t| Nama Pegawai\t\t|
Jabatan\t\t| Gaji\t\t|\n"
+
"|===============================================================
================|\n";
public static void main(String[]args) throws IOException{
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
for(int i=0; i
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
System.out.print("ID Kerja : ");
String id = in.readLine();
System.out.print("Nama Pegawai : ");
String nama = in.readLine();
System.out.print("Jabatan : ");
String jabatan = in.readLine();
System.out.print("Tahun Masuk : ");
int thn = Integer.parseInt(in.readLine());
System.out.print("Lama Jam Kerja : ");
int jam = Integer.parseInt(in.readLine());
System.out.print("Status Pernikahan
(cerai/kawin/belum) : ");
String status = in.readLine();
System.out.print("Jumlah Anak : ");
int anak = Integer.parseInt(in.readLine());
if(jabatan.equalsIgnoreCase("Manager")){
Manager bos = new Manager(nama, jabatan,
id, status, anak, thn);
bos.setBonus(thn, status, anak);
daftar+="| "+bos.getIdKerja()+"\t\t|
"+bos.getNama()+"\t\t| "+bos.getJabatan()+"\t\t| Rp.
"+bos.getGaji()+"\t|\n";
}
else if(jabatan.equalsIgnoreCase("Pegawai
Tetap")){
PegawaiTetap tetap = new
PegawaiTetap(nama, jabatan, id, status, anak, thn);
tetap.setBonus(thn, status, anak);
daftar+="| "+tetap.getIdKerja()+"\t\t|
"+tetap.getNama()+"\t\t| "+tetap.getJabatan()+"\t\t| Rp.
"+tetap.getGaji()+"\t|\n";
}
else if(jabatan.equalsIgnoreCase("Pegawai Tidak
Tetap")){
PegawaiTidakTetap tidak = new
PegawaiTidakTetap(nama, jabatan, id, status, anak, thn);
tidak.setBonus(jam);
daftar+="| "+tidak.getIdKerja()+"\t\t|
"+tidak.getNama()+"\t\t| "+tidak.getJabatan()+"\t| Rp.
"+tidak.getGaji()+"\t|\n";
}
}
System.out.println(daftar);
}
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
59 }
C. PEMBAHASAN
Employee.java
1
2
3
4
6
8
9
10
11
12
13
16
17
19
20
22
23
25
26
Deklarasi kelas Employee, merupakan kelas yang akan menjadi kelas induk atau
superclass.
Deklarasi variable bertipe String bernama nama, jabatan, idKerja, dan istri. Di mana
variable-variable ini bisa diakses oleh class lain karena memiliki access modifier public.
Deklarsi variable bertipe integer thnKerja dan anak. Variable ini memiliki access
modifier default, sehingga mampu diakses oleh class lain.
Deklarasi variable static double gaji dan bonus, dengan keyword static, nilai kedua
variable ini tidak akan berubah tanpa adanya suatu statemen yang melibatkan variable
tersebut.
Deklarasi constructor dengan enam parameter, yakni String nama, String jabatan, String
idKerja, String istri, int anak, dan int thn.
Inisialisasi variable nama dengan nilai samadengan nilai parameter String nama, Pada
baris ini terdapat keyword this yang berfungsi sebagai alat bantu bagi sebuah program
agar program tersebut mampu menentukan manakah yang merupakan variable, sehingga
tidak akan mengalami kebingungan dan program akan berjalan dengan baik.
Inisialisasi variable jabatan dengan nilai samadengan nilai parameter jabatan.
Inisialisasi variable idKerja dengan nilai samadengan nilai parameter idKerja.
Inisialisasi variable istri dengan nilai samadengan nilai parameter istri.
Inisialisasi variable anak dengan nilai samadengan nilai parameter anak.
Inisialisasi variable thnKerja dengan nilai samadengan nilai parameter thn. Di sini
terlihat perbedaan dengan inisialisasi sebelumnya, di sini tidak memerlukan keyword
this, karena antara variable dan parameter memiliki nama yang berbeda.
Deklarasi getter method String bernama getNama. Memiliki access modifier public,
sehingga mampu diakses oleh class lain.
Memanggil nilai variable nama.
Deklarasi getter method String bernama getJabatan. Memiliki access modifier public,
sehingga mampu diakses oleh class lain.
Memanggil nilai variable jabatan.
Deklarasi getter method String bernama getIdKerja. Memiliki access modifier public,
sehingga mampu diakses oleh class lain.
Memanggil nilai variable idKerja.
Deklarasi getter method String bernama getGaji. Memiliki access modifier public,
sehingga mampu diakses oleh class lain.
Memanggil nilai variable gaji.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
Manager.java
1
2
4
5
8
9
12
16
19
24
29
33
36
Deklarasi class Manager, class ini merupakan anak atau subclass dari superclass
Employee, ditandai dengan adanya extends.
Deklarasi constructor dengan enam parameter, yakni String nama, String jabatan, String
idKerja, String istri, int anak, dan int thn.
Dengan keyword super, subclass Manager akan memanggil constructor dari superclass
terdekat, yaitu constructor Employee dengan enam parameter. Dengan menggunakan
keyword super ini, semua statemen yang ada pada constructor yang dipanggil akan
berjalan secara implisit, sehingga tidak diperlukan terlalu banyak code program.
Inisialisasi variable gaji dari superclass dengan nilai 5000000.
Deklarasi method void bernama setBonus dengan terdapat tiga parameter, yakni int thn,
String istri, dan int anak. Method ini digunakan untuk menghitung total gaji yang sudah
diakumulasikan dengan bonus atau tunjangan.
Apabila nilai parameter thn kurang dari 11, maka nilai gaji akan ditambahkan dengan
nilai 0.05% gaji itu sendiri.
Apabila kemungkinan dari baris 9 tidak terjadi, maka nilai gaji akan ditambahka dengan
0.1% gaji, kemudian ditambahkan lagi dengan nilai penambah terakhir.
Apabila input status pernikahan (String istri) samadengan kata Kawin, dan tidak memiliki anak, maka gaji akan ditambahkan dari nilai 0.1%+0.1% gaji, yang merupakan
tunjangan untuk istri dan bonus khusus untuk manager.
Apabila input status pernikahan (String istri) samadengan kata Kawin, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari tunjangan istri,
0.1% gaji dari bonus khusus, dan 0.15% gaji dari tunjangan untuk satu anak.
Apabila input status pernikahan (String istri) samadengan kata Kawin, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari tunjangan istri,
0.1% gaji dari bonus khusus, dan 0.45% gaji dari tunjangan untuk tiga anak, karena
maksimal tunjangan hanya untuk tiga anak.
Apabila input status pernikahan (String istri) samadengan kata Cerai, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari bonus khusus,
dan 0.15% gaji dari tunjangan untuk satu anak.
Apabila input status pernikahan (String istri) samadengan kata Cerai, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari bonus khusus,
dan 0.45% gaji dari tunjangan untuk tiga anak, karena maksimal tunjangan hanya untuk
tiga anak.
Apabila semua kemungkina di atas tidak terjadi, maka gaji hanya akan ditambahkan
dengan 0.1% gaji dari bonus khusus manager.
PegawaiTetap.java
1
Deklarasi class PegawaiTetap, class ini merupakan anak atau subclass dari superclass
Employee, ditandai dengan adanya extends.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
2
4
5
8
9
12
16
19
23
26
29
32
Deklarasi constructor dengan enam parameter, yakni String nama, String jabatan, String
idKerja, String istri, int anak, dan int thn.
Dengan keyword super, subclass Manager akan memanggil constructor dari superclass
terdekat, yaitu constructor Employee dengan enam parameter. Dengan menggunakan
keyword super ini, semua statemen yang ada pada constructor yang dipanggil akan
berjalan secara implisit, sehingga tidak diperlukan terlalu banyak code program.
Inisialisasi variable gaji dari superclass dengan nilai 3000000.
Deklarasi method void bernama setBonus dengan terdapat tiga parameter, yakni int thn,
String istri, dan int anak. Method ini digunakan untuk menghitung total gaji yang sudah
diakumulasikan dengan bonus atau tunjangan.
Apabila nilai parameter thn kurang dari 11, maka nilai gaji akan ditambahkan dengan
nilai 0.05% gaji itu sendiri.
Apabila kemungkinan dari baris 9 tidak terjadi, maka nilai gaji akan ditambahka dengan
0.1% gaji, kemudian ditambahkan lagi dengan nilai penambah terakhir.
Apabila input status pernikahan (String istri) samadengan kata Kawin, dan tidak memiliki anak, maka gaji akan ditambahkan dari nilai 0.1% gaji, yang merupakan
tunjangan untuk istri.
Apabila input status pernikahan (String istri) samadengan kata Kawin, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari tunjangan istri,
dan 0.15% gaji dari tunjangan untuk satu anak.
Apabila input status pernikahan (String istri) samadengan kata Kawin, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari tunjangan istri,
dan 0.45% gaji dari tunjangan untuk tiga anak, karena maksimal tunjangan hanya untuk
tiga anak.
Apabila input status pernikahan (String istri) samadengan kata Cerai, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.15% gaji dari tunjangan untuk
satu anak.
Apabila input status pernikahan (String istri) samadengan kata Cerai, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.45% gaji dari tunjangan untuk
tiga anak, karena maksimal tunjangan hanya untuk tiga anak.
Apabila semua kemungkina di atas tidak terjadi, maka gaji tidak akan mengalami
perubahan.
PegawaiTetap.java
1
2
4
Deklarasi class PegawaiTidakTetap, class ini merupakan anak atau subclass dari
superclass Employee, ditandai dengan adanya extends.
Deklarasi constructor dengan enam parameter, yakni String nama, String jabatan, String
idKerja, String istri, int anak, dan int thn.
Dengan keyword super, subclass Manager akan memanggil constructor dari superclass
terdekat, yaitu constructor Employee dengan enam parameter. Dengan menggunakan
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
5
8
9
keyword super ini, semua statemen yang ada pada constructor yang dipanggil akan
berjalan secara implisit, sehingga tidak diperlukan terlalu banyak code program.
Inisialisasi variable gaji dari superclass dengan nilai 1500000.
Deklarasi method void bernama setBonus dengan terdapat satu parameter, yakni int jam.
Method ini digunakan untuk menghitung total gaji yang didapat pegawai tidak tetap yang
ditentukan melalui lama jam lembur.
Proses perhitungan nilai gaji yang ditambah Rp. 10000 tiap jam lemburnya, yang
kemudian total jam lembur dikalikan 30, sesuai jumlah hari dalam sebulan.
Main.java
1
2
3
8
9
11
12
13
14
15
16
17
18
19
20
21
22
23
25
26
Program mengimport dari package java.io, sehingga kita bisa menggunakan class-class
yang ada di dalamnya, misal saja, BufferedReader.
Deklarasi class Main, merupakan class utama.
Deklarasi dan inisialisasi variable static daftar yang berisi daftar nama dan gaji pegawai.
Deklarasi method void main, dengan throws IOException agar BufferedReader dapat
berfungsi.
Deklarasi variable bernama in dengan tipe class BufferedReader.
Kondisi perulangan yang dimulai dari i = 0, perulangan akan berhenti saat i mencapai 15
karena di tiap perulangan i akan ditambah 1.
Menampilkan sebuah output Data Pegawai ke yang diikuti nilai i+1 yang diikuti sebuah baris baru.
Menampilkan sebuah output ID Kerja : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai
String yang akan disimpan pada variable id.
Menampilkan sebuah output Nama Pegawai : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai
String yang akan disimpan pada variable nama.
Menampilkan sebuah output Jabatan : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai
String yang akan disimpan pada variable jabatan.
Menampilkan sebuah output Tahun Masuk : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai
String yang akan diubah ke nilai integer, kemudian disimpan pada variable thn.
Menampilkan sebuah output Lama Jam Kerja : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai
String yang akan diubah ke nilai integer, kemudian disimpan pada variable jam.
Menampilkan sebuah output Status Pernikahan : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai
String yang akan disimpan pada variable status.
Menampilkan sebuah output Jumlah Anak : tanpa baris baru.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
27
29
30
32
33
37
39
41
42
46
48
50
51
57
Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai
String yang akan diubah ke nilai integer, kemudian disimpan pada variable anak.
Apabila input jabatan (String jabatan) samadengan Manager, Membuat objek bernama bos dari class Manager dengan 6 parameter, yaitu nama,
jabatan, id, status, anak, dan thn.
Method main akan memanggil method setBonus dari class Manager dengan parameter
thn, status, dan anak.
Proses perhitungan nilai daftar yang ditambahkan nilai ID, nama, jabatan, dan gaji
pegawai.
Apabila input jabatan (String jabatan) samadengan Pegawai Tetap, Membuat objek bernama tetap dari class Manager dengan 6 parameter, yaitu nama,
jabatan, id, status, anak, dan thn.
Method main akan memanggil method setBonus dari class PegawaiTetap dengan
parameter thn, status, dan anak.
Proses perhitungan nilai daftar yang ditambahkan nilai ID, nama, jabatan, dan gaji
pegawai.
Apabila input jabatan (String jabatan) samadengan Pegawai Tidak Tetap, Membuat objek bernama tidak dari class Manager dengan 6 parameter, yaitu nama,
jabatan, id, status, anak, dan thn.
Method main akan memanggil method setBonus dari class PegawaiTidakTetap dengan
parameter jam.
Proses perhitungan nilai daftar yang ditambahkan nilai ID, nama, jabatan, dan gaji
pegawai.
Menampilkan output dari nilai String daftar yang berisi daftar gaji pegawai.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
D. SCREENSHOT PROGRAM
Input data pegawai pertama hingga keempat.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
Input data pegawai kelima hingga kedelapan.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
Input data pegawai kesembilan hingga kedua belas.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
Input data pegawai ketiga belas hingga keenam belas.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
Output Program
E. PRAKTIKUM Pertanyaan 1. Jalankan code program di atas dan benahi jika menemukan kesalahan!
Jawab :
Output program.
Dalam code program tersebut tidak ditemukan kesalahan, hanya saja terdapat
beberapa nilai atribut yang tidak ditampilkan pada output. Kemudian juga
terdapat method yang tidak berfungsi (tidak digunakan).
2. Bagaimana cara kontruktor pada subclass memanggil konstruktor di superclass
nya? Apakah hal itu perlu dilakukan? Sertakan alasan anda !
Jawab : Subclass dapat memanggil constructor dari superclass terdekat dengan
menggunakan keyword super. Pemanggil constructor super dalam constructor
dari subclass akan menghasilkan eksekusi dari superclass constructor yang
bersangkutan, berdasar dari argumen sebelumnya. Terdapat salah satu contoh
pemanggilan constructor dalam program ini, berikut contohnya :
Pada code di atas, subclass Manager memanggil constructor pada class Employee
yang merupakan superclass, penggunaan keyword super untuk memanggil
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
constructor dari superclass juga diperlukan dengan alasan efisiensi. Dengan
begitu, kita tidak perlu membuat code program sebanyak yang ada pada
superclass Employee (tidak perlu membuat statemen dalam constructor yang
dipanggil). Kemudian saat ingin menampilkan nilai dari suatu atribut (baik atribut
dari superclass Employee ataupun subclass Manager) hanya diperlukan accessor
method (dari superclass) untuk menampilkan hasil nilai yang berbeda.
3. Tambahkan constructor pada class Employee dengan parameter String name!
amati perubahan apa yang terjadi, jelaskan jawaban anda!
Jawab :
Dengan menambahkan constuctor pada class Employee dengan parameter String
name, hal ini tidak akan mempengaruhi/mengubah program ini. Ini terjadi karena
constructor ini tidak dipanggil, ditambah lagi constructor ini tidak terdapat
statement di dalamnya.
4. Pada Class Manager baris ke 5, setelah variable day tambahkan variable bonus!
Amati apa yang terjadi dan mengapa demikian?
Jawab : Apabila ditambahkan variable bonus, akan terjadi/muncul pesan error.
Error terjadi karena dalam hal ini subclass memanggil constructor dari superclass,
sehingga untuk menjadikannya berhasil, urutan tipe data dalam parameter super
juga harus sama dengan urutan parameter yang ada pada constructor di
superclass.
Pada gambar di atas sudah terlihat jelas, di mana parameter mulai String name
hingga int day (total terdapat lima parameter), serta diketahui pula tidak ada
variable bonus dalam parameter tersebut.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
5. Untuk apa digunakan keyword this pada class manager dan employee? Hapus
keyword this dan amati apa yang terjadi?
Jawab : Keyword this digunakan untuk pembeda antara atribut dengan parameter
yang ada pada constructor atau method. Sehingga tidak terjadi kekacauan atau
tabrakan karena nama yang sama antara atribut dengan parameter.
Dengan dihilangkannya keyword this, akan memberikan/memunculkan tanda
peringatan berupa gambar pentung (lihat baris 10), hal ini terlihat tidak penting,
namun saat program dijalankan akan menghasilkan output sebagai berikut :
Dengan hilangnya keyword this, semua nilai akan bernilai null atau nol. Hal ini
terjadi karena program kebingungan untuk menentukan mana yang atribut class,
mana yang merupakan parameter.
6. Tambahkan constructor pada class Employee dengan parameter Bertipe data
string bernama name yang nantinya bila constructor ini akan dipanggil akan
menginisialisasi variable name! Amati perubahannya pada class anak dan
jelaskan! Benahi bila terjadi kesalahan!
Jawab : Pada soal nomor enam ini kasusnya hampir mirip dengan nomor tiga.
Agar parameter String name dapat menginisialisasi variable name saat
constructor dipanggil, maka diperlukan sebuah penginisialisasian dalam
constructor, apabila nama variable dan parameter sama, maka perlu diimbuhkan
this. di depan variable name.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
Kemudian tambahkan code seperti baris 7 untuk membuat objek baru sebagai
percobaan, namun di sini baris ini tidak akan berpengaruh karena tidak ada tindak
lanjut lagi, seperti memberikan gaji (jadi, apabila diberikan output untuk staff
baru ini, nilai gajinya adalah 0.0). Untuk subclass Manager juga tidak
terpengaruh oleh hal tersebut, sehingga subclass Manager tidak akan mengalami
perubahan sedikitpun.
7. Pada bab sebelumnya anda telah belajar mengenai konsep encapsulation, jelaskan
mengapa pada super class menggunakan modifier protected? Apa yang terjadi
jika modifier anda ubah menjadi private atau public? Jelaskan !
Jawab : Untuk sebuah superclass pastinya menggunakan modifier public, karena
superclass akan menjadi induk yang nantinya, data-data yang ada pada superclass
dapat digunakan oleh subclass.
Sementara itu, untuk atribut menggunakan modifier protected agar subclass dapat
mengakses atribut dari superclass, begitu halnya dengan public, subclass juga
mampu mengakses atribut dari superclass. Apabila modifiernya diubah menjadi
private, subclass tidak akan mampu mengakses atribut dari superclass, sehingga
program akan error. Jadi, untuk dapat mengakses nilai atribut superclass yang
bermodifier private, diperlukan sebuah instansiasi dan sebuah getter method,
dengan code .. Jadi, apabila menggunakan
modifier public atau protected, dapat dengan , jadi
tidak memerlukan perantara getter method.
8. Ubahlah access modifier method pada kelas Employee menjadi :
a. Private
b. Protected
Amati perubahan apa yang terjadi? Jelaskan jawaban anda dengan detail!
Jawab :
Apabila access modifier method pada class Employee diubah menjadi private,
semua perintah atau kode yang melibatkan (memanggil) method dari class
Employee akan mengalami error, karena class lain tidak mampu mengakses
method dari class Employee.
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
Apabila access modifier diubah menjadi protected, tidak akan muncul error pada
class yang memanggil method-method dari class Employee, karena dengan
modifier protected, subclass mampu mengakses method dari subclass, yaitu class
Employee.
F. KESIMPULAN Inheritance adalah suatu pewarisan sifat atau method yang ada pada class induk
(superclass) kepada semua subclass-nya. Dengan hanya menuliskan code method atau
atribut, maka mereka akan dapat digunakan dalam subclass-nya. Subclass hanya perlu
mengimplementasikan perbedaan antara dirinya dengan superclass. Untuk dapat
membuat suatu class (subclass), yang diperlukan adalah keyword extends.
Misalkan terdapat class Jutsu, pada class Jutsu ini terdapat atribut, method,
maupun constructor. Sementara itu, terdapat pula class Taijutsu, class Ninjutsu, dan
class Genjutsu. Untuk menerapkan konsep inheritance, tinggal kita tambahkan
keyword extends yang diikuti nama class induk, misal... public class Taijutsu extends Jutsu{ //statement {
Dengan begitu, class Taijutsu sudah menjadi subclass dari class Jutsu, sehingga class
Asus mampu mengakses atribut atau method dari class Laptop secara menyeluruh.
Subclass dapat memanggil constructor dari superclass terdekat. Untuk dapat
melakukannya, subclass membutuhkan keyword super yang dapat digunakan untuk
memanggil constructor yang bersangkutan dan akan menjalankan statement sesuai
yang ada pada superclass, dengan begitu tidak diperlukan lagi sebuah code program
yang cukup panjang serta memiliki struktur yang sama dengan constructor di class
lain. Keyword super dapat digunakan apabila memiliki urutan tipe data dalam
parameter yang sesuai dengan urutan tipe data dalam parameter di constructor dari
superclass. Keyword super hanya dapat digunakan di awal statement dalam sebuah
constructor, dan keyword ini hanya dapat digunakan dalam definisi constructor.
Pemakaian lain dari super adalah dapat digunakan sebagi penunjuk (seperti this).
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT
PROGRAM TEKNOLOGI INFORMASI DAN ILMU
KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : SUHADAK AKBAR
NIM : 145150207111086
TANGGAL : 06 APRIL 2015
ASISTEN : - RIZKA HUSNUN ZAKIYYAH
- LILIS DAMAYANTI
UML dari Konsep Inheritance.