Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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;
   }
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote