class Employee
{
private String firstName, lastName, socialSecurityNumber;
public static void main(String [] args)
{
CommissionEmployeeTest.test();
for(int i = 0; i < 63; i++)
{
System.out.print("-");
}
System.out.println();
BasePlusCommissionEmployeeTest.test();
}
public Employee(String firstName, String lastName, String socialSecurityNumber)
{
this.firstName = firstName;
this.lastName = lastName;
this.socialSecurityNumber = socialSecurityNumber;
}
public String getFirstName()
{
return this.firstName;
}
public String getLastName()
{
return this.lastName;
}
public String getSocialSecurityNumber()
{
return this.socialSecurityNumber;
}
public String toString()
{
return String.format("%s: %s %s%n%s: %s%n",
"commission employee", getFirstName(), getLastName(),
"social security number", getSocialSecurityNumber());
}
}
class CommissionEmployee extends Employee
{
private Double grossSales, commissionRate;
// five-argument constructor
public CommissionEmployee(String firstName, String lastName,
String socialSecurityNumber, double grossSales,
double commissionRate)
{
super(firstName, lastName, socialSecurityNumber);
// if grossSales is invalid throw exception
if (grossSales < 0.0)
throw new IllegalArgumentException(
"Gross sales must be >= 0.0");
// if commissionRate is invalid throw exception
if (commissionRate <= 0.0 || commissionRate >= 1.0)
throw new IllegalArgumentException(
"Commission rate must be > 0.0 and < 1.0");
this.grossSales = grossSales;
this.commissionRate = commissionRate;
} // end constructor
// set gross sales amount
public void setGrossSales(double grossSales)
{
if (grossSales < 0.0)
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)
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
public double earnings()
{
return getCommissionRate() * getGrossSales();
}
@Override
public String toString()
{
return super.toString() + String.format("%s: %.2f%n%s: %.2f",
"gross sales", getGrossSales(),
"commission rate", getCommissionRate());
}
} // end class CommissionEmployee
class BasePlusCommissionEmployee extends CommissionEmployee
{
private double baseSalary; // base salary per week
// six-argument constructor
public BasePlusCommissionEmployee(String firstName, String lastName,
String socialSecurityNumber, double grossSales,
double commissionRate, double baseSalary)
{
super(firstName, lastName, socialSecurityNumber,
grossSales, commissionRate);
// if baseSalary is invalid throw exception
if (baseSalary < 0.0)
throw new IllegalArgumentException(
"Base salary must be >= 0.0");
this.baseSalary = baseSalary;
}
// set base salary
public void setBaseSalary(double baseSalary)
{
if (baseSalary < 0.0)
throw new IllegalArgumentException(
"Base salary must be >= 0.0");
this.baseSalary = baseSalary;
}
// return base salary
public double getBaseSalary()
{
return baseSalary;
}
// calculate earnings
@Override
public double earnings()
{
return getBaseSalary() + super.earnings();
}
// return String representation of BasePlusCommissionEmployee
@Override
public String toString()
{
return String.format("%s %s%n%s: %.2f", "base-salaried",
super.toString(), "base salary", getBaseSalary());
}
} // end class BasePlusCommissionEmployee
class BasePlusCommissionEmployeeTest
{
public static void test()
{
BasePlusCommissionEmployee employee = new BasePlusCommissionEmployee("Bob",
"Lewis", "333-33-3333", 5000, .04, 300);
System.out.printf("%nThis is the BasePluCommissionEmployeeTest.%n%n");
System.out.printf("Employee information obtained by get methods: %n");
System.out.printf("%s %s%n", "First name is", employee.getFirstName());
System.out.printf("%s %s%n", "Last name is", employee.getLastName());
System.out.printf("%s %s%n", "Social security number is",
employee.getSocialSecurityNumber());
System.out.printf("%s %.2f%n", "Gross sales is", employee.getGrossSales());
System.out.printf("%s %.2f%n", "Commission rate is", employee.getCommissionRate());
System.out.printf("%s %.2f%n", "Base salary is", employee.getBaseSalary());
employee.setBaseSalary(1000);
System.out.printf("%n%s:%n%n%s%n", "Updated employee information obtained by toString",
employee.toString());
}
}
class CommissionEmployeeTest
{
public static void test()
{
CommissionEmployee employee = new CommissionEmployee("Sue", "Jones",
"222-22-2222", 10000, .06);
System.out.printf("%nThis is the CommissionEmployeeTest.%n%n");
System.out.printf("Employee information obtained by get methods: %n");
System.out.printf("%s %s%n", "First name is", employee.getFirstName());
System.out.printf("%s %s%n", "Last name is", employee.getLastName());
System.out.printf("%s %s%n", "Social security number is",
employee.getSocialSecurityNumber());
System.out.printf("%s %.2f%n", "Gross sales is", employee.getGrossSales());
System.out.printf("%s %.2f%n", "Commission rate is", employee.getCommissionRate());
employee.setGrossSales(5000);
employee.setCommissionRate(.1);
System.out.printf("%n%s:%n%n%s%n", "Updated employee information obtained by toString",
employee.toString());
}
}