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 classClass EmpAttributes: empName, minSalary (short for minimum salary)Methods: besides the usual methods (constructor, getters, setters, as needed), the class Emp has thefollowing 2 methods: earnings(), which returns minSalarydisplayInfo(), which displays name and minSalary class SalEmpAttribute: monthlySalaryMethods: besides the usual methods (constructor, getters, setters, as needed), the class EmpSalhas the following 2 methods: earnings(), which returns the greater of minSalary and monthlySalarydisplayInfo(), which displays name, monthlySalary, earnings()class HourlyEmpAttribute: hours, rateMethods: besides the usual methods (constructor, getters, setters, as needed), the class EmpSalhas the following 2 methods: earnings(), which returns the greater of minSalary and hours*ratedisplayInfo(), which displays name, hours, rate , earnings()class CommEmpAttribute: sales, rateMethods: besides the usual methods (constructor, getters, setters, as needed), the class EmpSalhas the following 2 methods: earnings(), which returns the greater of minSalary and sales*ratedisplayInfo(), which displays name, sales, rate , earnings()class BpCommEmpAttribute: baseSalary, car (car is a BusinessCar object )Methods: besides the usual methods (constructor, getters, setters, as needed), the class EmpSalhas the following 2 methods: earnings(), which returns sales*rate+ baseSalarydisplayInfo(), which displays name, sales, rate , earnings(), car infoclass BusinessCarattributes: make, model, yearmethods: as needed2. 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 1500Burt 1500SalEmp (empName,monthlySalary, minSalary)Carol 2000 1200Diane 2000 1200HourlyEmp (empName,hours, rate, minSalary)Fonda 200 15 1000CommEmp (empName,sales, rate, minSalary)Doug 200000 0.10 1000BpCommEmp (empName, sales, rate, baseSalary, car)Grace 300000 0.2 1500 car: Toyota Lexus 2015Mike 200000 0.2 3000 car: Toyota Camry 20153. (extra credit) Polymorphisma. Display the information for all employees using polymorphismb. increase the baseSalary of BpCommEmp by 10% Deliverables. Upload to Canvas:The program (as py files): all classes, and main() fileThe output of program execution for questions 2 and 3 (extra credit for question 3)