Friday, 25 May 2012

OPP'S Examples programs

 
 When class implementation is done at the end of the program like
 forms of a performno 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 performno 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(10TYPE 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(10TYPE 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.
    METHODSset 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

DATAcount 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.

No comments:

Post a Comment