Programming Worksheet-SDSU .
Programming Assignment #4: classes, composition, subclasses, inheritance, polymorphism.
1. Write the code for the following classes
(All attributes in all classes must be private)
Emp (short for Employee)
The class Emp has 3 subclasses: 1. SalEmp (short for Salaried Employe), 2. HourlyEmp,
3. CommEmp (short for commission employee).
The class CommEmp has one subclass, BpCommEmp (short for base plus commission
Employee).
There is also a BusinessCar class
Class Emp
Attributes: empName, minSalary (short for minimum salary)
Methods: besides the usual methods (constructor, getters, setters, as needed), the class Emp has the
following 2 methods:
earnings(), which returns minSalary
displayInfo(), which displays name and minSalary
class SalEmp
Attribute: monthlySalary
Methods: besides the usual methods (constructor, getters, setters, as needed), the class EmpSal
has the following 2 methods:
earnings(), which returns the greater of minSalary and monthlySalary
displayInfo(), which displays name, monthlySalary, earnings()
class HourlyEmp
Attribute: hours, rate
Methods: besides the usual methods (constructor, getters, setters, as needed), the class EmpSal
has the following 2 methods:
earnings(), which returns the greater of minSalary and hours*rate
displayInfo(), which displays name, hours, rate , earnings()
class CommEmp
Attribute: sales, rate
Methods: besides the usual methods (constructor, getters, setters, as needed), the class EmpSal
has the following 2 methods:
earnings(), which returns the greater of minSalary and sales*rate
displayInfo(), which displays name, sales, rate , earnings()
class BpCommEmp
Attribute: baseSalary, car (car is a BusinessCar object )
Methods: besides the usual methods (constructor, getters, setters, as needed), the class EmpSal
has the following 2 methods:
earnings(), which returns sales*rate+ baseSalary
displayInfo(), which displays name, sales, rate , earnings(), car info
class BusinessCar
attributes: make, model, year
methods: as needed
2. Instantiate the following objects (in main()) and display the information for all objects, using the
method dispayInfo() (car info to be provided via displayInfo())
Class Emp (empName,minSalary)
Adele 1500
Burt 1500
SalEmp (empName,monthlySalary, minSalary)
Carol 2000 1200
Diane 2000 1200
HourlyEmp (empName,hours, rate, minSalary)
Fonda 200 15 1000
CommEmp (empName,sales, rate, minSalary)
Doug 200000 0.10 1000
BpCommEmp (empName, sales, rate, baseSalary, car)
Grace 300000 0.2 1500 car: Toyota Lexus 2015
Mike 200000 0.2 3000 car: Toyota Camry 2015
3. (extra credit) Polymorphism
a. Display the information for all employees using polymorphism
b. increase the baseSalary of BpCommEmp by 10%
Deliverables. Upload to Canvas:
The program (as py files): all classes, and main() file
The output of program execution for questions 2 and 3 (extra credit for question 3)