Tugas 4 - Pembahasan Kelas Pegawai

23
Penjelasan “Pegawai.java” I Nyoman Darma Kotama 1004405055 / Teknik Elektro - SKI

description

tugas java

Transcript of Tugas 4 - Pembahasan Kelas Pegawai

Page 1: Tugas 4 - Pembahasan Kelas Pegawai

Penjelasan “Pegawai.java”

I Nyoman Darma Kotama

1004405055 / Teknik Elektro - SKI

Page 2: Tugas 4 - Pembahasan Kelas Pegawai

Soal

Buatlah sebuah kelas bernama Pegawai, dimana di dalamnya terdapat fungsi-

fungsi asesor dan mutator yang digunakan untuk menyimpan dan merubah

informasi dalam kelas tersebut. Ketentuan:

o Seorang pegawai memiliki minimal atribut: NIP, nama, alamat, gaji

pokok

o Seorang pegawai memiliki gaji pokok, dan apabila seorang pegawai

lembur, maka seorang pegawai akan mendapatkan uang lembur

sebesar: jumlah hari lembur x 1% x gaji pokok.

o Seorang pegawai juga memiliki golongan. Setiap golongan

mendapatkan tunjangan yang berbeda-beda. Berikut pembagian

besarnya tunjangan setiap golongan.

Golongan A = 1,5% x gaji pokok

Golongan B = 3% x gaji pokok

Golongan C = 5% x gaji pokok

o Seperti pada contoh kelas sebelumnya, buatlah agar user nantinya

dapat menginputkan seluruh data yang diperlukan.

Page 3: Tugas 4 - Pembahasan Kelas Pegawai

PENJELASAN BARIS KODE “pegawai.java”

I. Deklarasi Paket , Kelas & Variabel

1 import java.io.*;

2

3 class pegawai{

4 private String nip, nama, alamat,gol;

5 private double gaji;

6 private double tunjangan = 0;

7 private double lembur = 0;

8 private int count = 1;

9 private float hari = 0;

Baris ke - Penjelasan

1 Kali ini import memanggil java.io.* yang bertugas untuk mengurus

masukan/keluaran (input/output) dari keyboard

3 Deklarasi kelas pegawai yang haruslah sama penamaannya dengan nama file “pegawai.java”

4 Deklarasi variabel privat nip, nama, alamat, & gol yang bertipe data String

5 Deklarasi variabel privat gaji yang bertipe data double

6 Deklarasi variabel privat tunjangan yang betipe data double dan bernilai awal 0

7 Deklarasi variabel privat lembur yang bertipe data double dan bernilai awal 0

8 Deklarasi varibel privat count yang bertipe data integer / int dan bernilai awal 1

9 Deklarasi variabel privat hari yang bertipe data float dan bernilai awal 0

Page 4: Tugas 4 - Pembahasan Kelas Pegawai

II. Fungsi & Prosedur Set Data (Asesor)

10 public void setNama(String inputNama){

11 nama = inputNama;

12 }

13

14 public void setAlamat(String inputAlamat){

15 alamat = inputAlamat;

16 }

17

18 public void setNIP(String inputNIP){

19 nip = inputNIP;

20 }

21 public void setGol(String inputGol){

22 gol = inputGol.toLowerCase();

23 }

24

25 public void setGaji(String inputGaji){

26 gaji = Double.parseDouble(inputGaji);

27 }

28

29 public void setHari(String inputHari){

30 hari = Float.parseFloat(inputHari);

31 }

32

33 //Set golongan

34 public void setGolA(double inputGaji){

35 tunjangan=0.015*inputGaji;

36 }

37 public void setGolB(double inputGaji){

38 tunjangan=0.03*inputGaji;

39 }

40 public void setGolC(double inputGaji){

41 tunjangan=0.06*inputGaji;

42

Page 5: Tugas 4 - Pembahasan Kelas Pegawai

43 }

44

45 //Set Lembur

46 public void setLembur(double inputGaji){

47 BufferedReader b = new BufferedReader(new

InputStreamReader (System.in));

48 System.out.print("");

49 System.out.print("Pegawai Lembur ? (Y/N) : ");

50 try{

51 String choice =

(b.readLine().toLowerCase());

52 if (choice.equals("y")){

53 System.out.print("Berapa

Hari ?");

54 setHari(b.readLine());

55 lembur=getHari()*0.01*inputGaji;

56 }

57 }catch(Exception ex){

58 System.out.println(ex);

59 }

60 }

Baris ke - Penjelasan

10-12 Deklarasi sebuah prosedur setNama yang bertugas untuk

memberikan nilai pada variabel nama yang diambil dari sebuah

variabel inputan bertipe String bernama inputNama.

14-16 Deklarasi sebuah prosedur setAlamat yang bertugas untuk

memberikan nilai pada variabel alamat yang diambil dari sebuah

variabel inputan bertipe String bernama inputAlamat.

18-20 Deklarasi sebuah prosedur setNIP yang bertugas untuk

memberikan nilai pada variabel nip yang diambil dari sebuah

Page 6: Tugas 4 - Pembahasan Kelas Pegawai

variabel inputan bertipe String bernama inputNIP.

21-23 Deklarasi sebuah prosedur setGol yang bertugas untuk

memberikan nilai pada variabel gol yang diambil dari sebuah

variabel inputan bertipe String bernama inputGol yang sebelumnya

dikonversi menjadi huruf kecil lewat perintah .toLowercase()

25-27 Deklarasi sebuah prosedur setGaji yang bertugas untuk

memberikan nilai pada variabel gaji yang diambil dari sebuah

variabel inputan bertipe String bernama inputGaji yang

sebelumnya dikonversi menjadi tipe data double agar sesuai

dengan tipe data gaji, lewat perintah Double.parseDouble()

29-31 Deklarasi sebuah prosedur setHari yang bertugas untuk

memberikan nilai pada variabel hari yang diambil dari sebuah

variabel inputan bertipe String bernama inputHari yang

sebelumnya di konversi ke tipe data float dengan perintah

Float.parseFloat.

34-36 Deklarasi sebuah prosedur setGolA yang bertugas untuk

memberikan nilai pada variabel tunjangan jika golongan pegawai

merupakan golongan A.

tunjangan diambil dari sebuah variabel inputan bertipe double

bernama inputGaji yang sebelumnya dikalikan dengan nilai 1,5%

atau 0.015

37-39 Deklarasi sebuah prosedur setGolB yang bertugas untuk

memberikan nilai pada variabel tunjangan jika golongan pegawai

merupakan golongan B.

tunjangan diambil dari sebuah variabel inputan bertipe double

bernama inputGaji yang sebelumnya dikalikan dengan nilai 0,3%

atau 0.03

40-42 Deklarasi sebuah prosedur setGolC yang bertugas untuk

memberikan nilai pada variabel tunjangan jika golongan pegawai

Page 7: Tugas 4 - Pembahasan Kelas Pegawai

merupakan golongan C.

tunjangan diambil dari sebuah variabel inputan bertipe double

bernama inputGaji yang sebelumnya dikalikan dengan nilai 0,6%

atau 0.06

46-60 Deklarasi sebuah prosedur setLembur yang bertugas untuk

menghitung jam lembur, jika inputan dari pengguna untuk lembur

adalah Y / y

Jika Y/y maka user harus meng-inputkan berapa jumlah hari

lembur yang dilakukan pegawai tersebut lalu prosedur setHari

dijalankan sehingga variabel hari memiliki nilai sesuai inputan user

Kemudian variabel lembur diisi dengan perhitungan:

hari*1%*gaji

Variabel hari didapat dari pemanggilan prosedur gethari()

Nilai 1% disederhanakan menjadi 0,01

Variabel gaji didapat dari variabel inputGaji.

Page 8: Tugas 4 - Pembahasan Kelas Pegawai

III. Fungsi & Prosedur Get Data (Mutator)

61 public String getNama(){

62 return nama;

63 }

64 public String getAlamat(){

65 return alamat;

66 }

67 public String getNIP(){

68 return nip;

69 }

70 public String getGol(){

71 return gol;

72 }

73 public double getGaji(){

74 return gaji;

75 }

76 public Float getHari(){

77 return hari;

78 }

79 public double getTunj(){

80 return tunjangan;

81 }

82 public double getLembur(){

83 return lembur;

84 }

85 public double getGajiTot(){

86 return getGaji()+getTunj()+getLembur();

87 }

Baris ke - Penjelasan

61-63 Fungsi getNama yang bertipe data String dan mengembalikan nilai

(return) variabel bernama “nama”

Page 9: Tugas 4 - Pembahasan Kelas Pegawai

64-66 Fungsi getAlamat yang bertipe data String dan mengembalikan

nilai (return) variabel bernama “alamat”

67-69 Fungsi getNIP yang bertipe data String dan mengembalikan nilai

(return) variabel bernama “nip”

70-72 Fungsi getGol yang bertipe data String dan mengembalikan nilai

(return) variabel bernama “gol”

73-75 Fungsi getGaji yang bertipe data Double dan mengembalikan nilai

(return) variabel bernama “gaji”

76-78 Fungsi getHari yang bertipe data Float dan mengembalikan nilai

(return) variabel bernama “hari”

79-80 Fungsi getTunj yang bertipe data Double dan mengembalikan nilai

(return) variabel bernama “tunjangan”

82-84 Fungsi getLembur yang bertipe data Double dan mengembalikan

nilai (return) variabel bernama “lembur”

85-87 Fungsi getGajiTot yang bertipe data Double dan mengembalikan

nilai (return) variabel penjumlahan dari pemanggilan fungsi:

getGaji+getTunj+getLembur

Page 10: Tugas 4 - Pembahasan Kelas Pegawai

IV. Prosedur Input Data User

88 public void inputData(){

89 BufferedReader b = new BufferedReader(new

InputStreamReader (System.in));

90 try{

91 System.out.print("Nama : ");

92 setNama(b.readLine());

93 System.out.print("NIP : ");

94 setNIP(b.readLine());

95 System.out.print("Alamat : ");

96 setAlamat(b.readLine());

97 System.out.print("Gaji : ");

98 setGaji(b.readLine());

99 System.out.print("Golongan : ");

100 setGol(b.readLine());

101 if (getGol().equals("a")){

102 setGolA(gaji);

103 }else if (getGol().equals("b")){

104 setGolB(gaji);

105 }else if (getGol().equals("c")){

106 setGolC(gaji);

107 }else {

108 System.out.println("Inputan

Golongan Salah!");

109 }

110 setLembur(gaji);

111 }catch (Exception ex){

112 System.out.println(ex);

113 }

114 }

Page 11: Tugas 4 - Pembahasan Kelas Pegawai

Baris ke - Penjelasan

88 Deklarasi Prosedur inputData

Prosedur ini nantinya akan bertugas untuk menampilkan

Pertanyaan kepada user tentang data apa yang harus diinput,

untuk kemudian disimpan ke dalam memori

89 Deklarasi sebuah variabel b yang merupakan turunan dari kelas

BufferefReader

BufferedReader adalah kelas bawaan dari paket java.io yang sudah

di deklarasikan di awal program

BufferedReader bertugas untuk mengelola inputan dari user

BufferedReader dalam penggunaan haruslah menggunakan error

handling atau perintah yang bertugas untuk memanajemen pesan

kesalahan berupa struktur try-finally-catch

91 Tulisan “Nama :” yang berfungsi agar user mengetahui sebuah

nama harus dimasukkan sekarang adalah nama user

92 Pemanggilan fungsi setNama dengan inputan keyboard dari

perintah b.readLine

93 Memunculkan tulisan “NIP :” pada layar yang berfungsi agar user

mengetahui sebuah nama harus dimasukkan sekarang adalah nip

user

94 Pemanggilan fungsi setNIP dengan inputan keyboard dari perintah

b.readLine

95 Memunculkan tulisan “Alamat :” pada layar yang berfungsi agar

user mengetahui sebuah nama harus dimasukkan sekarang adalah

alamat user

96 Pemanggilan fungsi setAlamat dengan inputan keyboard dari

perintah b.readLine

97 Memunculkan tulisan “Gaji :” pada layar yang berfungsi agar user

Page 12: Tugas 4 - Pembahasan Kelas Pegawai

mengetahui sebuah nama harus dimasukkan sekarang adalah gaji

pegawai

98 Pemanggilan fungsi setNama dengan inputan keyboard dari

perintah b.readLine

99 Memunculkan tulisan “Golongan :” pada layar yang berfungsi agar

user mengetahui sebuah nama harus dimasukkan sekarang adalah

golongan pegawai

100 Pemanggilan fungsi setGol dengan inputan keyboard dari perintah

b.readLine

101-109 Sebuah pembanding dengan perintah IF untuk mengetahui

tunjangan pegawai melalui golongan

Perbandingan dilakukan dengan mengkonversi sebelumnya

inputan user ke Lowercase pada fungsi setGol, dan kemudian

dibandingkan dengan beberapa pernyataan.

Jika inputan user sama dengan karakter “a” maka akan dijalankan

fungsi setGolA dengan inputan gaji pegawai yang sudah disimpan

sebelumnya

Jika inputan user sama dengan karakter “b” maka akan dijalankan

fungsi setGolB dengan inputan gaji pegawai yang sudah disimpan

sebelumnya

Jika inputan user sama dengan karakter “c” maka akan dijalankan

fungsi setGolC dengan inputan gaji pegawai yang sudah disimpan

sebelumnya

Jika inputan user tidak ada dalam semua perbandingan, maka akan

tampil dilayar “Inputan Golongan Salah”, dan secara otomatis

variabel tunjangan dikosongkan.

110 Pemanggilan fungsi setLembur dengan inputan gaji pegawai yang

sebelumnya sudah disimpan

111-113 Penanganan kesalahan dengan perintah catch dari pasangan try

Page 13: Tugas 4 - Pembahasan Kelas Pegawai

sebelumnya. Jika terjadi kesalahan dalam proses input data dari

keyboard maka akan tampil dilayar pesan kesalahannya.

V. Fungsi Display Data

115 public void displayData(){

116 System.out.println("Nama : "+getNama());

117 System.out.println("NIP : "+getNIP());

118 System.out.println("Alamat : "+getAlamat());

119 System.out.println("Golongan : "+getGol());

120 System.out.println("Gaji : Rp. "+getGaji());

121 System.out.println("Tunjangan : Rp. "+getTunj());

122 System.out.println("Lembur : Rp. "+getLembur());

123 System.out.println("-----------------------------+");

124 System.out.println("Gaji Total : Rp."+getGajiTot());

125 }

Baris ke - Penjelasan

115 Deklarasi fungsi displayData

DisplayData akan menangani penampilan data nilai-nilai variabel

yang tadi sudah diinputkan oleh user secara terurut

116 Ditampilkan ke layar “Nama : ” ditambah dengan pemanggilan

fungsi getNama()

117 Ditampilkan ke layar “NIP : ” dengan pemanggilan fungsi getNIP()

118 Ditampilkan ke layar “Alamat : ” ditambah dengan pemanggilan

fungsi getAlamat()

119 Ditampilkan ke layar “Golongan : ” ditambah dengan pemanggilan

Page 14: Tugas 4 - Pembahasan Kelas Pegawai

fungsi getGol()

120 Ditampilkan ke layar “Gaji : Rp. ” ditambah dengan pemanggilan

fungsi getGaji()

121 Ditampilkan ke layar “Tunjangan : Rp. ” ditambah dengan

pemanggilan fungsi getTunj()

122 Ditampilkan ke layar “Lembur : Rp.” ditambah dengan pemanggilan

fungsi getLembur()

124 Ditampilkan ke layar “Gaji Total : ” ditambah dengan pemanggilan

fungsi getGajiTot()

VI. Fungsi Startapp

126 public void startApp(){

127 BufferedReader b = new BufferedReader(new

InputStreamReader (System.in));

128

129 System.out.println("");

130 System.out.println("-- Input Data Pegawai Ke-"+count+"

--");

131 System.out.println("");

132 inputData();

133 System.out.println("");

134 System.out.println("---- Data Pegawai Ke-"+count+"

----");

135 System.out.println("");

136 displayData();

137 System.out.println("");

138 System.out.println("-----------------------------");

139 count++;

Page 15: Tugas 4 - Pembahasan Kelas Pegawai

140 if (count>1){

141 System.out.println("");

142 System.out.println("Apakah anda ingin

input data pegawai Lagi ? Y/N");

143 try{

144 String choice =

(b.readLine().toLowerCase());

145 if (choice.equals("y")){

146 tunjangan=0;

147 lembur=0;

148 hari=0;

149 startApp();

150 }

151 }catch(Exception ex){

152 System.out.println(ex);

153 }

154

155 }

156 }

Baris ke - Penjelasan

126 Deklarasi fungsi startApp

Fungsi ini bertugas untuk mensimplifikasi penggunaan Fungsi

inputData dan juga DisplayData pada Fungsi Main program

Selain itu startApp ini akan mengelola banyak inputan user dengan

memanipulasi besar nilai variabel check yang akan bertambah

setiap user ingin menambahkan data baru

127 Deklarasi sebuah variabel b yang merupakan turunan dari kelas

BufferefReader

BufferedReader adalah kelas bawaan dari paket java.io yang sudah

di deklarasikan di awal program

Page 16: Tugas 4 - Pembahasan Kelas Pegawai

BufferedReader bertugas untuk mengelola inputan dari user

BufferedReader dalam penggunaan haruslah menggunakan error

handling atau perintah yang bertugas untuk memanajemen pesan

kesalahan berupa struktur try-finally-catch

132 Pemanggilan Fungsi inputData , di bagian sinilah user akan

menginputkan semua data yang diperlukan program sesuai dengan

perintah yang ada pada fungsi inputData

136 Pemanggilan Fungsi DisplayData , di bagian sini data yang sudah

dismpan dalam memori akan ditampilkan

139 Variabel count bertambah sebanyak 1 nilai dengan perintah ++

140-155 Menanyakan user apakah ingin menambah data pegawai baru lagi

atau tidak. Jika user menginputkan Y/y maka dianggap akan

menginputkan data baru

Variabel count yang sebelumnya bernilai 1 akan menjadi 2 dan

seterusnya, memudahkan penampilan data inputan user pada

fungsi startApp ini.

Dan jika user memilih Y/y , variabel tunjangan, lembur, hari akan

dikembalikan nilainya ke 0 agar nanti bisa dirubah lagi sesuai

inputan user yang baru

Kemudian startApp dijalankan kembali.

151-153 Penanganan kesalahan dengan perintah catch dari pasangan try

sebelumnya. Jika terjadi kesalahan dalam proses input data dari

keyboard maka akan tampil dilayar pesan kesalahannya.

VII. Fungsi main

157 public static void main (String args[]){

158 pegawai p = new pegawai();

159 p.startApp();

Page 17: Tugas 4 - Pembahasan Kelas Pegawai

160 }

161 }

Baris ke - Penjelasan

157 Deklarasi main

main adalah nama method yang dijalankan pertama kali dan

semua program JAVA akan dijalankan mulai dari method main.

Void mengandung arti bahwa method ini tidak mengembalikan

nilai, sedangkan static mengandung arti bahwa method ini dapat

dijalankan tanpa harus membuat objeknya terlebih dahulu.

158 Deklarasi sebuah variabel p yang merupakan turunan dari kelas

pegawai

159 Pemanggilan fungsi startApp dalam kelas pegawai

Page 18: Tugas 4 - Pembahasan Kelas Pegawai

Berikut adalah tampilan dari program pegawai

Gambar 1.1 – Input Nilai Data Pegawai 1

Gambar 1.2 – Input Nilai Data Pegawai 2 , beserta pesan kesalahan