Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- REPORT zhm_foop.
- INTERFACE block.
- METHODS execute.
- ENDINTERFACE.
- INTERFACE boolean.
- METHODS if_true IMPORTING block TYPE REF TO block
- RETURNING VALUE(return) TYPE REF TO boolean.
- METHODS if_false IMPORTING block TYPE REF TO block
- RETURNING VALUE(return) TYPE REF TO boolean.
- ENDINTERFACE.
- CLASS true DEFINITION CREATE PRIVATE.
- PUBLIC SECTION.
- CLASS-DATA value TYPE REF TO boolean READ-ONLY.
- CLASS-METHODS class_constructor.
- INTERFACES boolean.
- ENDCLASS.
- CLASS true IMPLEMENTATION.
- METHOD class_constructor.
- value = NEW true( ).
- ENDMETHOD.
- METHOD boolean~if_true.
- block->execute( ).
- return = me.
- ENDMETHOD.
- METHOD boolean~if_false.
- return = me.
- ENDMETHOD.
- ENDCLASS.
- CLASS false DEFINITION CREATE PRIVATE.
- PUBLIC SECTION.
- CLASS-DATA value TYPE REF TO boolean READ-ONLY.
- CLASS-METHODS class_constructor.
- INTERFACES boolean.
- ENDCLASS.
- CLASS false IMPLEMENTATION.
- METHOD class_constructor.
- value = NEW false( ).
- ENDMETHOD.
- METHOD boolean~if_true.
- return = me.
- ENDMETHOD.
- METHOD boolean~if_false.
- block->execute( ).
- return = me.
- ENDMETHOD.
- ENDCLASS.
- DEFINE start_of_block.
- CLASS &1 DEFINITION CREATE PRIVATE.
- PUBLIC SECTION.
- CLASS-DATA value TYPE REF TO block READ-ONLY.
- CLASS-METHODS class_constructor.
- INTERFACES block.
- ENDCLASS.
- CLASS &1 IMPLEMENTATION.
- METHOD class_constructor.
- value = NEW &1( ).
- ENDMETHOD.
- METHOD block~execute.
- END-OF-DEFINITION.
- DEFINE start_of_block_with_x.
- CLASS &1 DEFINITION CREATE PRIVATE.
- PUBLIC SECTION.
- CLASS-METHODS make IMPORTING x TYPE REF TO &2 RETURNING VALUE(return) TYPE REF TO block.
- METHODS constructor IMPORTING x TYPE REF TO &2.
- INTERFACES block.
- PRIVATE SECTION.
- DATA x TYPE REF TO &2.
- ENDCLASS.
- CLASS &1 IMPLEMENTATION.
- METHOD make.
- return = NEW &1( x ).
- ENDMETHOD.
- METHOD constructor.
- me->x = x.
- ENDMETHOD.
- METHOD block~execute.
- END-OF-DEFINITION.
- DEFINE end_of_block.
- ENDMETHOD.
- ENDCLASS.
- END-OF-DEFINITION.
- start_of_block print_foo.
- WRITE 'FOO'.
- end_of_block.
- start_of_block print_bar.
- WRITE 'BAR'.
- end_of_block.
- CLASS foo_bar_printer DEFINITION.
- PUBLIC SECTION.
- METHODS constructor IMPORTING number TYPE i.
- METHODS print.
- METHODS print_from_block.
- PRIVATE SECTION.
- DATA number TYPE i.
- METHODS should_print_foo RETURNING VALUE(return) TYPE REF TO boolean.
- ENDCLASS.
- start_of_block_with_x print_foobar foo_bar_printer.
- x->print_from_block( ).
- end_of_block.
- CLASS foo_bar_printer IMPLEMENTATION.
- METHOD constructor.
- me->number = number.
- ENDMETHOD.
- METHOD print.
- should_print_foo( )->if_true( print_foo=>value
- )->if_false( print_bar=>value ).
- print_foobar=>make( me )->execute( ).
- ENDMETHOD.
- METHOD print_from_block.
- WRITE 'from a block'.
- ENDMETHOD.
- METHOD should_print_foo.
- return = true=>value.
- ENDMETHOD.
- ENDCLASS.
- PARAMETERS p_num TYPE i DEFAULT 1.
- START-OF-SELECTION.
- DATA(printer) = NEW foo_bar_printer( p_num ).
- printer->print( ).
Advertisement
Add Comment
Please, Sign In to add comment