Jumat, 05 Januari 2018

, ,

PEMROGRAMAN LANJUT BAB 6 : INHERITANCE

Laporan Praktikum Pemrograman Lanjut Bab 6 Fakultas Ilmu Komputer Univeristas Brawijaya 2016/2017

Soal :
Susunlah program sesuai studi kasus dibawah.
1.       Pegawai.java
Buatlah class induk Pegawai dengan definisi sebagai berikut
- nama: String
- noIndukPegawai: String
- tahunMasuk: Date
- gajiPokok: double
- keluarga: Boolean
- jumlahAnak: int
+ double getGajiPokok()
+ double getBonus()
+ double getTunjangan()
+ double getTotalGaji()
a. Bonus didapatkan dari lama kerja (tahun sekarang dikurangi tahun masuk)
- Jika masa kerja dibawah 1 tahun tidak mendapat bonus
- Jika masa kerja 1-5 tahun mendapat bonus 5% x gajiPokok x lama kerja
- Jika masa kerja diatas 5 tahun mendapat bonus 10% x gajiPokok x lama kerja
b. Tunjangan didapatkan bila pegawai sudah berkeluarga
- Jika sudah berkeluarga, mendapat tunjangan 5% dari gaji pokok
- Jika memiliki anak mendapat tunjangan 5% dari gaji pokok per Anak yang dimiliki (maksimal 2 anak)
c. Total gaji diperoleh dari gaji pokok + bonus + tunjangan

2.       Manager.java
Buatlah class Manager yang inherit class Pegawai dengan ketentuan Manager mendapat tunjangan jabatan sebesar 10% dari total gaji

3.       Sales.java
Buatlah class Sales yang inherit class Pegawai dengan definisi:
- hargaBarang: double
- stockBarang: int
- barangTerjual: int
+ double getBonusTambahan()
Sales memiliki bonusTambahan dengan ketentuan jika barangTerjual lebih dari 70% stockBarang, maka mendapat bonusTambahan 10% dari hargaBarang x barangTerjual Jika tidak, maka bonusTambahan yang diperoleh hanya 3% dari hargaBarang x barangTerjual

4.       Programmer.java
Buatlah class Programmer yang inherit class Pegawai dengan definisi
- jamKerja: int
+ double getBonusLembur()
Freelancer akan mendapat bonusLembur jika jamKerja lebih dari 10 jam, sejumlah 5% x gajiPokok x jamKerja - 10 jam.

Test Case:
1. Pegawai tahunMasuk 2015, berkeluarga, 2 anak, gajiPokok 3jt
2. Pegawai tahunMasuk 2010, tidak berkeluarga, gajiPokok 3jt
3. Pegawai tahunMasuk 2005, berkeluarga, 5 anak, gajiPokok 3jt
4. Manager tahunMasuk 2009, tidak berkeluarga, gajiPokok 4jt
5. Manager tahunMasuk 2014, berkeluarga, 2 anak, gajiPokok 4jt
6. Sales tahunMasuk 2012, berkeluarga, 4 anak, hargaBarang 25rb, stockBarang 100, barangTerjual 50, gajiPokok 2jt
7. Sales tahunMasuk 2014, berkeluarga, 1 anak, hargaBarang 10rb, stockBarang 250, barangTerjual 220, gajiPokok 2jt
8. Freelancer tahunMasuk 2011, tidak berkeluarga, jamKerja 10 jam, gajiPokok 2,5jt
9. Freelancer tahunMasuk 2013, tidak berkeluarga, jamKerja 12 jam, gajiPokok 2,5jt


Tampilkan totalGaji berserta perhitungannya (gajipokok, bonus, tunjangan) dari setiap Test Case 

Source code :
Class Worker
package bab6inheritance;

import java.time.Year;
import java.util.Calendar;
import static java.util.Calendar.DATE;
import static java.util.Calendar.MONTH;
import static java.util.Calendar.YEAR;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;

public class Worker {

    private String name;
    private int hireYear, diff, childNumb, workYear;
    private double salary, subsidy, bonus;
    private boolean family;

    public Worker(String name, int hireYear, boolean family, int childNumb, double salary) {
        this.name = name;
        this.hireYear = hireYear;
        this.family = family;
        this.childNumb = childNumb;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public int getHireYear() {
        return hireYear;
    }

    public double getSalary() {
        return salary;
    }

    public double getBonus(int hireYear) {
        this.hireYear = hireYear;
        diff = 2017 - hireYear;
        if (diff < 1) {
            bonus = 0;
        } else if (diff >= 1 && diff <= 5) {
            bonus = ((5 * salary) * diff) / 100;
        } else if (diff > 5) {
            bonus = ((10 * salary) * diff) / 100;
        }
        return bonus;
    }

    public double getSubsidy(boolean family, int childNumb) {
        this.family = family;
        this.childNumb = childNumb;
        if (family == true && childNumb > 0 && childNumb <= 2) {
            subsidy = ((5 * salary) / 100) + ((5 * salary) / 100) * childNumb;
        } else if (family == true && childNumb == 0) {
            subsidy = (5 * salary) / 100;
        } else if (family == true && childNumb > 2) {
            subsidy = ((5 * salary) / 100) + ((5 * salary) / 100) * 2;
        } else if (family == false) {
            subsidy = 0;
        }
        return subsidy;
    }

    public double getTotal(double salary) {
        this.salary = salary;
        salary += subsidy + bonus;
        return salary;
    }
}

Class Manager1
package bab6inheritance;

import java.time.Year;

public class Manager1 extends Worker {

    private double salary, sbsd;

    public Manager1(String name, int hireYear, boolean family, int childNumb, double salary) {
        super(name, hireYear, family, childNumb, salary);
    }

    public double getSubsidy() {
        sbsd = (10 * super.getSalary()) / 100;
        return sbsd;
    }

    public double getTotal() {
        double tot = super.getSalary() + super.getTotal(salary) + sbsd;
        return tot;
    }
}

Class Sales
package bab6inheritance;

public class Sales extends Worker {

    private double salary, price, addBonus;
    private int stock, sold;

    public Sales(String name, int hireYear, boolean family, int childNumb, double salary) {
        super(name, hireYear, family, childNumb, salary);
    }

    public double getPrice() {
        return price;
    }

    public int getStock() {
        return stock;
    }

    public int getSold() {
        return sold;
    }

    public double getAdditionalBonus(double price, int stock, int sold) {
        this.price = price;
        this.stock = stock;
        this.sold = sold;
        if (sold > (70 * stock) / 100) {
            addBonus = ((10 * price) * sold) / 100;;
        } else {
            addBonus = ((3 * price) * sold) / 100;
        }
        return addBonus;
    }

    public double getTotal() {
        double tot = super.getSalary() + super.getTotal(salary) + addBonus;
        return tot;
    }
}

Class Programmer
package bab6inheritance;

public class Programmer extends Worker {

    private int workHour;
    private double salary, total;

    public Programmer(String name, int hireYear, boolean family, int childNumb, double salary) {
        super(name, hireYear, family, childNumb, salary);
    }

    public int getWH() {
        return workHour;
    }

    public double getOvertimeBonus(int workHour) {
        this.workHour = workHour;
        if (workHour > 10) {
            total = ((5 * super.getSalary()) * (workHour - 10)) / 100;
        } else {
            total = super.getSalary();
        }
        return total;
    }

    public double getTotal() {
        double tot = super.getSalary() + super.getTotal(salary) + total;
        return tot;
    }
}

Class MainWorker
package bab6inheritance;

import java.util.Scanner;

public class MainWorker {

    public static void main(String[] args) {
        Scanner sausan = new Scanner(System.in);
        int childNumb = 0, stock, sold, workHour;
        double price;
        System.out.print("Name ");
        String name = sausan.nextLine();
        System.out.print("Hire year ");
        int hireYear = sausan.nextInt();
        System.out.print("Married? ");
        boolean family = sausan.nextBoolean();
        if (family == true) {
            System.out.print("How many child do you have? ");
            childNumb = sausan.nextInt();
        }
        System.out.print("Base salary ");
        double salary = sausan.nextDouble();
        System.out.println("Division \n1.Manager\n2.Worker\n3.Salesman\n4.Freelancer");
        int choose = sausan.nextInt();
        if (choose == 1) {
            Manager1 m = new Manager1(name, hireYear, family, childNumb, salary);
            System.out.println("><><><><><><><><><><>");
            System.out.println("Name : " + m.getName());
            System.out.println("Hire year :" + m.getHireYear());
            System.out.println("Base salary :" + m.getSalary());
            System.out.println("Subsidy :" + m.getSubsidy());
            System.out.println("Bonus :" + m.getBonus(hireYear));
            System.out.println("Total salary :" + m.getTotal());
        } else if (choose == 2) {
            Worker w = new Worker(name, hireYear, family, childNumb, salary);
            System.out.println("><><><><><><><><><><>");
            System.out.println("Name : " + w.getName());
            System.out.println("Hire year :" + w.getHireYear());
            System.out.println("Base salary :" + w.getSalary());
            System.out.println("Subsidy :" + w.getSubsidy(family, childNumb));
            System.out.println("Bonus :" + w.getBonus(hireYear));
            System.out.println("Total salary :" + w.getTotal(salary));
        } else if (choose == 3) {
            Sales s = new Sales(name, hireYear, family, childNumb, salary);
            System.out.print("Price ");
            price = sausan.nextDouble();
            System.out.print("Stock ");
            stock = sausan.nextInt();
            System.out.print("Sold ");
            sold = sausan.nextInt();
            System.out.println("><><><><><><><><><><>");
            System.out.println("Name : " + s.getName());
            System.out.println("Hire year :" + s.getHireYear());
            System.out.println("Base salary :" + s.getSalary());
            System.out.println("Subsidy :" + s.getSubsidy(family, childNumb));
            System.out.println("Bonus :" + s.getBonus(hireYear));
            System.out.println("Additional Bonus :" + s.getAdditionalBonus(price, stock, sold));
            System.out.println("Total salary :" + s.getTotal());
        } else if (choose == 4) {
            Programmer p = new Programmer(name, hireYear, family, childNumb, salary);
            System.out.println("Work hour ");
            workHour = sausan.nextInt();
            System.out.println("><><><><><><><><><><>");
            System.out.println("Name : " + p.getName());
            System.out.println("Hire year :" + p.getHireYear());
            System.out.println("Base salary :" + p.getSalary());
            System.out.println("Subsidy :" + p.getSubsidy(family, childNumb));
            System.out.println("Bonus :" + p.getBonus(hireYear));
            System.out.println("Overtime Bonus :" + p.getOvertimeBonus(workHour));
            System.out.println("Total salary :" + p.getTotal());
        }

    }
}


Download the file here
Share:

0 comments:

Posting Komentar