Latihan Soal Pewarisan, Overriding, dan Polymorfisme

Hasil Running

STUDI KASUS: Hitung Gaji di Sebuah Universitas

  • ?Terdapat dua golongan pegawai di universitas, yaitu Dosen dan Staf biasa. Semua pegawai mendapatkan gaji awal yang sama, yaitu 1.500.000
  • ?Gaji tambahan dosen dihitung dari jumlah sks yang diampu
  • ?Gaji tambahan staf dihitung dari jumlah kehadiran per bulan
  • ?Buatlah program untuk mencetak semua gaji pegawai

 

JAWAB:

Dari requirement di atas, kita bisa mendesain diagram class sebagai berikut:

Diagram Class
Diagram Class

 

IMPLEMENTASI DALAM BAHASA JAVA

Class Pegawai:

package penggajian;

/**
 *
 * @author AryaDharmaadi
 */
public class Pegawai {

    private String nip;
    private String nama;
    private String alamat;
    
    public Pegawai(){
        
    }

    public Pegawai(String nip, String nama, String alamat) {
        this.nip = nip;
        this.nama = nama;
        this.alamat = alamat;
    }
    
    public void setNama(String nama){
        this.nama = nama;
    }
    
    public String getNama(){
        return this.nama;
    }
    
    public int getGaji(){        
        return 1500000;
    }
}

Class Staf:

package penggajian;

/**
 *
 * @author AryaDharmaadi
 */
public class Staf extends Pegawai{
    
    private int jumlah_kehadiran;
    private final int TARIF_HARIAN = 50000;
    
    public Staf(){
        
    }

    public Staf(String nip, String nama, String alamat) {
        super(nip, nama, alamat);
    }    
    
    public void setKehadiran(int jumlah_kehadiran){
        this.jumlah_kehadiran = jumlah_kehadiran;
    }
    
    @Override
    public int getGaji(){
        int total_gaji = jumlah_kehadiran*TARIF_HARIAN;       
        return total_gaji+super.getGaji();
    }
}

Class Dosen:

package penggajian;

/**
 *
 * @author AryaDharmaadi
 */
public class Dosen extends Pegawai{

    private int jumlahSKS;
    private final int TARIF_SKS = 120000;
    
    public Dosen(){
        
    }

    public Dosen(String nip, String nama, String alamat) {
        super(nip, nama, alamat);
    }
    
    public void setSKS(int SKS){
        this.jumlahSKS = SKS;
    }
    
    @Override
    public int getGaji(){
        int total_gaji = jumlahSKS*TARIF_SKS;
        return total_gaji+super.getGaji();
    }
}

Class DaftarGaji:

package penggajian;

/**
 *
 * @author AryaDharmaadi
 */
public class DaftarGaji {
    
    private Pegawai[] listPegawai;
    private int jumlahPegawaiSekarang = 0;
    
    public DaftarGaji(int jumlah_pegawai){
        listPegawai = new Pegawai[jumlah_pegawai];
    }
    
    public void addPegawai(Pegawai p){
        listPegawai[jumlahPegawaiSekarang] = p;
        jumlahPegawaiSekarang++;
    }
    
    public void printSemuaGaji(){
        for (int i=0;i<jumlahPegawaiSekarang;i++){
            System.out.print(listPegawai[i].getNama()+" mendapatkan gaji ");
            System.out.println(listPegawai[i].getGaji());
        }
    }
}

Class ProgramUtama:

package penggajian;

/**
 *
 * @author AryaDharmaadi
 */
public class ProgramUtama {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        Staf s1 = new Staf();
        s1.setNama("Putu");
        s1.setKehadiran(20);
        
        Dosen d1 = new Dosen();
        d1.setNama("Dharmadi");
        d1.setSKS(12);
        
        Pegawai p1 = new Pegawai();
        p1.setNama("Kadek");
        
        DaftarGaji daftar_gaji = new DaftarGaji(3);
        daftar_gaji.addPegawai(s1);
        daftar_gaji.addPegawai(d1);
        daftar_gaji.addPegawai(p1);
        daftar_gaji.printSemuaGaji();
    }    
}

 

Hasil Running:

Hasil Running
Hasil Running

 

Selamat mencoba. Happy Coding ๐Ÿ™‚

Be the first to comment

Leave a Reply

Your email address will not be published.


*