Friday, 19 August 2016

OPP'S Examples programs When class implementation is done at the end of the program like forms of a perform, no need of start of selection ******** Begin of Program one on OOP's***************** ----------------------------------------------------------------------* CLASS tax DEFINITION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS tax DEFINITION. PUBLIC SECTION. DATA : salary TYPE p DECIMALS 2 VALUE '50000'. METHODS: calc_tax IMPORTING sal TYPE p EXPORTING tax_amt TYPE p. ENDCLASS. "tax DEFINITION ----------------------------------------------------------------------* CLASS tax IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS tax IMPLEMENTATION. METHOD calc_tax. sal = salary. tax_amt = sal / 10. ENDMETHOD. "calc_tax ENDCLASS. "tax IMPLEMENTATION START-OF-SELECTION. DATA : taxamt TYPE p. DATA : salary TYPE p VALUE '10025606511'. DATA: obj1 TYPE REF TO tax. CREATE OBJECT : obj1. CALL METHOD: obj1->calc_tax EXPORTING sal = salary IMPORTING tax_amt = taxamt. WRITE: / 'Tax amount is ', taxamt. ******** End of Program one on OOP's***************** When class implementation is done at the end of the program like forms of a perform, no need of start of selection ******** Begin of Program 2 on OOP's***************** ----------------------------------------------------------------------* CLASS tax DEFINITION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS tax DEFINITION. PUBLIC SECTION. DATA : salary TYPE p DECIMALS 2 VALUE '50000'. METHODS: calc_tax IMPORTING sal TYPE p EXPORTING tax_amt TYPE p. ENDCLASS. "tax DEFINITION START-OF-SELECTION. DATA : taxamt TYPE p. DATA : salary TYPE p VALUE '10025606511'. DATA: obj1 TYPE REF TO tax. CREATE OBJECT : obj1. CALL METHOD: obj1->calc_tax EXPORTING sal = salary IMPORTING tax_amt = taxamt. WRITE: / 'Tax amount is ', taxamt. ----------------------------------------------------------------------* CLASS tax IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS tax IMPLEMENTATION. METHOD calc_tax. sal = salary. tax_amt = sal / 10. ENDMETHOD. "calc_tax ENDCLASS. "tax IMPLEMENTATION ******** End of Program 2 on OOP's***************** ******** Begin of Program 3 on OOP's***************** ----------------------------------------------------------------------* CLASS tax DEFINITION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c1 DEFINITION. PUBLIC SECTION. DATA : salary TYPE p DECIMALS 2 VALUE '50000'. METHODS: m1. ENDCLASS. "tax DEFINITION ----------------------------------------------------------------------* CLASS c2 DEFINITION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c2 DEFINITION INHERITING FROM c1. PUBLIC SECTION. METHODS: m2. ENDCLASS. "c2 DEFINITION ----------------------------------------------------------------------* CLASS tax IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c1 IMPLEMENTATION. METHOD m1. WRITE: / 'This is the method in class 1'. ENDMETHOD. "calc_tax ENDCLASS. "tax IMPLEMENTATION ----------------------------------------------------------------------* CLASS c2 IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c2 IMPLEMENTATION. METHOD m2. WRITE : / 'this is the method in class c2'. ENDMETHOD. "m1 ENDCLASS. "c2 IMPLEMENTATION START-OF-SELECTION. DATA : obj1 TYPE REF TO c1, obj2 TYPE REF TO c2. CREATE OBJECT: obj1, obj2. CALL METHOD : obj1->m1 , obj2->m2 , obj2->m1. ******** End of Program 3 on OOP's***************** ******** Begin of Program 4 on OOP's***************** ----------------------------------------------------------------------* CLASS tax DEFINITION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c1 DEFINITION. PUBLIC SECTION. DATA : salary TYPE p DECIMALS 2 VALUE '50000'. METHODS: m1. ENDCLASS. "tax DEFINITION ----------------------------------------------------------------------* CLASS c2 DEFINITION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c2 DEFINITION INHERITING FROM c1. PUBLIC SECTION. METHODS: m2. ENDCLASS. "c2 DEFINITION ----------------------------------------------------------------------* CLASS tax IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c1 IMPLEMENTATION. METHOD m1. WRITE: / 'This is the method in class 1'. ENDMETHOD. "calc_tax ENDCLASS. "tax IMPLEMENTATION ----------------------------------------------------------------------* CLASS c2 IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c2 IMPLEMENTATION. METHOD m2. WRITE : / 'this is the method in class c2'. ENDMETHOD. "m1 ENDCLASS. "c2 IMPLEMENTATION START-OF-SELECTION. DATA : obj1 TYPE REF TO c1, obj2 TYPE REF TO c2. CREATE OBJECT: obj1, obj2. CALL METHOD : obj1->m1 , obj2->m2 , obj2->m1. ******** End of Program 4 on OOP's***************** *********************************************************************************** THis is for the static keyword, this is implemented using CLASS- ******** Begin of Program 5 on OOP's***************** ----------------------------------------------------------------------* CLASS tax DEFINITION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c1 DEFINITION. PUBLIC SECTION. CLASS-DATA: assign_value(10) TYPE c. DATA : salary TYPE p DECIMALS 2 VALUE '50000'. METHODS: m1. CLASS-METHODS: cm1. ENDCLASS. "tax DEFINITION ----------------------------------------------------------------------* CLASS c2 DEFINITION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c2 DEFINITION INHERITING FROM c1. PUBLIC SECTION. METHODS: m2. ENDCLASS. "c2 DEFINITION ----------------------------------------------------------------------* CLASS tax IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c1 IMPLEMENTATION. METHOD m1. WRITE: / 'This is the method in class 1'. ENDMETHOD. "m1 METHOD cm1. " static method. DATA : name(10) TYPE c VALUE 'Bharat'. assign_value = name. " we don't get error here because assign_value is a static data type salary = '4555'. This gives error because static methods WRITE: / ' This is inside the static method and variable name', name. ENDMETHOD. "m1 ENDCLASS. "tax IMPLEMENTATION ----------------------------------------------------------------------* CLASS c2 IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c2 IMPLEMENTATION. METHOD m2. WRITE : / 'this is the method in class c2'. ENDMETHOD. "m1 ENDCLASS. "c2 IMPLEMENTATION START-OF-SELECTION. DATA : obj1 TYPE REF TO c1, obj2 TYPE REF TO c2. CREATE OBJECT: obj1, obj2. CALL METHOD : obj1->m1 , obj2->m2 , obj2->m1. CALL METHOD: obj1->cm1 , c1=>cm1 , obj2->cm1. c1=>assign_value = 'Country'. obj1->assign_value = 'India'. WRITE: / c1=>assign_value. WRITE: / obj1->assign_value. WRITE: / ' Test'. ******** End of Program 5 on OOP's***************** ********* **************** **************** **************** **************** Best program in which a method is called in the implementation of another method of the same class. ********* Begin of Program 6 on OOP's***************** CLASS c1 DEFINITION. PUBLIC SECTION. METHODS : m1 IMPORTING inp1 TYPE i EXPORTING out1 TYPE i, m2 IMPORTING inp2 TYPE i EXPORTING out2 TYPE i. ENDCLASS. "c1 DEFINITION &---------------------------------------------------------------------* & Class (Implementation) c1 &---------------------------------------------------------------------* Text ----------------------------------------------------------------------* CLASS c1 IMPLEMENTATION. METHOD m1. out1 = inp1. ENDMETHOD. "m1 METHOD m2. CALL METHOD : m1 EXPORTING inp1 = inp2 IMPORTING out1 = out2. ENDMETHOD. "m2 ENDCLASS. "c1 START-OF-SELECTION. DATA : number TYPE i. DATA : obj1 TYPE REF TO c1. CREATE OBJECT OBJ1. CALL METHOD: obj1->m2 EXPORTING inp2 = '10' IMPORTING out2 = number. WRITE : number. ********* End of Program 6 on OOP's***************** *********************************************************************************************** program to demonstrate constructor ********** Begin of Program 7 on OOP's***************** CLASS c1 DEFINITION. PUBLIC SECTION. METHODS: constructor. ENDCLASS. "c1 DEFINITION ----------------------------------------------------------------------* CLASS c1 IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c1 IMPLEMENTATION. METHOD constructor. The constructor method name should be constructor only. WRITE : / ' The constructor has been called automatically'. ENDMETHOD. "constructor ENDCLASS. "c1 IMPLEMENTATION START-OF-SELECTION. DATA : obj TYPE REF TO c1. create OBJECT obj. ********** End of Program 8 on OOP's***************** *********************************************************************************************** program to demonstrate static constructor and instance constructor ********** Begin of Program8 on OOP's***************** CLASS c1 DEFINITION. PUBLIC SECTION. CLASS-METHODS: class_constructor. ENDCLASS. "c1 DEFINITION ----------------------------------------------------------------------* CLASS c1 IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c1 IMPLEMENTATION. METHOD class_constructor. WRITE : / ' The constructor has been called automatically'. ENDMETHOD. "constructor ENDCLASS. "c1 IMPLEMENTATION START-OF-SELECTION. DATA : obj TYPE REF TO c1. CREATE OBJECT obj. ********** End of Program8 on OOP's***************** ********************************************************************************** Inheritance ********** Begin of Program 9 ****************** CLASS c1 DEFINITION. PUBLIC SECTION. DATA: name1 TYPE c LENGTH 30 VALUE 'bharat'. METHODS: m1 , "IMPORTING nam TYPE c EXPORTING nam1 TYPE c. m2. ENDCLASS. "c1 DEFINITION ----------------------------------------------------------------------* CLASS c1 IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS c1 IMPLEMENTATION. METHOD m1. CONCATENATE nam 'Good' INTO nam1 SEPARATED BY space. WRITE:/ ' This is a method in super class c1.'. ENDMETHOD. "m1 METHOD m2. WRITE: / ' This is the method 2 of the super class c1.'. ENDMETHOD. "m2 ENDCLASS. "c1 IMPLEMENTATION ----------------------------------------------------------------------* CLASS s1 DEFINITION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS s1 DEFINITION INHERITING FROM c1. PUBLIC SECTION. METHODS m1 REDEFINITION. METHODS: sm1. ENDCLASS. "s1 DEFINITION ----------------------------------------------------------------------* CLASS s1 IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS s1 IMPLEMENTATION. METHOD sm1. CALL METHOD super->m1. WRITE: / ' This is a method in subclass SM1'. ENDMETHOD. "sm1 ENDCLASS. "s1 IMPLEMENTATION START-OF-SELECTION. DATA : obj1 TYPE REF TO c1. DATA : objs1 TYPE REF TO s1. CREATE OBJECT : obj1 , objs1. CALL METHOD : objs1->sm1. CALL METHOD : objs1->m1,objs1->m2. CALL METHOD objs1->m1. **********End of program 9****************** CLASS counter DEFINITION. PUBLIC SECTION. METHODS: set IMPORTING value(set_value) TYPE i, increment, get EXPORTING value(get_value) TYPE i. PROTECTED SECTION. DATA count TYPE i. ENDCLASS. "counter DEFINITION ----------------------------------------------------------------------* CLASS counter IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS counter IMPLEMENTATION. METHOD set. count = set_value. ENDMETHOD. "set METHOD increment. ADD 1 TO count. ENDMETHOD. "increment METHOD get. get_value = count. ENDMETHOD. "get ENDCLASS. "counter IMPLEMENTATION ----------------------------------------------------------------------* CLASS counter_ten DEFINITION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS counter_ten DEFINITION INHERITING FROM counter. PUBLIC SECTION. METHODS increment REDEFINITION. DATA count_ten. ENDCLASS. "counter_ten DEFINITION ----------------------------------------------------------------------* CLASS counter_ten IMPLEMENTATION ----------------------------------------------------------------------* ----------------------------------------------------------------------* CLASS counter_ten IMPLEMENTATION. METHOD increment. DATA modulo TYPE i. CALL METHOD super->increment. WRITE / count. modulo = count MOD 10. IF modulo = 0. count_ten = count_ten + 1. WRITE count_ten. ENDIF. ENDMETHOD. "increment ENDCLASS. "counter_ten IMPLEMENTATION DATA: count TYPE REF TO counter, number TYPE i VALUE 5. START-OF-SELECTION. CREATE OBJECT count TYPE counter_ten. CALL METHOD count->set EXPORTING set_value = number. DO 20 TIMES. CALL METHOD count->increment. ENDDO.