Class CommissionEmployee
(Fig. G.19) extends class Employee
(line 4). The class includes a constructor (lines 10–16) that takes a first name, a last name, a social security number, a sales amount and a commission rate; set methods (lines 19–26 and 35–42) to assign new values to instance variables commissionRate
and grossSales
, respectively; get methods (lines 29–32 and 45–48) that retrieve the values of these instance variables; method earnings
(lines 51–55) to calculate a CommissionEmployee
’s earnings; and method toString
(lines 58–65), which returns the employee’s type, namely, "commission employee: "
and employee-specific information. The constructor also passes the first name, last name and social security number to Employee
’s constructor (line 13) to initialize Employee
’s private
instance variables. Method toString
calls superclass method toString
(line 62) to obtain the Employee
-specific information (i.e., first name, last name and social security number).
1 // Fig. G.19: CommissionEmployee.java
2 // CommissionEmployee class extends Employee.
3
4 public class CommissionEmployee extends Employee
5 {
6 private double grossSales; // gross weekly sales
7 private double commissionRate; // commission percentage
8
9 // five-argument constructor
10 public CommissionEmployee( String first, String last, String ssn,
11 double sales, double rate )
12 {
13 super( first, last, ssn );
14 setGrossSales( sales );
15 setCommissionRate( rate );
16 } // end five-argument CommissionEmployee constructor
17
18 // set commission rate
19 public void setCommissionRate( double rate )
20 {
21 if ( rate > 0.0 && rate < 1.0 )
22 commissionRate = rate;
23 else
24 throw new IllegalArgumentException(
25 "Commission rate must be > 0.0 and < 1.0" );
26 } // end method setCommissionRate
27
28 // return commission rate
29 public double getCommissionRate()
30 {
31 return commissionRate;
32 } // end method getCommissionRate
33
34 // set gross sales amount
35 public void setGrossSales( double sales )
36 {
37 if ( sales >= 0.0 )
38 grossSales = sales;
39 else
40 throw new IllegalArgumentException(
41 "Gross sales must be >= 0.0" );
42 } // end method setGrossSales
43
44 // return gross sales amount
45 public double getGrossSales()
46 {
47 return grossSales;
48 } // end method getGrossSales
49
50 // calculate earnings; override abstract method earnings in Employee
51 @Override
52 public double earnings()
53 {
54 return getCommissionRate() * getGrossSales();
55 } // end method earnings
56
57 // return String representation of CommissionEmployee object
58 @Override
59 public String toString()
60 {
61 return String.format( "%s: %s
%s: $%,.2f; %s: %.2f",
62 "commission employee", super.toString(),
63 "gross sales", getGrossSales(),
64 "commission rate", getCommissionRate() );
65 } // end method toString
66 } // end class CommissionEmployee