Tugas 4 - Pembahasan Kelas Pegawai
-
Upload
utami-weda-wedanti -
Category
Documents
-
view
74 -
download
9
description
Transcript of Tugas 4 - Pembahasan Kelas Pegawai
Penjelasan “Pegawai.java”
I Nyoman Darma Kotama
1004405055 / Teknik Elektro - SKI
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.
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
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
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
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
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.
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”
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
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 }
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
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
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
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++;
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
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();
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
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