DEFINISI MASALAH
Susunlah program sesuai studi kasus dibawah.
Pegawai.java
Buatlah class induk Pegawai dengan definisi sebagai berikut
- nama: String
- noIndukPegawai: String
- tahunMasuk: Date
- gajiPokok: double
- keluarga: boolean
- jumlahAnak: int
+ double getGajiPokok()
+ double getBonus()
+ double getTunjangan()
+ double getTotalGaji()
a. Bonus didapatkan dari lama kerja (tahun sekarang dikurangi tahun masuk)
- Jika masa kerja dibawah 1 tahun tidak mendapat bonus
- Jika masa kerja 1-5 tahun mendapat bonus 5% x gajiPokok x lama kerja
- Jika masa kerja diatas 5 tahun mendapat bonus 10% x gajiPokok x lama kerja
b. Tunjangan didapatkan bila pegawai sudah berkeluarga
- Jika sudah berkeluarga, mendapat tunjangan 5% dari gaji pokok
- Jika memiliki anak mendapat tunjangan 5% dari gaji pokok per Anak yang dimiliki (maksimal 2 anak)
c. Total gaji diperoleh dari gaji pokok + bonus + tunjangan
Manager.java
Buatlah class Manager yang inherit class Pegawai dengan ketentuan Manager mendapat tunjangan jabatan sebesar 10% dari total gaji
Sales.java
Buatlah class Sales yang inherit class Pegawai dengan definisi:
- hargaBarang: double
- stockBarang: int
- barangTerjual: int
+ double getBonusTambahan()
Sales memiliki bonusTambahan dengan ketentuan jika barangTerjual lebih dari 70% stockBarang, maka mendapat bonusTambahan 10% dari hargaBarang x barangTerjual Jika tidak, maka bonusTambahan yang diperoleh hanya 3% dari hargaBarang x barangTerjual
Programmer.java
Buatlah class Programmer yang inherit class Pegawai dengan definisi
- jamKerja: int
+ double getBonusLembur()
Freelancer akan mendapat bonusLembur jika jamKerja lebih dari 10 jam, sejumlah 5% x gajiPokok x jamKerja - 10 jam.
Test Case:
Pegawai tahunMasuk 2015, berkeluarga, 2 anak, gajiPokok 3jt
Pegawai tahunMasuk 2010, tidak berkeluarga, gajiPokok 3jt
Pegawai tahunMasuk 2005, berkeluarga, 5 anak, gajiPokok 3jt
Manager tahunMasuk 2009, tidak berkeluarga, gajiPokok 4jt
Manager tahunMasuk 2014, berkeluarga, 2 anak, gajiPokok 4jt
Sales tahunMasuk 2012, berkeluarga, 4 anak, hargaBarang 25rb, stockBarang 100, barangTerjual 50, gajiPokok 2jt
Sales tahunMasuk 2014, berkeluarga, 1 anak, hargaBarang 10rb, stockBarang 250,
barangTerjual 220, gajiPokok 2jt
Freelancer tahunMasuk 2011, tidak berkeluarga, jamKerja 10 jam, gajiPokok 2,5jt
Freelancer tahunMasuk 2013, tidak berkeluarga, jamKerja 12 jam, gajiPokok 2,5jt
Tampilkan totalGaji berserta perhitungannya (gajipokok, bonus, tunjangan) dari setiap Test Case
SOURCE CODE
Pegawai.java
1
2
3
4
5
6
7
8
9
10
12
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import java.util.*;
public class Pegawai {
private String nama;
private String NIP;
private Date tahunMasuk=new Date();
private double gajipokok;
private boolean keluarga;
private int jumlahanak;
Date date=new Date();
public Pegawai() {
}
public Pegawai(String nama, String NIP, int tahunMasuk, double gajipokok, boolean keluarga, int jumlahanak) {
this.nama = nama;
this.NIP = NIP;
this.tahunMasuk.setYear(tahunMasuk-1900);
this.gajipokok = gajipokok;
this.keluarga = keluarga;
this.jumlahanak = jumlahanak;
}
public Date getTahunMasuk() {
return tahunMasuk;
}
public void setTahunMasuk(Date tahunMasuk) {
this.tahunMasuk = tahunMasuk;
}
public boolean isKeluarga() {
return keluarga;
}
public void setKeluarga(boolean keluarga) {
this.keluarga = keluarga;
}
public double getGajipokok() {
return gajipokok;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getNama() {
return nama;
}
public double getBonus() {
int waktukerja=date.getYear()-tahunMasuk.getYear();
if (waktukerja >=1 && waktukerja <=5) {
return 0.05*gajipokok*waktukerja;
}else if (waktukerja >5){
return 0.1*gajipokok*waktukerja;
}else {
return 0;
}
}
public double getTunjangan() {
if (keluarga) {
if (jumlahanak>2) {
return (0.05+(0.05*2))*gajipokok;
}else if(jumlahanak<=2) {
return (0.05+(0.05*jumlahanak))*gajipokok;
}
}else if(jumlahanak==0) {
return 0.05*gajipokok;
}
return 0;
}
public double getTunjangan1() {
if (keluarga) {
if (jumlahanak>2) {
return (0.15+(0.15*2))*gajipokok;
}else if(jumlahanak<=2) {
return (0.15+(0.15*jumlahanak))*gajipokok;
}
}else if(jumlahanak==0) {
return 0.15*gajipokok;
}
return 0;
}
public double getTotalGaji(){
double Gaji=gajipokok+getBonus()+getTunjangan();
return Gaji;
}
}
Manager.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package pegawai;
import java.util.Date;
public class Manager extends Pegawai {
private double tunjanganJabatan;
public Manager() {
}
public Manager(double tunjanganJabatan) {
this.tunjanganJabatan = tunjanganJabatan;
}
public Manager(String nama, String NIP, int tahunMasuk, double gajipokok, boolean keluarga, int jumlahanak) {
super(nama, NIP, tahunMasuk, gajipokok, keluarga, jumlahanak);
this.tunjanganJabatan = tunjanganJabatan;
}
public double getTunjanganJabatan() {
return super.getTunjangan1()+tunjanganJabatan;
}
}
Sales.java
1
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
package pegawai;
import java.util.Date;
public class Sales extends Pegawai{
private double hargabarang;
private int stockbarang;
private int barangterjual;
public Sales() {
}
public Sales(double hargabarang, int stockbarang, int barangterjual, String nama, String NIP, int tahunMasuk, double gajipokok, boolean keluarga, int jumlahanak) {
super(nama, NIP, tahunMasuk, gajipokok, keluarga, jumlahanak);
this.hargabarang = hargabarang;
this.stockbarang = stockbarang;
this.barangterjual = barangterjual;
}
public double getBonusTambahan(){
if (barangterjual>0.7*stockbarang) {
return 0.1*hargabarang*barangterjual;
}else{
return 0.03*hargabarang*barangterjual;
}
}@Override
public double getTotalGaji(){
double Gaji= getTunjangan()+super.getBonus()+getGajipokok()
+getBonusTambahan();
return Gaji;
}
}
Programmer.java
1
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
package pegawai;
import java.util.Date;
public class Programmer extends Pegawai{
private int jamkerja;
public Programmer() {
}
public Programmer(int jamkerja) {
this.jamkerja = jamkerja;
}
public Programmer(int jamkerja, String nama, String NIP, int tahunMasuk, double gajipokok, boolean keluarga, int jumlahanak) {
super(nama, NIP, tahunMasuk, gajipokok, keluarga, jumlahanak);
this.jamkerja = jamkerja;
}
public double getBonusLembut(){
if (jamkerja>10) {
return 0.05*getGajipokok()*(jamkerja-10);
}
else{
return 0;
}
}@Override
public double getTotalGaji(){
double Gaji= getTunjangan()+getBonus()+getGajipokok()+getBonusLembut();
return Gaji;
}
}
Maint.java
1
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
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package pegawai;
import java.util.*;
public class Maint {
public static void main(String[] args) {
Scanner input=new Scanner (System.in);
Scanner man=new Scanner (System.in);
int pilihan,jumlahanak,tahun,stock,terjual,kerja;
double gp,harga;
String nama,NIP;
boolean keluarga;
System.out.println("====Perhitungan Gaji=====");
System.out.println("1.Gaji Pegawai \n"
+ "2.Gaji Sales \n"
+ "3.Gaji Manager \n"
+ "4.Gaji Freelancer\n"
+ "5.Keluar");
System.out.print("Masukkan pilihan anda :");
pilihan=input.nextInt();
switch (pilihan){
case 1:
System.out.print("Masukkan nama :");
nama=man.nextLine();
System.out.print("Masukkan NIP :");
NIP=man.nextLine();
System.out.print("Masukkan Tahun kerja:");
tahun=man.nextInt();
System.out.print("Status berkeluarga :");
keluarga=man.nextBoolean();
if (keluarga==true) {
System.out.print("Masukkan Jumlah Anak :");
jumlahanak=man.nextInt();
}else{
jumlahanak=0;
}
System.out.print("Masukkan Gaji Pokok :");
gp=man.nextDouble();
Pegawai pekerja=new Pegawai(nama,NIP,tahun,gp,keluarga,jumlahanak);
System.out.println("========================");
System.out.println("Nama : "+nama);
System.out.println("RIncian Gaji :\n"
+ "1.Gaji Pokok :"+pekerja.getGajipokok()+"\n"
+ "2.Bonus :"+pekerja.getBonus()+"\n"
+ "3.Tunjangan :"+pekerja.getTunjangan());
System.out.println("========================");
System.out.println("Total Gaji \t: "+pekerja.getTotalGaji());
break;
case 2:
System.out.print("Masukkan nama :");
nama=man.nextLine();
System.out.print("Masukkan NIP :");
NIP=man.nextLine();
System.out.print("Masukkan Tahun kerja:");
tahun=man.nextInt();
System.out.print("Status berkeluarga :");
keluarga=man.nextBoolean();
if (keluarga==true) {
System.out.print("Masukkan Jumlah Anak :");
jumlahanak=man.nextInt();
}else{
jumlahanak=0;
}
System.out.print("Masukkan Harga Barang :");
harga=man.nextDouble();
System.out.print("Masukkan Stock Barang:");
stock=man.nextInt();
System.out.print("Masukkan Barang terjual:");
terjual=man.nextInt();
System.out.print("Masukkan Gaji Pokok :");
gp=man.nextDouble();
Sales selas=new Sales(harga,stock,terjual,nama,NIP,tahun,gp,keluarga,jumlahanak);
System.out.println("========================");
System.out.println("Nama : "+nama);
System.out.println("RIncian Gaji :\n"
+ "1.Gaji Pokok :"+selas.getGajipokok()+"\n"
+ "2.Bonus :"+selas.getBonus()+"\n"
+ "3.Bonus Tambahan:"+selas.getBonusTambahan()+"\n"
+ "4.Tunjangan :"+selas.getTunjangan());
System.out.println("========================");
System.out.println("Total Gaji \t: "+selas.getTotalGaji());
break;
case 3 :
System.out.print("Masukkan nama :");
nama=man.nextLine();
System.out.print("Masukkan NIP :");
NIP=man.nextLine();
System.out.print("Masukkan Tahun kerja:");
tahun=man.nextInt();
System.out.print("Status berkeluarga :");
keluarga=man.nextBoolean();
if (keluarga==true) {
System.out.print("Masukkan Jumlah Anak :");
jumlahanak=man.nextInt();
}else{
jumlahanak=0;
}
System.out.print("Masukkan Gaji Pokok :");
gp=man.nextDouble();
Manager ketua=new Manager(nama,NIP,tahun,gp,keluarga,jumlahanak);
System.out.println("========================");
System.out.println("Nama : "+nama);
System.out.println("RIncian Gaji :\n"
+ "1.Gaji Pokok :"+ketua.getGajipokok()+"\n"
+ "2.Bonus :"+ketua.getBonus()+"\n"
+ "3.Tunjangan :"+ketua.getTunjangan());
System.out.println("========================");
System.out.println("Total Gaji \t: "+ketua.getTotalGaji());break;
case 4 :
System.out.print("Masukkan nama :");
nama=man.nextLine();
System.out.print("Masukkan NIP :");
NIP=man.nextLine();
System.out.print("Masukkan Tahun kerja:");
tahun=man.nextInt();
System.out.print("Status berkeluarga :");
keluarga=man.nextBoolean();
if (keluarga==true) {
System.out.print("Masukkan Jumlah Anak :");
jumlahanak=man.nextInt();
}else{
jumlahanak=0;
}
System.out.print("Masukkan Gaji Pokok :");
gp=man.nextDouble();
System.out.print("Masukkan Jam kerja :");
kerja=man.nextInt();
Programmer coding=new Programmer(kerja,nama,NIP,tahun,gp,keluarga,jumlahanak);
System.out.println("========================");
System.out.println("Nama : "+nama);
System.out.println("RIncian Gaji :\n"
+ "1.Gaji Pokok :"+coding.getGajipokok()+"\n"
+ "2.Bonus :"+coding.getBonus()+"\n"
+ "3.Tunjangan :"+coding.getTunjangan()+"\n"
+ "4.gajiLembur :"+coding.getBonusLembut());
System.out.println("========================");
System.out.println("Total Gaji : "+coding.getTotalGaji());break;
case 5:
System.out.println("Keluar Dari Program");
}
}
}
PEMBAHASAN
Pegawai.java
1
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
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Deklarasi package
Import seluruh class pada java
Deklarasi variable nama dan tipe data
Deklarasi variable NIP dan tipe data
Deklarasi variable tahun masuk dan tipe data
Deklarasi variable gaji pokok dan tipe data
Deklarasi variable keluarga dan tipe datan
Deklarasi variable jumlahanak dan tipe data
Instansiasi objek date
Deklarasi constuktor pegawai
Penutup blok
Deklarasi contruktor pegawai dan parametenya
Penyimpanan nilai variable nama
Penyimpanan nilai variable NIP
Penyimpanan nilai variable tahunMasuk
Penyimpanan nilai variable gaji pokok
Penyimpanan nilai variable nilai keluarga
Penyimpanan nilai variable jumlahanak
Penutup blok
Deklarasi method getter tahun masuk
Pengembalian nilai tahun masuk
Penutup blok
Deklarasi method setter tahun masuk dan parameternya
penyimpanan nilai tahun masuk
penutup blok
deklarasi method getter keluarga
pengembalian nilai keluarga
penutup blok
deklarasi method setter keluarga dan parameter
penyimpanan nilai keluarga
penutup blok
deklarasi method geeter gaji pokok
pengembalian nilai gaji pokok
penutup blok
deklarasi method setter nama dan parameternya
penyimpanan nilai nama
penutup blok
deklarasi method getter nama
pengembalian nilai nama
penutup blok
deklarasi metho get bonus
deklarasi variable waktu kerja dan tipe data serta nilainya
seleksi kondisi if dan syaratnya
pengembalian nilai 0.05*gajipokok*waktukerja
seleksi kondisi else if dan syaratnya
pengembalian nilai 0.1*gajipokok*waktukerja
seleksi kondisi else
pengembalian nilai 0
penutup blok
penutup blok
deklarasi method getter tunjangan
seleksi kondisi if dan syaratnya
selesi kondisi if dan syaratnya
pengembalian nilai (0.05+(0.05*2))*gajipokok
seleksi kondisi else if dan syaratnya
pengembalian nilai (0.05+(0.05*jumlahanak))*gajipokok
penutup blok
seleksi kondisi else if dan syaratnya
pengembalian nilai 0.05*gajipokok
penutup blok
pengembalian nilai 0
penutup blok
deklarasi method getter tunjangan1
seleksi kondisi if dan syaratnya
seleksi kondisi if dan syaratnya
pengembalian nilai (0.15+(0.15*2))*gajipokok
seleksi kondisi else if dan syaratnya
pengembalian nilai (0.15+(0.15*jumlahanak))*gajipokok
penutup blok
seleksi kondisi else if
pengembalian nilai 0.15*gajipokok
penutup blok
pengembalian nilai 0
penutup blok
deklarasi method getter totalgaji
deklarasi variable gaji dan nilainya
pengembalian nilai gaji
penutup blok
penutup blok
Manager.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Delarasi package
Import class date
Deklarasi subclass manager dari superclass pegawai
Deklarasi variable tunjanganjabatan dan tipe datanya
Deklarasi constructor manager
Penutup blok
Deklarasi contruktor manager dan parameternya tunjangan jabatan
Penyimpanan data tunjanganjabatan
Penutup blok
Deklarasi constructor dan parameter
Pemanggilan constructor dari superclass
Penyimpanan data tunjangan jabatan
Penutup blok
Deklarasi method getter tunjangan jabatan
Pengembalian nilai method superclass tunjangan1dan nilai tunjanganjabatan subclass
Penutup blok
Penutup blok
Sales.java
1
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
Deklarasi package
Import class date
Deklarasi subclass sales dari superclass pegawai
Dekalrasi variable double hargabarang dan tipe data
Deklarasi variable stockbarang dan tipe data
Deklarasi variable barang terjual dan tipe data
Deklarasi constructor sales
Penutup blok
Deklarasi constructor dan parameternya
Pemanggilan constructor dari superclass
Penyimpanan data hargabarang
Penyimpanan data stockbarang
Penyimpanan data barangterjual
Penutup blok
Deklarasi method getter bonus tambahan
Seleksi kondisi if dan syaratnya
Pengembalian nilai 0.1*hargabarang*barangterjual
Seleksi kondisi else
Pengembalian nilai 0.03*hargabarang*barangterjual
Penutup blok
Override
Deklarasi method getter totalgaji
Deklarasi variable gaji dan nilainya
Pengembalian nilai gaji
Penutup blok
Penutup blok
Programmer.java
1
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
Deklarasi package
Import class date
Deklarasi subclass programmer dari superclass pegawai
Deklarasi variable jamkerja dan tipe datanya
Deklarasi constructor programmer
Penutup blok
Deklarasi contructor programmer dan parameter jam kerja
Penyimpanan data jamkerja
Penutup blok
Deklarasi constructor programmer dan parameternya
Pemanggilan constructor superclass
Penyimpanan data jam kerja
Penutup blok
Deklarasi method getter bonuslembut
Seleksi kondisi if dan syaratnya
Pengembalian nilai 0.05*getGajipokok()*(jamkerja-10)
Penutup blok
Seleksi kondisi else
Pengembalian nilai 0
Penutup blok
Pemanggilan method superclass dan modifikasi method superclass
Deklarasi method getter total gaji
Deklarasi variable gaji dan tipe data serta nilainya
Pengembalian nilai gaji
Penutup blok
Penutup blok
Maint.java
1
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
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
Deklarasi package
Import class seluruh pada java
Deklarasi class Maint
Deklarasi method main
Deklarasi class scanner
Deklarasi class scanner
Deklarasi variable pilihan,jumlahanak,tahun,stock,terjual,kerja dan tipe data
Deklarasi variable gp,harga dan tipe data
Deklarasi variable nama,NIP dan tipe data
Deklarasi variable keluarga dan tipe data
Mencetak “=====Perhitungan Gaji=====”
Mencetak ”1.Gaji pegawai” dan baris baru
Mencetak ”2.Gaji sales” dan baris baru
Mencetak ”3.Gaji manager” dan baris baru
Mencetak ”4.Gaji freelancer” dan baris baru
Mencetak ”5.keluar” dan baris baru
Mencetak “masukkan pilihan anda :”
Input pilihan
Seleksi kondisi switch
Case 1
Mencetak “Masukkan nama :”
Input nama
Mencetak “Masukkan NIP :”
Input NIP
Mencetak “Masukkan Tahun kerja :”
Input tahun
Mencetak “status berkeluarga :”
Input keluarga
Seleksi kondisi if dan syaratnya
Mencetak “masukkan jumlah anak :”
Input jumlahanak
Seleksi kondisi else
Variable jumlahanak dan nilainya
Penutup blok
Mencetak “Masukkan Gaji Pokok :”
Input gp
Instansi objek kelas pegawai dan parameternya
Mencetak “========================”
Mencetak “Nama :” dan memanggil nama
Mencetak “Rincian Gaji :” dan baris baru
Mencetak “1.Gaji Pokok:”& method getGajipokok objek pegawai & new line
Mencetak “2.Bonus:”& method getBonus objek pegawai & new line
Mencetak “3.Tunjangan:”& method getTunjangan objek pegawai
Mencetak “========================”
Mencetak “4.Total Gaji :” dan method getTotalGaji objek pegawai
Pemberhentian case
Case 2
Mencetak “Masukkan nama :”
Input nama
Mencetak “Masukkan NIP :”
Input NIP
Mencetak “Masukkan Tahun kerja :”
Input tahun
Mencetak “status berkeluarga :”
Input keluarga
Seleksi kondisi if dan syaratnya
Mencetak “masukkan jumlah anak :”
Input jumlahanak
Seleksi kondisi else
Variable jumlahanak dan nilainya
Penutup blok
Mencetak “Masukkan Harga Barang :”
Input harga
Mencetak “Masukkan Stock Barang :”
Input stock
Mencetak “Masukkan Barang Terjual :”
Input terjual
Mencetak “Masukkan Gaji Pokok :”
Input gp
Instansi objek kelas sales dan parameternya
Mencetak “========================”
Mencetak “Nama :” dan memanggil nama
Mencetak “Rincian Gaji :” dan baris baru
Mencetak “1.Gaji Pokok:”& method getGajipokok objek sales & new line
Mencetak “2.Bonus:”& method getBonus objek sales & new line
Mencetak “2.Bonus Tambahan:”& method getBonusTambah objek sales & new line
Mencetak “3.Tunjangan:”& method getTunjangan objek sales
Mencetak “========================”
Mencetak “4.Total Gaji :” dan method getTotalGaji objek pegawai
Pemberhentian case 2
Case 3
Mencetak “Masukkan nama :”
Input nama
Mencetak “Masukkan NIP :”
Input NIP
Mencetak “Masukkan Tahun kerja :”
Input tahun
Mencetak “status berkeluarga :”
Input keluarga
Seleksi kondisi if dan syaratnya
Mencetak “masukkan jumlah anak :”
Input jumlahanak
Seleksi kondisi else
Variable jumlahanak dan nilainya
Penutup blok
Mencetak “Masukkan Gaji Pokok :”
Input gp
Instansi objek kelas Manager dan parameternya
Mencetak “========================”
Mencetak “Nama :” dan memanggil nama
Mencetak “Rincian Gaji :” dan baris baru
Mencetak “1.Gaji Pokok:”& method getGajipokok objek Manager & new line
Mencetak “2.Bonus:”& method getBonus objek Manager & new line
Mencetak “3.Tunjangan:”& method getTunjangan objek Manager
Mencetak “========================”
Mencetak “4.Total Gaji :” dan method getTotalGaji objek pegawai
Pemberhentian case 3
Case 4
Mencetak “Masukkan nama :”
Input nama
Mencetak “Masukkan NIP :”
Input NIP
Mencetak “Masukkan Tahun kerja :”
Input tahun
Mencetak “status berkeluarga :”
Input keluarga
Seleksi kondisi if dan syaratnya
Mencetak “masukkan jumlah anak :”
Input jumlahanak
Seleksi kondisi else
Variable jumlahanak dan nilainya
Penutup blok
Mencetak “Masukkan Gaji Pokok :”
Input gp
Mencetak”masukkan jam kerja :”
Input kerja
Instansi objek kelas programmer dan parameternya
Mencetak “========================”
Mencetak “Nama :” dan memanggil nama
Mencetak “Rincian Gaji :” dan baris baru
Mencetak “1.Gaji Pokok:”& method getGajipokok objek programmer & new line
Mencetak “2.Bonus:”& method getBonus objek programmer & new line
Mencetak “3.Tunjangan:”& method getTunjangan objek programmer &new line
Mencetak “4.gaji lembur :”& method getGajilembut objek programmer
Mencetak “========================”
Mencetak “4.Total Gaji :” dan method getTotalGaji objek pegawai & hentikan case 4
Case 5
Mencetak “keluar dari program”
Penutup blok
Penutup blok
Penutup blok
SCREENSHOT PROGRAM
Pegawai.java
Gambar 2.Sales.Java
Gambar 4.Freelancer.java
Gambar 3.Manager,java
PRAKTIKUM
Data dan Analisis hasil percobaan
Jalankan code program diatas dan benahi jika menemukan kesalahan!
Jawaban : Tidak ada kesalahan pada sourcode tersebut
Bagaimana cara konstruktor pada subclass memanggil konstruktor di superclass nya? Apakah hal itu perlu dilakukan? Sertakan alasan anda !
Jawaban : untuk memanggil constructor disuperclass pada subclass kita menggunakan keyword super dan parameter pada constructor pada class superclass
Tambahkan constructor pada class Employee dengan parameter String name! amati perubahan apa yang terjadi, jelaskan jawaban anda!
Jawaban : tidak ada perubahan setelah penambahan pada syntax tersebut
Employee.java
1
2
3
4
5
6
7
8
10
11
12
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.*;
public class Employee {
private String name;
private double salary;
private Date hireday;
public Employee(String name, double salary, int year, int month, int day) {
this.name = name;
this.salary = salary;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
this.hireday = calendar.getTime();
}
public Employee(String name) {
this.name = name;
}
public Date getHireDay() {
return hireday;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public void raiseSalary(double byPercent) {
double raise = salary * byPercent / 100;
salary += raise;
}
}
Pada Class Manager baris ke 5, setelah variable day tambahkan variable bonus! Amati apa yang terjadi dan mengapa demikian?
Jawaban : terjadi error karena tidak ada parameter bonus dengan tipe data double pada kelas superclassnya
Gambar SEQ Gambar \* ARABIC 2. Manager.java
Untuk apa digunakan keyword this pada class manager dan employee? Hapus keyword this dan amati apa yang terjadi?
Jawaban : karena keyword this digunakan untuk menunjukkan variable atribut pada constructor yang disimpan pada suatu class tersebut dan apabila keyword this dihapus maka dia akan menyimpan variable dengan nama yang sama pada setiap variable yang memiliki nama yang sama pada seluruh class
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!
Jawaban : tidak ada perubahan dan kesalahan setelah menambahakan syntax tersebut
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 !
Jawaban : karena acces modifier protected dia bisa diakses dalam satu package satu subclass dan dalam satu kelas itu sendiri. Jika kita menggunakan acces modifier private maka kita tidak bisa mengakses variable pada class tersebut dan jika kita menggunakan acces modifier public maka bisa variabelnya bisa diakses oleh seluruh kelas. Sedangkan konsep encapsulatin itu menyembunyikan sebagian data kelas maka yang paling tepat adalah modifier protected
Ubahlah acces modifier method pada kelas employee menjadi :
a. Private
b. Protected
Amati perubahan apa yang terjadi? Jelaskan jawaban anda dengan detail!
Jawaban :
terjadi error karena variable yang dengan acces modifier private hanya bias diakses oleh kelas itu sendiri dan tidak dapat diakses oleh kelas lain meskipun menggunakan keyword superclass
tidak terjadi apapun karena keyword protected hamper sama kaya acces modifie public karena protected hanya didalam kelas itu sendiri,sub classnya
KESIMPULAN
Inheritance (Pewarisan) merupakan sebuah class mempunyai class turunan.Suatu class yang mempunyai class turunan dinamakan subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh induk kelasnya Karena suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class-nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apaapa yang ia warisi dari class parent-nya.
Cara menggunakan konsep inheritance yaitu dengan menggunakan kata extend Dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent lass-nya. Kata kunci extends tersebut memberitahu compiler Java bahwa kita akan melakukan perluasan class,
contoh deklarasi menggunakan extends :
public class Programmer extends Pegawai { … }
public class Manager extends Pegawai { … }
NamaClass extends NamaSuperClass. Untuk dapat mengakses data dari superclassnya dapat menggunakan keyword “super”. “Super” dapat digunakan dengan syntax berikutsuper NamaMethod(Parameter); atau super (Parameter) untuk mengakses constructor dari superclassnya.
Penggambaran UML (Unified Modeling Language) dapat digambarkan dengan cara
sebagai berikut.
1. Nama Class
2. Bagian Field (Private Properties)
Private dapat menggunakan symbol (-)
Contoh : -nama : String
-index : int
3. Bagian Behaviour
Public dapat menggunakan symbol (+)
Protected dapat menggunakan symbol (#)
Default tidak memiliki symbol
Static dapat menggunakan underline
Contoh : + makan() : void
+ hitungLuas() : double
# tambahIndex(index : int) : void
LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB : INHERITANCE
NAMA : RAHMAN RULLI ARJIANSA
NIM : 165150201111168
TANGGAL : 04/05/2017
ASISTEN : AHMAD KAMIL ALMASYHUR