Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CLASS zhm_list DEFINITION PUBLIC INHERITING FROM zhm_object.
- PUBLIC SECTION.
- METHODS add REDEFINITION.
- METHODS get REDEFINITION.
- METHODS get_last REDEFINITION.
- METHODS get_size REDEFINITION.
- METHODS for_each REDEFINITION.
- METHODS where REDEFINITION.
- METHODS map REDEFINITION.
- METHODS sum REDEFINITION.
- METHODS for_each_where REDEFINITION.
- PRIVATE SECTION.
- DATA primitive_list TYPE STANDARD TABLE OF REF TO zhm_object WITH DEFAULT KEY.
- ENDCLASS.
- CLASS list_iterator DEFINITION INHERITING FROM zhm_object.
- PUBLIC SECTION.
- METHODS constructor IMPORTING list TYPE REF TO zhm_object.
- METHODS print REDEFINITION.
- PROTECTED SECTION.
- METHODS does_not_understand REDEFINITION.
- PRIVATE SECTION.
- DATA list TYPE REF TO zhm_object.
- ENDCLASS.
- CLASS list_iterator IMPLEMENTATION.
- METHOD constructor.
- super->constructor( ).
- me->list = list.
- ENDMETHOD.
- METHOD does_not_understand.
- DATA(index) = NEW zhm_integer( 1 ).
- WHILE index->lower_or_equal_to( list->get_size( ) )->is_true( ).
- DATA(object) = list->get( index ).
- object->receive_message( message ).
- index ?= index->next( ).
- ENDWHILE.
- return = me.
- ENDMETHOD.
- METHOD print.
- DATA(index) = NEW zhm_integer( 1 ).
- WHILE index->lower_or_equal_to( list->get_size( ) )->is_true( ).
- DATA(object) = list->get( index ).
- object->print( ).
- index ?= index->next( ).
- ENDWHILE.
- return = me.
- ENDMETHOD.
- ENDCLASS.
- CLASS list_filter DEFINITION INHERITING FROM zhm_object.
- PUBLIC SECTION.
- METHODS constructor IMPORTING list TYPE REF TO zhm_object.
- PROTECTED SECTION.
- METHODS does_not_understand REDEFINITION.
- PRIVATE SECTION.
- DATA list TYPE REF TO zhm_object.
- ENDCLASS.
- CLASS list_filter IMPLEMENTATION.
- METHOD constructor.
- super->constructor( ).
- me->list = list.
- ENDMETHOD.
- METHOD does_not_understand.
- DATA(new_list) = NEW zhm_list( ).
- DATA(index) = NEW zhm_integer( 1 ).
- WHILE index->lower_or_equal_to( list->get_size( ) )->is_true( ).
- DATA(object) = list->get( index ).
- DATA(condition) = object->receive_message( message ).
- IF condition->is_true( ).
- new_list->add( object ).
- ENDIF.
- index ?= index->next( ).
- ENDWHILE.
- return = new_list.
- ENDMETHOD.
- ENDCLASS.
- CLASS list_mapper DEFINITION INHERITING FROM zhm_object.
- PUBLIC SECTION.
- METHODS constructor IMPORTING list TYPE REF TO zhm_object.
- PROTECTED SECTION.
- METHODS does_not_understand REDEFINITION.
- PRIVATE SECTION.
- DATA list TYPE REF TO zhm_object.
- ENDCLASS.
- CLASS list_mapper IMPLEMENTATION.
- METHOD constructor.
- super->constructor( ).
- me->list = list.
- ENDMETHOD.
- METHOD does_not_understand.
- DATA(new_list) = NEW zhm_list( ).
- DATA(index) = NEW zhm_integer( 1 ).
- WHILE index->lower_or_equal_to( list->get_size( ) )->is_true( ).
- DATA(object) = list->get( index ).
- new_list->add( object->receive_message( message ) ).
- index ?= index->next( ).
- ENDWHILE.
- return = new_list.
- ENDMETHOD.
- ENDCLASS.
- CLASS list_filtered_iterator DEFINITION INHERITING FROM list_filter.
- PROTECTED SECTION.
- METHODS does_not_understand REDEFINITION.
- ENDCLASS.
- CLASS list_filtered_iterator IMPLEMENTATION.
- METHOD does_not_understand.
- return = super->does_not_understand( message )->for_each( ).
- ENDMETHOD.
- ENDCLASS.
- CLASS ZHM_LIST IMPLEMENTATION.
- * <SIGNATURE>---------------------------------------------------------------------------------------+
- * | Instance Public Method ZHM_LIST->ADD
- * +-------------------------------------------------------------------------------------------------+
- * | [--->] VALUE TYPE REF TO ZHM_OBJECT
- * | [<-()] RETURN TYPE REF TO ZHM_OBJECT
- * +--------------------------------------------------------------------------------------</SIGNATURE>
- METHOD add.
- APPEND value TO primitive_list.
- return = me.
- ENDMETHOD.
- * <SIGNATURE>---------------------------------------------------------------------------------------+
- * | Instance Public Method ZHM_LIST->FOR_EACH
- * +-------------------------------------------------------------------------------------------------+
- * | [<-()] RETURN TYPE REF TO ZHM_OBJECT
- * +--------------------------------------------------------------------------------------</SIGNATURE>
- METHOD for_each.
- return = NEW list_iterator( me ).
- ENDMETHOD.
- * <SIGNATURE>---------------------------------------------------------------------------------------+
- * | Instance Public Method ZHM_LIST->FOR_EACH_WHERE
- * +-------------------------------------------------------------------------------------------------+
- * | [<-()] RETURN TYPE REF TO ZHM_OBJECT
- * +--------------------------------------------------------------------------------------</SIGNATURE>
- METHOD for_each_where.
- return = NEW list_filtered_iterator( me ).
- ENDMETHOD.
- * <SIGNATURE>---------------------------------------------------------------------------------------+
- * | Instance Public Method ZHM_LIST->GET
- * +-------------------------------------------------------------------------------------------------+
- * | [--->] KEY TYPE REF TO ZHM_OBJECT
- * | [<-()] RETURN TYPE REF TO ZHM_OBJECT
- * +--------------------------------------------------------------------------------------</SIGNATURE>
- METHOD get.
- DATA(index) = key->to_primitive_integer( ).
- return = primitive_list[ index ].
- ENDMETHOD.
- * <SIGNATURE>---------------------------------------------------------------------------------------+
- * | Instance Public Method ZHM_LIST->GET_LAST
- * +-------------------------------------------------------------------------------------------------+
- * | [<-()] RETURN TYPE REF TO ZHM_OBJECT
- * +--------------------------------------------------------------------------------------</SIGNATURE>
- METHOD get_last.
- DATA(last_index) = lines( primitive_list ).
- return = primitive_list[ last_index ].
- ENDMETHOD.
- * <SIGNATURE>---------------------------------------------------------------------------------------+
- * | Instance Public Method ZHM_LIST->GET_SIZE
- * +-------------------------------------------------------------------------------------------------+
- * | [<-()] RETURN TYPE REF TO ZHM_OBJECT
- * +--------------------------------------------------------------------------------------</SIGNATURE>
- METHOD get_size.
- return = NEW zhm_integer( lines( primitive_list ) ).
- ENDMETHOD.
- * <SIGNATURE>---------------------------------------------------------------------------------------+
- * | Instance Public Method ZHM_LIST->MAP
- * +-------------------------------------------------------------------------------------------------+
- * | [<-()] RETURN TYPE REF TO ZHM_OBJECT
- * +--------------------------------------------------------------------------------------</SIGNATURE>
- METHOD map.
- return = NEW list_mapper( me ).
- ENDMETHOD.
- * <SIGNATURE>---------------------------------------------------------------------------------------+
- * | Instance Public Method ZHM_LIST->SUM
- * +-------------------------------------------------------------------------------------------------+
- * | [<-()] RETURN TYPE REF TO ZHM_OBJECT
- * +--------------------------------------------------------------------------------------</SIGNATURE>
- METHOD sum.
- DATA(total) = NEW zhm_integer( 0 ).
- DATA(index) = NEW zhm_integer( 1 ).
- WHILE index->lower_or_equal_to( me->get_size( ) )->is_true( ).
- DATA(object) = me->get( index ).
- total ?= total->plus( object ).
- index ?= index->next( ).
- ENDWHILE.
- return = total.
- ENDMETHOD.
- * <SIGNATURE>---------------------------------------------------------------------------------------+
- * | Instance Public Method ZHM_LIST->WHERE
- * +-------------------------------------------------------------------------------------------------+
- * | [<-()] RETURN TYPE REF TO ZHM_OBJECT
- * +--------------------------------------------------------------------------------------</SIGNATURE>
- METHOD where.
- return = NEW list_filter( me ).
- ENDMETHOD.
- ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement