In the book Java How to Program Early Objects, 10th edition in chapter 9, exerci
ID: 3844822 • Letter: I
Question
In the book Java How to Program Early Objects, 10th edition in chapter 9, exercise 9.3 there is a solution but I need to come up with a solution that uses a six-argument constructor. (I think the current solution is using aggregation) I am having problems implementing this constructor. The constructor that is set up is // six-argument constructor
public BasePlusCommissionEmployeeComposition( String first, String last,
String ssn, double sales, double rate, double salary) {
// TODO: implement this constructor
}
I need help on setting up the instance variables and completing the constructor.
Explanation / Answer
CommissionEmployee.java:
public class CommissionEmployee {
private final String firstName;
private final String lastName;
private final String socialSecurityNumber;
private double grossSales; // gross weekly sales
private double commissionRate; // commission percentage
// five-argument constructor
public CommissionEmployee(String firstName, String lastName,
String socialSecurityNumber, double grossSales,
double commissionRate) {
// implicit call to Object constructor occurs here
// 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.firstName = firstName;
this.lastName = lastName;
this.socialSecurityNumber = socialSecurityNumber;
this.grossSales = grossSales;
this.commissionRate = commissionRate;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String getSocialSecurityNumber() {
return socialSecurityNumber;
}
public double getGrossSales() {
return grossSales;
}
public double getCommissionRate() {
return commissionRate;
}
// 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;
}
// 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 String representation of CommissionEmployee object
@Override
public String toString() {
return String.format("%s: %s %s%n%s: %s%n%s: %.2f%n%s: %.2f",
"commission employee", getFirstName(), getLastName(),
"social security number", getSocialSecurityNumber(),
"gross sales", getGrossSales(), "commission rate",
getCommissionRate());
}
// calculate earnings
public double earnings() {
return getCommissionRate() * getGrossSales();
}
}
BasePlusCommissionEmployee.java:
public class BasePlusCommissionEmployee {
// instead of extending the class, we are keeping a private variable
private CommissionEmployee commissionEmployee;
private double baseSalary;
public BasePlusCommissionEmployee(String first, String last, String ssn,
double sales, double rate, double salary) {
commissionEmployee = new CommissionEmployee(first, last, ssn, sales, rate);
if (baseSalary < 0.0) {
throw new IllegalArgumentException("Base salary must be >= 0.0");
}
this.baseSalary = salary;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.