package JPA610; //利用套件方式將類別打包
abstract class work { //建立抽象類別讓子類別可以繼承
String wno;
work(String s) {wno=s;}
abstract double monthPay(); //建立一個抽象月收入類別
}
// 建立一個SalaryWorker年薪制類別,繼承自work,並加入紅利變數
class SalaryWorker extends work {
int mp; //年薪
int redp=0; //紅利(預設為0,可供主管使用)
//SalaryWorker類別包含2個建構子 :員工編號及年薪資
SalaryWorker(String s, int i) {super(s); mp=i;}
//算出年薪制員工的月薪資
double monthPay() {return (mp/12.0+redp);}
}//建立一個HourlyWorker時薪制類別,繼承自work
class HourlyWorker extends work {
int hr, hp; //初始化3個建構子:員工編號 ,時數及時薪
HourlyWorker(String s, int i1, int i2) {
super(s); hr=i2; hp=i1;
} //算出時薪制員工的月薪資
double monthPay() {return hr*hp;}
} //建立一個Manager主管類別,繼承自SalaryWorker
class Manager extends SalaryWorker {
Manager(String s, int i, int i1) {
super(s,i);
redp = i1;
}//初始化3個建構子:員工編號,年薪,每月紅利
}
public class JPA610_1 {
public static void main(String argv[]) {
SalaryWorker sw1 = new SalaryWorker("96001",180000);
System.out.println("SalaryWorker:" + sw1.monthPay());
HourlyWorker hw1 = new HourlyWorker("96002", 100, 160);
System.out.println("HourlyWorker:" + hw1.monthPay());
Manager ma1 = new Manager("97001", 240000, 5000);
System.out.println("Manager:" + ma1.monthPay());
}
}
--------------------------------------------------
package JPA610;
abstract class work {
String wno;
work(String s) {wno=s;}
abstract double monthPay();
void ishight(work k) {
if (monthPay()>k.monthPay())
System.out.println(wno+"較高");
else
System.out.println(k.wno+"較高");
}
double monthTaxes() {return monthPay()*.15;}
}
public class JPA610_2 {
public static void main(String argv[]) {
SalaryWorker sw1 = new SalaryWorker("96001",180000);
System.out.println("SalaryWorker:" + sw1.monthPay());
HourlyWorker hw1 = new HourlyWorker("96002", 100, 160);
System.out.println("HourlyWorker:" + hw1.monthPay());
Manager ma1 = new Manager("97001", 240000, 5000);
System.out.println("Manager:" + ma1.monthPay());
sw1.ishight(hw1);
hw1.ishight(ma1);
System.out.println("SalaryWorker稅額:" + sw1.monthTaxes());
System.out.println("HourlyWorker稅額:" + hw1.monthTaxes());
System.out.println("Manager稅額:" + ma1.monthTaxes());
}
}
----------------------------------------------
package JPA610; //利用套件方式將類別打包
abstract class work { //建立抽象類別讓子類別可以繼承
String wno;
static int count=0; //新增計算人數的變數
static double tottax=0.0; //應稅額加總變數
work(String s) {wno=s; count++;}
abstract double monthPay(); //建立一個抽象月收入類別
static double getAverageTax() { //計算平均稅額
return ((double)tottax/count);
}
void ishight(work k) {
if (monthPay()>k.monthPay())
System.out.println(wno+"較高");
else
System.out.println(k.wno+"較高");
} //計算每人每個月的應付稅額
double monthTaxes() {
double mt = monthPay()*.15;
tottax += mt;
return (mt);
}
}
public class JPA610_3 {
public static void main(String argv[]) {
SalaryWorker sw1 = new SalaryWorker("96001",180000);
System.out.println("SalaryWorker:" + sw1.monthPay());
HourlyWorker hw1 = new HourlyWorker("96002", 100, 160);
System.out.println("HourlyWorker:" + hw1.monthPay());
Manager ma1 = new Manager("97001", 240000, 5000);
System.out.println("Manager:" + ma1.monthPay());
sw1.ishight(hw1);
hw1.ishight(ma1);
System.out.println("SalaryWorker稅額:" + sw1.monthTaxes());
System.out.println("HourlyWorker稅額:" + hw1.monthTaxes());
System.out.println("Manager稅額:" + ma1.monthTaxes());
System.out.println("平均稅額:" + work.getAverageTax());
}
}
----------------------------------------
package JPA610; //利用套件方式將類別打包
import java.util.HashMap;
abstract class work { //建立抽象類別讓子類別可以繼承
String wno;
static int count=0; //新增計算人數的變數
static double tottax=0.0; //應稅額加總變數
work(String s) {wno=s; count++;}
abstract double monthPay(); //建立一個抽象月收入類別
static double getAverageTax() { //計算平均稅額
return ((double)tottax/count);
}
void ishight(work k) {
if (monthPay()>k.monthPay())
System.out.println(wno+"較高");
else
System.out.println(k.wno+"較高");
} //計算每人每個月的應付稅額
double monthTaxes() {
double mt = monthPay()*.15;
tottax += mt;
return (mt);
}
}
class Management { //建立一個管理?別
HashMap worker; //初始化建構子 HashMap
Management() {worker=new HashMap();}
//建立方法put可將物件放入HashMap
void put(String s, work w) {
worker.put(s,w);
}
//建立方法afterTax,可算出扣完稅後的實拿薪資
double afterTax(String s){
work wt=(work)worker.get(s);
return wt.monthPay()-wt.monthTaxes();
}
}
public class JPA610_4 {
public static void main(String argv[]) {
SalaryWorker sw1 = new SalaryWorker("96001",180000);
System.out.println("SalaryWorker:" + sw1.monthPay());
HourlyWorker hw1 = new HourlyWorker("96002", 100, 160);
System.out.println("HourlyWorker:" + hw1.monthPay());
Manager ma1 = new Manager("97001", 240000, 5000);
System.out.println("Manager:" + ma1.monthPay());
sw1.ishight(hw1);
hw1.ishight(ma1);
System.out.println("SalaryWorker稅額:" + sw1.monthTaxes());
System.out.println("HourlyWorker稅額:" + hw1.monthTaxes());
System.out.println("Manager稅額:" + ma1.monthTaxes());
System.out.println("平均稅額:" + work.getAverageTax());
Management m = new Management();
m.put("96001", sw1);
m.put("96002", hw1);
m.put("97001", ma1);
System.out.println("97001 的稅後薪資: " + m.afterTax("97001"));
}
}
----------------------------------------
package JPA610; //利用套件方式將類別打包
import java.util.HashMap;
import java.util.Iterator;
abstract class work { //建立抽象類別讓子類別可以繼承
String wno;
static int count=0; //新增計算人數的變數
static double tottax=0.0; //應稅額加總變數
work(String s) {wno=s; count++;}
abstract double monthPay(); //建立一個抽象月收入類別
static double getAverageTax() { //計算平均稅額
return ((double)tottax/count);
}
void ishight(work k) {
if (monthPay()>k.monthPay())
System.out.println(wno+"較高");
else
System.out.println(k.wno+"較高");
} //計算每人每個月的應付稅額
double monthTaxes() {
double mt = monthPay()*.15;
tottax += mt;
return (mt);
}
}
class Management { //建立一個管理別
double total=0;
HashMap worker; //初始化建構子 HashMap
Management() {worker=new HashMap();}
//建立方法put可將物件放入HashMap
void put(String s, work w) {
worker.put(s,w);
}
double afterTax(String s){
work wt=(work)worker.get(s);
return wt.monthPay()-wt.monthTaxes();
}
double totalSalary() throws limex {
for (Iterator iterator=worker.values().iterator();iterator.hasNext();) {
work www = (work)iterator.next();
total = www.monthPay()+total;
if (total > 50000)
throw new limex(total);
}
return total;
}
}
class limex extends Exception { //建立類別limex並繼承Exception
double dd;
limex(double d) {dd=d;}
double getAm() {return dd;} //傳回員工總月薪的實際數字
}
public class JPA610_5 {
public static void main(String argv[]) {
SalaryWorker sw1 = new SalaryWorker("96001",180000);
System.out.println("SalaryWorker:" + sw1.monthPay());
HourlyWorker hw1 = new HourlyWorker("96002", 100, 160);
System.out.println("HourlyWorker:" + hw1.monthPay());
Manager ma1 = new Manager("97001", 240000, 5000);
System.out.println("Manager:" + ma1.monthPay());
sw1.ishight(hw1);
hw1.ishight(ma1);
System.out.println("SalaryWorker稅額:" + sw1.monthTaxes());
System.out.println("HourlyWorker稅額:" + hw1.monthTaxes());
System.out.println("Manager稅額:" + ma1.monthTaxes());
System.out.println("平均稅額:" + work.getAverageTax());
Management m = new Management();
m.put("96001", sw1);
m.put("96002", hw1);
m.put("97001", ma1);
System.out.println("97001 的稅後薪資: " + m.afterTax("97001"));
try {m.totalSalary();
} catch (limex e) {
System.out.println("Total salary exceed limit:"+e.getAm());}
}
}
留言列表