CONTOH SOAL JAVA
- CV.Maju Mundur memiliki 40 orang pegawai, dimana ke-40 pegawainya tersebut terbagi menjadi 2 status kepegawaian, yaitu sebagian pegawai tetap dan sebagian yang lain (sisanya) adalah pegawai kontrak. Secara umum perbedaan antara keduanya adalah pegawai tetap selain mendapatkan gaji juga mendapatkan tunjangan yang besarnya 200 ribu, sedangkan pegawai kontrak hanya menda patkan gaji saja.
Dari kasusdiatas,
dapatdigambarkanclass-class pegawaisebagaiberikut:
̇ Class
Pegawai
Kontrak, dengan atribut :
- NoPeg : no pegawaikontrak(diinputkan)
- Nama :namapegawai (diinputkan)
- MasaKontrak :lamakontrakpegawai(diinputkan)
- Kehadiran : jumlahharimasukdalam 1bulan(diinputkan)
- UangMakan : besarnya6ribudikalijumlahkehadiran(tidakdiinputkan)
- Gaji : besarnyagajipokokyang diterimatiapbulan(diinputkan)
̇ ClassPegawaiTetap,denganatribut :
- NoPeg :no pegawaikontrak(diinputkan)
- Nama :namapegawai (diinputkan)
- Kehadiran : jumlahharimasukdalam 1bulan(diinputkan)
- Tunjangan :besarnya 200ribu (tidakdiinputkan)
- UangMaka :besarnya 6 ribu dikali jumlah kehadiran (tidakdiinputkan)
- Gaji :besarnya gaji pokok yang diterima tiap bulan (diinputkan)
Method-method
yangharusada :
hitungGaji() :untuk menghitung gaji bersih
pegawai, dimana untuk
pegawai kontrak = UangMakan
+ Gaji, pegawai tetap = Tunjangan + Uang Makan +Gaji
̇ lihatData():untuk menampilkan data-data pegawai
secara lengkap beserta
total
gaji yang
diterima (gajibersih)
Dari kedua class diatas,analisa dan desainlah super class yang
tepat untuk kasus tersebut.
Setelah
itu buatlah class utama
yaitu
class PegawaiMajuMundur
(yang
menggunakan class-class diatas) yang memilikimenu utamasebagaiberikut:
HALAMAN UTAMA :
1. Input DataPegawai
2. LihatDataPegawai
3. Keluar
PilihanAnda[1/2/3] ? .. .
Tentukanpula
modifier yang tepatuntuksemua class diatas(termasuksuperclass-nya, manaygfinal
class danmana yang abstract class). Andadapatmenggunakanteknik
polymorphism dalammenyelesaikanpermasalahanini.
jawaban:
SINTAK PEGAWAIMANJU MUNDUR:
public class PegawaiMajuMundur
{
//atribut
private String Nama;
private int NIP;
private int Masakontrak;
private int Uangmakan;
private int Gaji;
private int Tunjangan;
private int Absen;
//setter
public void setNama(String nama)
{
Nama = nama;
}
public void setNIP(int nip)
{
NIP = nip;
}
public void setMasakontrak(int masakontrak)
{
Masakontrak = masakontrak;
}
public void setUangmakan(int uangmakan)
{
Uangmakan = uangmakan;
}
public void setAbsen(int absen)
{
Absen = absen;
}
public void setTunjangan(int tunjangan)
{
Tunjangan = tunjangan;
}
public void setGaji(int gaji)
{
Gaji = gaji;
}
//getter
public int getNIP()
{
return NIP;
}
public String getNama()
{
return Nama;
}
public int getMasakontrak()
{
return Masakontrak;
}
public int getAbsen()
{
return Absen;
}
public int getUangmakan()
{
return Uangmakan;
}
public int getTunjangan()
{
return Tunjangan;
}
public int getGaji()
{
return Gaji;
}
}
SINTAK PEGAWAI KONTRAK SEBAGAI BERIKUT:
class PegawaiKontrak extends PegawaiMajuMundur{
//atribut
private int Masakontrak;
PegawaiKontrak()
{ }
//setter
public void setNama(String nama)
{
super.setNama(nama);
}
public void setNIP(int nip)
{
super.setNIP(nip);
}
public void setUangmakan(int uangmakan)
{
super.setUangmakan(uangmakan);
}
//getter
public int getNIP()
{
return super.getNIP();
}
public String getNama()
{
return super.getNama();
}
public int getUangmakan()
{
return super.getUangmakan();
}
public int getAbsen()
{
return super.getAbsen();
}
public int getGaji()
{
return super.getGaji();
}
}
//atribut
private int Masakontrak;
PegawaiKontrak()
{ }
//setter
public void setNama(String nama)
{
super.setNama(nama);
}
public void setNIP(int nip)
{
super.setNIP(nip);
}
public void setUangmakan(int uangmakan)
{
super.setUangmakan(uangmakan);
}
//getter
public int getNIP()
{
return super.getNIP();
}
public String getNama()
{
return super.getNama();
}
public int getUangmakan()
{
return super.getUangmakan();
}
public int getAbsen()
{
return super.getAbsen();
}
public int getGaji()
{
return super.getGaji();
}
}
SINTAK PEGAWAI TETAP :
class PegawaiTetap extends PegawaiMajuMundur{
//atribut
private int Tunjangan;
PegawaiTetap()
{ }
//setter
public void setNama(String nama)
{
super.setNama(nama);
}
public void setNIP(int nip)
{
super.setNIP(nip);
}
public void setTunjangan(int tunjangan)
{
Tunjangan = tunjangan;
}
//getter
public int getNIP()
{
return super.getNIP();
}
public String getNama()
{
return super.getNama();
}
public int getTunjangan()
{
return Tunjangan;
}
}
//atribut
private int Tunjangan;
PegawaiTetap()
{ }
//setter
public void setNama(String nama)
{
super.setNama(nama);
}
public void setNIP(int nip)
{
super.setNIP(nip);
}
public void setTunjangan(int tunjangan)
{
Tunjangan = tunjangan;
}
//getter
public int getNIP()
{
return super.getNIP();
}
public String getNama()
{
return super.getNama();
}
public int getTunjangan()
{
return Tunjangan;
}
}
KELAS UTAMA
import java.lang.*;
import java.io.*;
public class ProgramMenu
{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
Object [] datax = new Object [5];
Object [] datay = new Object [5];
PegawaiTetap x;
PegawaiKontrak y;
int counterx = 0;
int countery = 0;
int Gapok;
int Gaji;
int z=0;
int d=0;
int f=0;
int tunjangan=200000;
while (true)
{
System.out.println("==========================");
System.out.println("\tMenu Pegawai");
System.out.println("==========================");
System.out.println("1. Input Data Pegawai");
System.out.println("2. Tampil Data");
System.out.println("3. Keluar");
System.out.print("Masukan pilihan : ");
int pilih = Integer.parseInt (br.readLine());
System.out.println();
switch (pilih)
{
case 1:
System.out.println("===================");
System.out.println("Input Data Pegawai");
System.out.println("===================");
System.out.println("1. Input Data Pegawai Tetap");
System.out.println("2. Input Data Pegawai Kontrak");
System.out.println("3. Kembali ke Menu");
System.out.print("Masukan pilihan : ");
pilih = Integer.parseInt (br.readLine());
System.out.println();
switch (pilih)
{
case 1:
System.out.println("=====================");
System.out.println("Input Pegawai Tetap");
System.out.println("=====================");
System.out.print("Masukan NIP : ");
int a = Integer.parseInt (br.readLine());
System.out.print("Masukan Nama : ");
String b = br.readLine();
System.out.print("Masukan Kehadiran : ");
int c = Integer.parseInt (br.readLine());
System.out.print("Masukan Gaji : ");
int e = Integer.parseInt (br.readLine());
x = new PegawaiTetap();
((PegawaiMajuMundur)x).setNIP(a);
((PegawaiMajuMundur)x).setNama(b);
((PegawaiMajuMundur)x).setAbsen(c);
((PegawaiMajuMundur)x).setGaji(e);
datax[counterx] = x;
counterx++;
d=(6000*c);
z=(tunjangan+d+e);
break;
case 2:
System.out.println("======================");
System.out.println("Input Pegawai Kontrak");
System.out.println("======================");
System.out.print("Masukan NIP : ");
int j = Integer.parseInt (br.readLine());
System.out.print("Masukan Nama : ");
String k = br.readLine();
System.out.print("Masukan Kehadiran : ");
int n = Integer.parseInt (br.readLine());
System.out.print("Masukan Masakontrak : ");
int l = Integer.parseInt (br.readLine());
System.out.print("Masukan Gaji : ");
int m = Integer.parseInt (br.readLine());
y = new PegawaiKontrak();
((PegawaiMajuMundur)y).setNIP(j);
((PegawaiMajuMundur)y).setNama(k);
((PegawaiMajuMundur)y).setAbsen(n);
((PegawaiMajuMundur)y).setMasakontrak(l);
((PegawaiMajuMundur)y).setGaji(m);
datay[countery] = y;
countery++;
d=(6000*n);
f=(m+d);
break;
case 3: break;}
case 2:
for (int i = 0; i<counterx; i++) {
System.out.println("=====================");
System.out.println(" Data Pegawai Tetap");
System.out.println("=====================");
System.out.println("NIP = " + ((PegawaiTetap)datax[i]).getNIP());
System.out.println("Nama = " + ((PegawaiTetap)datax[i]).getNama());
System.out.println("Masa kontrak = " + ((PegawaiTetap)datax[i]).getMasakontrak());
System.out.println("Tunjangan = " +tunjangan+"\n");
System.out.println("Uang Makan = "+d+"\n");
System.out.println("Gaji Pokok = " + ((PegawaiTetap)datax[i]).getGaji());
//Tinggal Buat If untuk gaji
System.out.println("Gaji bersih = "+ z);
System.out.println();}
for (int o = 0; o<countery; o++) {
System.out.println("======================");
System.out.println("Data Pegawai Kontrak");
System.out.println("======================");
System.out.println("NIP = " + ((PegawaiKontrak)datay[o]).getNIP());
System.out.println("Nama = " + ((PegawaiKontrak)datay[o]).getNama());
System.out.println("Masa kontrak = " + ((PegawaiKontrak)datay[o]).getMasakontrak());
System.out.println("Uang Makan = "+d+"\n");
System.out.println("Gaji Pokok = " + ((PegawaiTetap)datax[o]).getGaji());
//Tinggal Buat If untuk gaji
System.out.println("Gaji Bersih= "+f);
System.out.println();
}
break;
case 3:
System.exit(0);
break;
}
System.out.println();
}}}
HASIL EKSEKUSI SEBAGAI BERIKUT :
import java.io.*;
public class ProgramMenu
{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
Object [] datax = new Object [5];
Object [] datay = new Object [5];
PegawaiTetap x;
PegawaiKontrak y;
int counterx = 0;
int countery = 0;
int Gapok;
int Gaji;
int z=0;
int d=0;
int f=0;
int tunjangan=200000;
while (true)
{
System.out.println("==========================");
System.out.println("\tMenu Pegawai");
System.out.println("==========================");
System.out.println("1. Input Data Pegawai");
System.out.println("2. Tampil Data");
System.out.println("3. Keluar");
System.out.print("Masukan pilihan : ");
int pilih = Integer.parseInt (br.readLine());
System.out.println();
switch (pilih)
{
case 1:
System.out.println("===================");
System.out.println("Input Data Pegawai");
System.out.println("===================");
System.out.println("1. Input Data Pegawai Tetap");
System.out.println("2. Input Data Pegawai Kontrak");
System.out.println("3. Kembali ke Menu");
System.out.print("Masukan pilihan : ");
pilih = Integer.parseInt (br.readLine());
System.out.println();
switch (pilih)
{
case 1:
System.out.println("=====================");
System.out.println("Input Pegawai Tetap");
System.out.println("=====================");
System.out.print("Masukan NIP : ");
int a = Integer.parseInt (br.readLine());
System.out.print("Masukan Nama : ");
String b = br.readLine();
System.out.print("Masukan Kehadiran : ");
int c = Integer.parseInt (br.readLine());
System.out.print("Masukan Gaji : ");
int e = Integer.parseInt (br.readLine());
x = new PegawaiTetap();
((PegawaiMajuMundur)x).setNIP(a);
((PegawaiMajuMundur)x).setNama(b);
((PegawaiMajuMundur)x).setAbsen(c);
((PegawaiMajuMundur)x).setGaji(e);
datax[counterx] = x;
counterx++;
d=(6000*c);
z=(tunjangan+d+e);
break;
case 2:
System.out.println("======================");
System.out.println("Input Pegawai Kontrak");
System.out.println("======================");
System.out.print("Masukan NIP : ");
int j = Integer.parseInt (br.readLine());
System.out.print("Masukan Nama : ");
String k = br.readLine();
System.out.print("Masukan Kehadiran : ");
int n = Integer.parseInt (br.readLine());
System.out.print("Masukan Masakontrak : ");
int l = Integer.parseInt (br.readLine());
System.out.print("Masukan Gaji : ");
int m = Integer.parseInt (br.readLine());
y = new PegawaiKontrak();
((PegawaiMajuMundur)y).setNIP(j);
((PegawaiMajuMundur)y).setNama(k);
((PegawaiMajuMundur)y).setAbsen(n);
((PegawaiMajuMundur)y).setMasakontrak(l);
((PegawaiMajuMundur)y).setGaji(m);
datay[countery] = y;
countery++;
d=(6000*n);
f=(m+d);
break;
case 3: break;}
case 2:
for (int i = 0; i<counterx; i++) {
System.out.println("=====================");
System.out.println(" Data Pegawai Tetap");
System.out.println("=====================");
System.out.println("NIP = " + ((PegawaiTetap)datax[i]).getNIP());
System.out.println("Nama = " + ((PegawaiTetap)datax[i]).getNama());
System.out.println("Masa kontrak = " + ((PegawaiTetap)datax[i]).getMasakontrak());
System.out.println("Tunjangan = " +tunjangan+"\n");
System.out.println("Uang Makan = "+d+"\n");
System.out.println("Gaji Pokok = " + ((PegawaiTetap)datax[i]).getGaji());
//Tinggal Buat If untuk gaji
System.out.println("Gaji bersih = "+ z);
System.out.println();}
for (int o = 0; o<countery; o++) {
System.out.println("======================");
System.out.println("Data Pegawai Kontrak");
System.out.println("======================");
System.out.println("NIP = " + ((PegawaiKontrak)datay[o]).getNIP());
System.out.println("Nama = " + ((PegawaiKontrak)datay[o]).getNama());
System.out.println("Masa kontrak = " + ((PegawaiKontrak)datay[o]).getMasakontrak());
System.out.println("Uang Makan = "+d+"\n");
System.out.println("Gaji Pokok = " + ((PegawaiTetap)datax[o]).getGaji());
//Tinggal Buat If untuk gaji
System.out.println("Gaji Bersih= "+f);
System.out.println();
}
break;
case 3:
System.exit(0);
break;
}
System.out.println();
}}}
HASIL EKSEKUSI SEBAGAI BERIKUT :
--------------------Configuration: <Default>--------------------
==========================
Menu Pegawai
==========================
1. Input Data Pegawai
2. Tampil Data
3. Keluar
Masukan pilihan : 1
===================
Input Data Pegawai
===================
1. Input Data Pegawai Tetap
2. Input Data Pegawai Kontrak
3. Kembali ke Menu
Masukan pilihan : 1
=====================
Input Pegawai Tetap
=====================
Masukan NIP : 2011091132
Masukan Nama : WAWAN WAHYU
Masukan Kehadiran : 30
Masukan Gaji : 3000000
=====================
Data Pegawai Tetap
=====================
NIP = 2011091132
Nama = WAWAN WAHYU
Masa kontrak = 0
Tunjangan = 200000
Uang Makan = 180000
Gaji Pokok = 3000000
Gaji bersih = 3380000
==========================
Menu Pegawai
==========================
1. Input Data Pegawai
2. Tampil Data
3. Keluar
Masukan pilihan :
==========================
Menu Pegawai
==========================
1. Input Data Pegawai
2. Tampil Data
3. Keluar
Masukan pilihan : 1
===================
Input Data Pegawai
===================
1. Input Data Pegawai Tetap
2. Input Data Pegawai Kontrak
3. Kembali ke Menu
Masukan pilihan : 1
=====================
Input Pegawai Tetap
=====================
Masukan NIP : 2011091132
Masukan Nama : WAWAN WAHYU
Masukan Kehadiran : 30
Masukan Gaji : 3000000
=====================
Data Pegawai Tetap
=====================
NIP = 2011091132
Nama = WAWAN WAHYU
Masa kontrak = 0
Tunjangan = 200000
Uang Makan = 180000
Gaji Pokok = 3000000
Gaji bersih = 3380000
==========================
Menu Pegawai
==========================
1. Input Data Pegawai
2. Tampil Data
3. Keluar
Masukan pilihan :
Kern gan semoga allah memberikan pahala yang berlimpah
ReplyDeleteamin. . .