computer science

profilekromamich
DemonstratePolymorphismAssignmentDataSet1.zip

Demonstrate Polymorphism Assignment Data Set/HourlyEmployee.java

Demonstrate Polymorphism Assignment Data Set/HourlyEmployee.java

// Fig. 10.6: HourlyEmployee.java
// HourlyEmployee class extends Employee.

public   class   HourlyEmployee   extends   Employee  
{
    private   double  wage ;   // wage per hour
    private   double  hours ;   // hours worked for week

    // constructor
    public   HourlyEmployee ( String  firstName ,   String  lastName ,
       String  socialSecurityNumber ,   double  wage ,   double  hours )
    {
       super ( firstName ,  lastName ,  socialSecurityNumber );

       if   ( wage  <   0.0 )   // validate wage
          throw   new   IllegalArgumentException (
             "Hourly wage must be >= 0.0" );

       if   (( hours  <   0.0 )   ||   ( hours  >   168.0 ))   // validate hours
          throw   new   IllegalArgumentException (
             "Hours worked must be >= 0.0 and <= 168.0" );

       this . wage  =  wage ;
       this . hours  =  hours ;
    }  

    // set wage
    public   void  setWage ( double  wage )
    {
       if   ( wage  <   0.0 )   // validate wage
          throw   new   IllegalArgumentException (
             "Hourly wage must be >= 0.0" );

       this . wage  =  wage ;
    }  

    // return wage
    public   double  getWage ()
    {
       return  wage ;
    }  

    // set hours worked
    public   void  setHours ( double  hours )
    {
       if   (( hours  <   0.0 )   ||   ( hours  >   168.0 ))   // validate hours
          throw   new   IllegalArgumentException (
             "Hours worked must be >= 0.0 and <= 168.0" );

       this . hours  =  hours ;
    }  

    // return hours worked
    public   double  getHours ()
    {
       return  hours ;
    }  

    // calculate earnings; override abstract method earnings in Employee
   @ Override                                                            
    public   double  earnings ()                                             
    {                                                                    
       if   ( getHours ()   <=   40 )   // no overtime                           
          return  getWage ()   *  getHours ();                                 
       else                                                              
          return   40   *  getWage ()   +   ( getHours ()   -   40 )   *  getWage ()   *   1.5 ;
    }                                           

    // return String representation of HourlyEmployee object              
   @ Override                                                              
    public   String  toString ()                                               
    {                                                                      
       return   String . format ( "hourly employee: %s%n%s: $%,.2f; %s: %,.2f" ,
          super . toString (),   "hourly wage" ,  getWage (),                      
          "hours worked" ,  getHours ());                                    
    }                                     
}   // end class HourlyEmployee



/**************************************************************************
 * (C) Copyright 1992-2014 by Deitel & Associates, Inc. and               *
 * Pearson Education, Inc. All Rights Reserved.                           *
 *                                                                        *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 *************************************************************************/

__MACOSX/Demonstrate Polymorphism Assignment Data Set/._HourlyEmployee.java

Demonstrate Polymorphism Assignment Data Set/BasePlusCommissionEmployee.java

Demonstrate Polymorphism Assignment Data Set/BasePlusCommissionEmployee.java

// Fig. 10.8: BasePlusCommissionEmployee.java
// BasePlusCommissionEmployee class extends CommissionEmployee.

public   class   BasePlusCommissionEmployee   extends   CommissionEmployee  
{
    private   double  baseSalary ;   // base salary per week

    // constructor
    public   BasePlusCommissionEmployee ( String  firstName ,   String  lastName ,  
       String  socialSecurityNumber ,   double  grossSales ,
       double  commissionRate ,   double  baseSalary )
    {
       super ( firstName ,  lastName ,  socialSecurityNumber ,  
         grossSales ,  commissionRate );

       if   ( baseSalary  <   0.0 )   // validate baseSalary                  
          throw   new   IllegalArgumentException ( "Base salary must be >= 0.0" );
            
       this . baseSalary  =  baseSalary ;                 
    }

    // set base salary
    public   void  setBaseSalary ( double  baseSalary )
    {
       if   ( baseSalary  <   0.0 )   // validate baseSalary                  
          throw   new   IllegalArgumentException ( "Base salary must be >= 0.0" );
            
       this . baseSalary  =  baseSalary ;                 
    }  

    // return base salary
    public   double  getBaseSalary ()
    {
       return  baseSalary ;
    }

    // calculate earnings; override method earnings in CommissionEmployee
   @ Override                                                             
    public   double  earnings ()                                              
    {                                                                     
       return  getBaseSalary ()   +   super . earnings ();                         
    }  

    // return String representation of BasePlusCommissionEmployee object
   @ Override                                                            
    public   String  toString ()                                             
    {                                                                    
       return   String . format ( "%s %s; %s: $%,.2f" ,                        
          "base-salaried" ,   super . toString (),                             
          "base salary" ,  getBaseSalary ());                              
    }  
}   // end class BasePlusCommissionEmployee



/**************************************************************************
 * (C) Copyright 1992-2014 by Deitel & Associates, Inc. and               *
 * Pearson Education, Inc. All Rights Reserved.                           *
 *                                                                        *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 *************************************************************************/

__MACOSX/Demonstrate Polymorphism Assignment Data Set/._BasePlusCommissionEmployee.java

Demonstrate Polymorphism Assignment Data Set/CommissionEmployee.java

Demonstrate Polymorphism Assignment Data Set/CommissionEmployee.java

// Fig. 10.7: CommissionEmployee.java
// CommissionEmployee class extends Employee.

public   class   CommissionEmployee   extends   Employee  
{
    private   double  grossSales ;   // gross weekly sales
    private   double  commissionRate ;   // commission percentage

    // constructor
    public   CommissionEmployee ( String  firstName ,   String  lastName ,  
       String  socialSecurityNumber ,   double  grossSales ,  
       double  commissionRate )
    {
       super ( firstName ,  lastName ,  socialSecurityNumber );

       if   ( commissionRate  <=   0.0   ||  commissionRate  >=   1.0 )   // validate 
          throw   new   IllegalArgumentException (
             "Commission rate must be > 0.0 and < 1.0" );

       if   ( grossSales  <   0.0 )   // validate
          throw   new   IllegalArgumentException ( "Gross sales must be >= 0.0" );

       this . grossSales  =  grossSales ;
       this . commissionRate  =  commissionRate ;
    }  

    // set gross sales amount
    public   void  setGrossSales ( double  grossSales )
    {
       if   ( grossSales  <   0.0 )   // validate
          throw   new   IllegalArgumentException ( "Gross sales must be >= 0.0" );

       this . grossSales  =  grossSales ;
    }  

    // return gross sales amount
    public   double  getGrossSales ()
    {
       return  grossSales ;
    }  

    // set commission rate
    public   void  setCommissionRate ( double  commissionRate )
    {
       if   ( commissionRate  <=   0.0   ||  commissionRate  >=   1.0 )   // validate
          throw   new   IllegalArgumentException (
             "Commission rate must be > 0.0 and < 1.0" );

       this . commissionRate  =  commissionRate ;
    }  

    // return commission rate
    public   double  getCommissionRate ()
    {
       return  commissionRate ;
    }  

    // calculate earnings; override abstract method earnings in Employee
   @ Override                                                            
    public   double  earnings ()                                             
    {                                                                    
       return  getCommissionRate ()   *  getGrossSales ();                     
    }                                              

    // return String representation of CommissionEmployee object
   @ Override                                                    
    public   String  toString ()                                     
    {                                                            
       return   String . format ( "%s: %s%n%s: $%,.2f; %s: %.2f" ,     
          "commission employee" ,   super . toString (),               
          "gross sales" ,  getGrossSales (),                        
          "commission rate" ,  getCommissionRate ());              
    }  
}   // end class CommissionEmployee


/**************************************************************************
 * (C) Copyright 1992-2014 by Deitel & Associates, Inc. and               *
 * Pearson Education, Inc. All Rights Reserved.                           *
 *                                                                        *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 *************************************************************************/

__MACOSX/Demonstrate Polymorphism Assignment Data Set/._CommissionEmployee.java

Demonstrate Polymorphism Assignment Data Set/PayrollSystemTest.java

Demonstrate Polymorphism Assignment Data Set/PayrollSystemTest.java

// Fig. 10.9: PayrollSystemTest.java
// Employee hierarchy test program.

public   class   PayrollSystemTest  
{
    public   static   void  main ( String []  args )  
    {
       // create subclass objects
       SalariedEmployee  salariedEmployee  =  
          new   SalariedEmployee ( "John" ,   "Smith" ,   "111-11-1111" ,   800.00 );
       HourlyEmployee  hourlyEmployee  =  
          new   HourlyEmployee ( "Karen" ,   "Price" ,   "222-22-2222" ,   16.75 ,   40 );
       CommissionEmployee  commissionEmployee  =  
          new   CommissionEmployee (
          "Sue" ,   "Jones" ,   "333-33-3333" ,   10000 ,   .06 );
       BasePlusCommissionEmployee  basePlusCommissionEmployee  =  
          new   BasePlusCommissionEmployee (
          "Bob" ,   "Lewis" ,   "444-44-4444" ,   5000 ,   .04 ,   300 );

       System . out . println ( "Employees processed individually:" );
      
       System . out . printf ( "%n%s%n%s: $%,.2f%n%n" ,  
         salariedEmployee ,   "earned" ,  salariedEmployee . earnings ());
       System . out . printf ( "%s%n%s: $%,.2f%n%n" ,
         hourlyEmployee ,   "earned" ,  hourlyEmployee . earnings ());
       System . out . printf ( "%s%n%s: $%,.2f%n%n" ,
         commissionEmployee ,   "earned" ,  commissionEmployee . earnings ());
       System . out . printf ( "%s%n%s: $%,.2f%n%n" ,  
         basePlusCommissionEmployee ,  
          "earned" ,  basePlusCommissionEmployee . earnings ());

       // create four-element Employee array
       Employee []  employees  =   new   Employee [ 4 ];  

       // initialize array with Employees
      employees [ 0 ]   =  salariedEmployee ;
      employees [ 1 ]   =  hourlyEmployee ;
      employees [ 2 ]   =  commissionEmployee ;  
      employees [ 3 ]   =  basePlusCommissionEmployee ;

       System . out . printf ( "Employees processed polymorphically:%n%n" );
      
       // generically process each element in array employees
       for   ( Employee  currentEmployee  :  employees )  
       {
          System . out . println ( currentEmployee );   // invokes toString

          // determine whether element is a BasePlusCommissionEmployee
          if   ( currentEmployee  instanceof   BasePlusCommissionEmployee )  
          {
             // downcast Employee reference to 
             // BasePlusCommissionEmployee reference
             BasePlusCommissionEmployee  employee  =  
                ( BasePlusCommissionEmployee )  currentEmployee ;

            employee . setBaseSalary ( 1.10   *  employee . getBaseSalary ());

             System . out . printf (
                "new base salary with 10%% increase is: $%,.2f%n" ,
               employee . getBaseSalary ());
          }  

          System . out . printf (
             "earned $%,.2f%n%n" ,  currentEmployee . earnings ());
       }  

       // get type name of each object in employees array
       for   ( int  j  =   0 ;  j  <  employees . length ;  j ++ )
          System . out . printf ( "Employee %d is a %s%n" ,  j ,  
            employees [ j ]. getClass (). getName ());  
    }   // end main
}   // end class PayrollSystemTest

/**************************************************************************
 * (C) Copyright 1992-2014 by Deitel & Associates, Inc. and               *
 * Pearson Education, Inc. All Rights Reserved.                           *
 *                                                                        *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 *************************************************************************/

__MACOSX/Demonstrate Polymorphism Assignment Data Set/._PayrollSystemTest.java

Demonstrate Polymorphism Assignment Data Set/SalariedEmployee.java

Demonstrate Polymorphism Assignment Data Set/SalariedEmployee.java

// Fig. 10.5: SalariedEmployee.java
// SalariedEmployee concrete class extends abstract class Employee.

public   class   SalariedEmployee   extends   Employee  
{
    private   double  weeklySalary ;

    // constructor
    public   SalariedEmployee ( String  firstName ,   String  lastName ,  
       String  socialSecurityNumber ,   double  weeklySalary )
    {
       super ( firstName ,  lastName ,  socialSecurityNumber );  

       if   ( weeklySalary  <   0.0 )
          throw   new   IllegalArgumentException (
             "Weekly salary must be >= 0.0" );

       this . weeklySalary  =  weeklySalary ;
    }  

    // set salary
    public   void  setWeeklySalary ( double  weeklySalary )
    {
       if   ( weeklySalary  <   0.0 )
          throw   new   IllegalArgumentException (
             "Weekly salary must be >= 0.0" );

       this . weeklySalary  =  weeklySalary ;
    }  

    // return salary
    public   double  getWeeklySalary ()
    {
       return  weeklySalary ;
    }  

    // calculate earnings; override abstract method earnings in Employee
   @ Override                                                            
    public   double  earnings ()                                             
    {                                                                    
       return  getWeeklySalary ();                                         
    }                                              

    // return String representation of SalariedEmployee object   
   @ Override                                                     
    public   String  toString ()                                      
    {                                                             
       return   String . format ( "salaried employee: %s%n%s: $%,.2f" ,
          super . toString (),   "weekly salary" ,  getWeeklySalary ());
    }  
}   // end class SalariedEmployee


/**************************************************************************
 * (C) Copyright 1992-2014 by Deitel & Associates, Inc. and               *
 * Pearson Education, Inc. All Rights Reserved.                           *
 *                                                                        *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 *************************************************************************/

__MACOSX/Demonstrate Polymorphism Assignment Data Set/._SalariedEmployee.java

Demonstrate Polymorphism Assignment Data Set/Employee.java

Demonstrate Polymorphism Assignment Data Set/Employee.java

// Fig. 10.4: Employee.java
// Employee abstract superclass.

public   abstract   class   Employee  
{
    private   final   String  firstName ;
    private   final   String  lastName ;
    private   final   String  socialSecurityNumber ;

    // constructor
    public   Employee ( String  firstName ,   String  lastName ,  
       String  socialSecurityNumber )
    {
       this . firstName  =  firstName ;                                     
       this . lastName  =  lastName ;                                     
       this . socialSecurityNumber  =  socialSecurityNumber ;          
    }  

    // return first name
    public   String  getFirstName ()
    {
       return  firstName ;
    }  

    // return last name
    public   String  getLastName ()
    {
       return  lastName ;
    }  

    // return social security number
    public   String  getSocialSecurityNumber ()
    {
       return  socialSecurityNumber ;
    }  

    // return String representation of Employee object
   @ Override
    public   String  toString ()
    {
       return   String . format ( "%s %s%nsocial security number: %s" ,  
         getFirstName (),  getLastName (),  getSocialSecurityNumber ());
    }  

    // abstract method must be overridden by concrete subclasses
    public   abstract   double  earnings ();   // no implementation here
}   // end abstract class Employee


/**************************************************************************
 * (C) Copyright 1992-2014 by Deitel & Associates, Inc. and               *
 * Pearson Education, Inc. All Rights Reserved.                           *
 *                                                                        *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 *************************************************************************/

__MACOSX/Demonstrate Polymorphism Assignment Data Set/._Employee.java