G.10.4. Concrete Subclass CommissionEmployee

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


Fig. G.19 | CommissionEmployee class extends Employee.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset