Change program written with inheritance to composition
The assignment is written as:
Many programs written with inheritance could be written with composition instead, and vice versa. Rewrite class BasePlussCommissionEmployee (Fig.9.11) of the CommissionEmployee-BasePlusCommissionEmployee hierarchy to use composition rather than inheritance.
Here is what fig.9.11 looks like:
Code:
public class BasePlusCommissionEmployee extends CommissionEmployee
{
private double baseSalary; // base salary per week
// six-argument constructor
public BasePlusCommissionEmployee( String first, String last,
String ssn, double sales, double rate, double salary )
{
super( first, last, ssn, sales, rate );
setBaseSalary( salary ); // validate and store base salary
} // end six-argument BasePlusCommissionEmployee constructor
// set base salary
public void setBaseSalary( double salary )
{
baseSalary = ( salary < 0.0 ) ? 0.0 : salary;
} // end method setBaseSalary
// return base salary
public double getBaseSalary()
{
return baseSalary;
} // end method getBaseSalary
// calculate earnings
@Override // indicates that this method overrides a superclass method
public double earnings()
{
return getBaseSalary() + super.earnings();
} // end method earnings
// return String representation of BasePlusCommissionEmployee
@Override // indicates that this method overrides a superclass method
public String toString()
{
return String.format( "%s %s\n%s: %.2f", "base-salaried",
super.toString(), "base salary", getBaseSalary() );
} // end method toString
} // end class BasePlusCommissionEmployee
I'm gonna be honest..I've read the chapter twice and I still have no idea where to even start. Can someone help me understand this a little better.