0% found this document useful (0 votes)
16 views

Inheritance

1. The document defines a superclass called LCL_CompanyEmployees that contains methods for adding, displaying, and counting employees. 2. It defines two subclasses, LCL_BlueCollar_Employee and LCL_WhiteCollar_Employee that redefine the add_employee method to calculate wages differently based on hourly or monthly pay. 3. The program demonstrates creating instances of the subclasses, adding employees using polymorphism, and displaying the employee list and count.

Uploaded by

Chirag Chaudhary
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

Inheritance

1. The document defines a superclass called LCL_CompanyEmployees that contains methods for adding, displaying, and counting employees. 2. It defines two subclasses, LCL_BlueCollar_Employee and LCL_WhiteCollar_Employee that redefine the add_employee method to calculate wages differently based on hourly or monthly pay. 3. The program demonstrates creating instances of the subclasses, adding employees using polymorphism, and displaying the employee list and count.

Uploaded by

Chirag Chaudhary
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

INHERITANCE & POLYMORPHISM Principles: Create super class LCL_CompanyEmployees.

The class has the methods:


Constructor Add_Employee - Adds a new employee to the list of employees Display_Employee_List - Displays all employees and there wage Display_no_of_employees - Displays total number of employees

Note the use of CLASS-DATA to keep the list of employees and number of employees the same from instance to instance. Create subclasses lcl_bluecollar_employee and lcl_whitecollar_employee. The calsses are identical, except for the redifinition of the add_employee method, where the caclculation of wage is different. Methodes:

Constructor. The constructor is used to initialize the attributes of the employee. Note that the constructor in the subclass has to be called from within the constructor of the subclass. Add_Employee. This is a redefinition of the same method in the superclass. In the redefined class the wage is calcuated, and the superclass method is called to add the employees to the emploee list.:

The program REPORT zbc404_hf_events_2 . ******************************************************* * Super class LCL_CompanyEmployees ******************************************************* CLASS lcl_company_employees DEFINITION. PUBLIC SECTION. TYPES: BEGIN OF t_employee, no TYPE i, name TYPE string, wage TYPE i, END OF t_employee. METHODS: constructor, add_employee IMPORTING im_no TYPE i im_name TYPE string

im_wage TYPE i, display_employee_list, display_no_of_employees.

PRIVATE SECTION. CLASS-DATA: i_employee_list TYPE TABLE OF t_employee, no_of_employees TYPE i. ENDCLASS. *-- CLASS LCL_CompanyEmployees IMPLEMENTATION CLASS lcl_company_employees IMPLEMENTATION. METHOD constructor. no_of_employees = no_of_employees + 1. ENDMETHOD. METHOD add_employee. * Adds a new employee to the list of employees DATA: l_employee TYPE t_employee. l_employee-no = im_no. l_employee-name = im_name. l_employee-wage = im_wage. APPEND l_employee TO i_employee_list. ENDMETHOD. METHOD display_employee_list. * Displays all employees and there wage DATA: l_employee TYPE t_employee. WRITE: / 'List of Employees'. LOOP AT i_employee_list INTO l_employee. WRITE: / l_employee-no, l_employee-name, l_employee-wage. ENDLOOP. ENDMETHOD. METHOD display_no_of_employees. * Displays total number of employees SKIP 3. WRITE: / 'Total number of employees:', no_of_employees. ENDMETHOD. ENDCLASS. ******************************************************* * Sub class LCL_BlueCollar_Employee ******************************************************* CLASS lcl_bluecollar_employee DEFINITION INHERITING FROM lcl_company_employees. PUBLIC SECTION. METHODS: constructor

IMPORTING im_no TYPE i im_name TYPE string im_hours TYPE i im_hourly_payment TYPE i, add_employee REDEFINITION. PRIVATE SECTION. DATA:no TYPE i, name TYPE string, hours TYPE i, hourly_payment TYPE i.

ENDCLASS. *---- CLASS LCL_BlueCollar_Employee IMPLEMENTATION CLASS lcl_bluecollar_employee IMPLEMENTATION. METHOD constructor. * The superclass constructor method must be called from the subclass * constructor method CALL METHOD super->constructor. no = im_no. name = im_name. hours = im_hours. hourly_payment = im_hourly_payment. ENDMETHOD. METHOD add_employee. * Calculate wage an call the superclass method add_employee to add * the employee to the employee list DATA: l_wage TYPE i. l_wage = hours * hourly_payment. CALL METHOD super->add_employee EXPORTING im_no = no im_name = name im_wage = l_wage. ENDMETHOD. ENDCLASS. ******************************************************* * Sub class LCL_WhiteCollar_Employee ******************************************************* CLASS lcl_whitecollar_employee DEFINITION INHERITING FROM lcl_company_employees. PUBLIC SECTION. METHODS: constructor

IMPORTING im_no TYPE i im_name TYPE string im_monthly_salary TYPE i im_monthly_deductions TYPE i, add_employee REDEFINITION. PRIVATE SECTION. DATA: no TYPE i, name TYPE string, monthly_salary TYPE i, monthly_deductions TYPE i. ENDCLASS. *---- CLASS LCL_WhiteCollar_Employee IMPLEMENTATION CLASS lcl_whitecollar_employee IMPLEMENTATION. METHOD constructor. * The superclass constructor method must be called from the subclass * constructor method CALL METHOD super->constructor. no = im_no. name = im_name. monthly_salary = im_monthly_salary. monthly_deductions = im_monthly_deductions. ENDMETHOD. METHOD add_employee. * Calculate wage an call the superclass method add_employee to add * the employee to the employee list DATA: l_wage TYPE i. l_wage = monthly_salary - monthly_deductions. CALL METHOD super->add_employee EXPORTING im_no = no im_name = name im_wage = l_wage. ENDMETHOD. ENDCLASS. ******************************************************* *REPORT ******************************************************* DATA: * Object references o_bluecollar_employee1 TYPE REF TO lcl_bluecollar_employee, o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee. START-OF-SELECTION.

* Create bluecollar employee obeject CREATE OBJECT o_bluecollar_employee1 EXPORTING im_no = 1 im_name = 'Gylle Karen' im_hours = 38 im_hourly_payment = 75. * Add bluecollar employee to employee list CALL METHOD o_bluecollar_employee1->add_employee EXPORTING im_no = 1 im_name = 'Gylle Karen' im_wage = 0. * Create whitecollar employee obeject CREATE OBJECT o_whitecollar_employee1 EXPORTING im_no = 2 im_name = 'John Dickens' im_monthly_salary = 10000 im_monthly_deductions = 2500. * Add bluecollar employee to employee list CALL METHOD o_whitecollar_employee1->add_employee EXPORTING im_no = 1 im_name = 'Karen Johnson' im_wage = 0. * Display employee list and number of employees. Note that the result * will be the same when called from o_whitecollar_employee1 or * o_bluecolarcollar_employee1, because the methods are defined * as static (CLASS-METHODS) CALL METHOD o_whitecollar_employee1->display_employee_list. CALL METHOD o_whitecollar_employee1->display_no_of_employees. OUTPUT The resulting report: List of Employees 1 Karen Johnson 2.850 2 John Dickens 7.500

Total number of employees: 2

You might also like