2学期作业

package EmployeePackage;
//Employee abstract superclass.
public abstract class EmployeeClass{
private final String firstName;
private final String lastName;
private final String socialSecurityNumber;

// constructor
public EmployeeClass(String firstName, String lastName, 
               String socialSecurityNumber){
   this.firstName = firstName;
   this.lastName = lastName;
   this.socialSecurityNumber = socialSecurityNumber;
}

// return first name
public String getFirstName(){
   return firstName;
}

// return last name
public String getLastName(){
   return lastName;
}

// return social security number
public String getSocialSecurityNumber(){
   return socialSecurityNumber;
}

// return String representation of Employee object
@Override
public String toString(){
   return String.format("%s %s\nsocial security number: %s", 
                        getFirstName(), getLastName(), getSocialSecurityNumber());
}

// abstract method must be overridden by concrete subclasses
public abstract double earnings(); // no implementation here
} // end abstract class Employee

package EmployeePackage;
public class HourlyEmployeeClass extends EmployeeClass{
    private double wage; // wage per hour
    private double hours; // hours worked for week

    // constructor
    public HourlyEmployeeClass(String firstName, String lastName,
                          String socialSecurityNumber, double wage, double hours){
        super(firstName, lastName, socialSecurityNumber);

        if (wage < 0.0) // validate wage
            throw new IllegalArgumentException(
                "Hourly wage must be >= 0.0");

        if ((hours < 0.0) || (hours > 168.0)) // validate hours
            throw new IllegalArgumentException(
                "Hours worked must be >= 0.0 and <= 168.0");

        this.wage = wage;
        this.hours = hours;
    }

    // set wage
    public void setWage(double wage){
        if (wage < 0.0) // validate wage
            throw new IllegalArgumentException(
                "Hourly wage must be >= 0.0");

        this.wage = wage;
    }

    // return wage
    public double getWage(){
        return wage;
    }

    // set hours worked
    public void setHours(double hours){
        if ((hours < 0.0) || (hours > 168.0)) // validate hours
            throw new IllegalArgumentException(
                "Hours worked must be >= 0.0 and <= 168.0");

        this.hours = hours;
    }

    // return hours worked
    public double getHours(){
        return hours;
    }

    // calculate earnings; override abstract method earnings in Employee
    @Override
    public double earnings(){
        if (getHours() <= 40) // no overtime
            return getWage() * getHours();
        else
            return 40 * getWage() + (getHours() - 40) * getWage() * 1.5;
    }

    @Override // return String representation of HourlyEmployee object
    public String toString(){
        return String.format("hourly employee: %s%n%s: $%,.2f; %s: %,.2f",
                             super.toString(), "hourly wage", getWage(),
                             "hours worked", getHours());
    }
} // end class HourlyEmployee
package EmployeePackage;
//SalariedEmployee concrete class extends abstract class Employee.
public class SalariedEmployeeClass extends EmployeeClass{
private double weeklySalary;

// constructor
public SalariedEmployeeClass(String firstName, String lastName,
                       String socialSecurityNumber, double weeklySalary){
   super(firstName, lastName, socialSecurityNumber);
   
   if (weeklySalary < 0.0)
       throw new IllegalArgumentException(
           "Weekly salary must be >= 0.0");
   
   this.weeklySalary = weeklySalary;
}

// set salary
public void setWeeklySalary(double weeklySalary){
   if (weeklySalary < 0.0)
       throw new IllegalArgumentException(
           "Weekly salary must be >= 0.0");
   
   this.weeklySalary = weeklySalary;
}

// return salary
public double getWeeklySalary(){
   return weeklySalary;
}

// calculate earnings; override abstract method earnings in Employee
@Override
public double earnings(){
   return getWeeklySalary();
}

// return String representation of SalariedEmployee object
@Override
public String toString(){
   return String.format("salaried employee: %s\n%s: $%,.2f",
                        super.toString(), "weekly salary", getWeeklySalary());
}
} // end class SalariedEmployee
package EmployeePackage;
public class CommissionEmployee extends EmployeeClass{
 private double grossSales; // gross weekly sales
 private double commissionRate; // commission percentage

 // constructor
 public CommissionEmployee(String firstName, String lastName,
                           String socialSecurityNumber, double grossSales,
                           double commissionRate){
     super(firstName, lastName, socialSecurityNumber);

     if (commissionRate <= 0.0 || commissionRate >= 1.0) // validate
         throw new IllegalArgumentException(
             "Commission rate must be > 0.0 and < 1.0");

     if (grossSales < 0.0) // validate
         throw new IllegalArgumentException("Gross sales must be >= 0.0");

     this.grossSales = grossSales;
     this.commissionRate = commissionRate;
 }
 // other methods from previous screenshots above...

 // set gross sales amount
 public void setGrossSales(double grossSales){
     if (grossSales < 0.0) // validate
         throw new IllegalArgumentException("Gross sales must be >= 0.0");

     this.grossSales = grossSales;
 }

 // return gross sales amount
 public double getGrossSales(){
     return grossSales;
 }

 // set commission rate
 public void setCommissionRate(double commissionRate){
     if (commissionRate <= 0.0 || commissionRate >= 1.0) // validate
         throw new IllegalArgumentException(
             "Commission rate must be > 0.0 and < 1.0");

     this.commissionRate = commissionRate;
 }

 // return commission rate
 public double getCommissionRate(){
     return commissionRate;
 }

 // calculate earnings; override abstract method earnings in Employee
 @Override
 public double earnings(){
     return getCommissionRate() * getGrossSales();
 }

 // return String representation of CommissionEmployee object
 @Override
 public String toString(){	
     return String.format("%s: %s%n%s: $%,.2f; %s: %.2f",
                          "commission employee", super.toString(),
                          "gross sales", getGrossSales(),
                          "commission rate", getCommissionRate());
 }
} // end class CommissionEmployee
package EmployeePackage;
public class BasePlusCommissionEmployee extends CommissionEmployee{
 private double baseSalary; // base salary per week

 // constructor
 public BasePlusCommissionEmployee(String firstName, String lastName,
                                   String socialSecurityNumber, double grossSales,
                                   double commissionRate, double baseSalary){
     super(firstName, lastName, socialSecurityNumber, grossSales, commissionRate);

     if (baseSalary < 0.0) // validate baseSalary
         throw new IllegalArgumentException("Base salary must be >= 0.0");

     this.baseSalary = baseSalary;
 }

 // set base salary
 public void setBaseSalary(double baseSalary){
     if (baseSalary < 0.0) // validate baseSalary
         throw new IllegalArgumentException("Base salary must be >= 0.0");

     this.baseSalary = baseSalary;
 }

 // return base salary
 public double getBaseSalary(){
     return baseSalary;
 }

 // calculate earnings; override method earnings in CommissionEmployee
 @Override
 public double earnings(){
     return getBaseSalary() + super.earnings();
 }

 // return String representation of BasePlusCommissionEmployee object
 @Override
 public String toString(){
     //return String.format("%s: %s%n%s: $%,.2f; %s: %.2f %s: %.2f",
	 return String.format("%s %s: %s $%,.2f",
                          "base-salaried", super.toString(),
                          "base salary", getBaseSalary());
 }
} // end class BasePlusCommissionEmployee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值