REPORT Z17_021 .
* INTERFACE status
INTERFACE status.
METHODS write.
DATA cnt TYPE i.
ENDINTERFACE. "status
* CLASS c_counter1 DEFINITION
CLASS c_counter1 DEFINITION.
PUBLIC SECTION.
INTERFACES status.
METHODS increment.
ENDCLASS. "c_counter1 DEFINITION
* CLASS c_counter1 IMPLEMENTATION
CLASS c_counter1 IMPLEMENTATION.
METHOD status~write.
WRITE: / '숫자는', status~cnt.
ENDMETHOD. "status~write
METHOD increment.
ADD 2 TO status~cnt.
ENDMETHOD.
ENDCLASS. "c_counter1 IMPLEMENTATION
* CLASS c_counter2 DEFINITION
CLASS c_counter2 DEFINITION.
PUBLIC SECTION.
INTERFACES status.
ENDCLASS. "c_counter2 DEFINITION
* CLASS c_counter2 IMPLEMENTATION
CLASS c_counter2 IMPLEMENTATION.
METHOD status~write.
WRITE: / '속도는', status~cnt.
ENDMETHOD. "status~write
ENDCLASS. "c_counter2 IMPLEMENTATION
DATA : cref1 TYPE REF TO c_counter1,
cref2 TYPE REF TO c_counter2,
iref TYPE REF TO status.
START-OF-SELECTION.
CREATE OBJECT : cref1, cref2.
CALL METHOD CREF1->INCREMENT.
CALL METHOD cref1->status~write.
iref = cref1.
cref1->status~cnt = 3.
CALL METHOD iref->write.
cref2->status~cnt = 10.
CALL METHOD cref2->status~write.
iref = cref2.
cref2->status~cnt = 20.
CALL METHOD iref->write.
* INTERFACE status
INTERFACE status.
METHODS write.
DATA cnt TYPE i.
ENDINTERFACE. "status
* CLASS c_counter1 DEFINITION
CLASS c_counter1 DEFINITION.
PUBLIC SECTION.
INTERFACES status.
METHODS increment.
ENDCLASS. "c_counter1 DEFINITION
* CLASS c_counter1 IMPLEMENTATION
CLASS c_counter1 IMPLEMENTATION.
METHOD status~write.
WRITE: / '숫자는', status~cnt.
ENDMETHOD. "status~write
METHOD increment.
ADD 2 TO status~cnt.
ENDMETHOD.
ENDCLASS. "c_counter1 IMPLEMENTATION
* CLASS c_counter2 DEFINITION
CLASS c_counter2 DEFINITION.
PUBLIC SECTION.
INTERFACES status.
ENDCLASS. "c_counter2 DEFINITION
* CLASS c_counter2 IMPLEMENTATION
CLASS c_counter2 IMPLEMENTATION.
METHOD status~write.
WRITE: / '속도는', status~cnt.
ENDMETHOD. "status~write
ENDCLASS. "c_counter2 IMPLEMENTATION
DATA : cref1 TYPE REF TO c_counter1,
cref2 TYPE REF TO c_counter2,
iref TYPE REF TO status.
START-OF-SELECTION.
CREATE OBJECT : cref1, cref2.
CALL METHOD CREF1->INCREMENT.
CALL METHOD cref1->status~write.
iref = cref1.
cref1->status~cnt = 3.
CALL METHOD iref->write.
cref2->status~cnt = 10.
CALL METHOD cref2->status~write.
iref = cref2.
cref2->status~cnt = 20.
CALL METHOD iref->write.