Skip to content Skip to sidebar Skip to footer

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();
        }
    }
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;
    }
    }

 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 :
--------------------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 :

1 comment for "CONTOH SOAL JAVA"

  1. Kern gan semoga allah memberikan pahala yang berlimpah
    amin. . .

    ReplyDelete