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.
Subscribe to:
Posts (Atom)