CLASS EVENT

*&---------------------------------------------------------------------*
*& Report  ZTCXHTEST_COUNT_EVENT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZTCXHTEST_COUNT_EVENT.
*----------------------------------------------------------------------*
*       CLASS vehicle DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS vehicle DEFINITION INHERITING FROM object.
  PUBLIC SECTION.
    EVENTS  too_fast.
    METHODS: show_speed, accelerate.
  PROTECTED SECTION.
    DATA  speed TYPE i.
ENDCLASS.                    "vehicle DEFINITION

*----------------------------------------------------------------------*
*       CLASS vehicle IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS vehicle IMPLEMENTATION.
  METHOD accelerate.
    speed = speed + 1.
    IF speed > 5.
      RAISE EVENT too_fast.
      speed = 5.
    ENDIF.
  ENDMETHOD.                    "accelerate
  METHOD  show_speed.
    WRITE:  / 'speed', speed.
  ENDMETHOD.                    "show_speed
ENDCLASS.                    "vehicle IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS handler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS handler DEFINITION.
  PUBLIC SECTION.
    METHODS handle_event FOR EVENT too_fast OF  vehicle.
ENDCLASS.                    "handler DEFINITION

*----------------------------------------------------------------------*
*       CLASS handler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS handler IMPLEMENTATION.
  METHOD handle_event.
    WRITE:  / 'speed can not too fast.'.
    "speed = 10.
  ENDMETHOD.                    "handle_event
ENDCLASS.                    "handler IMPLEMENTATION

DATA: vehical_ref TYPE REF TO vehicle,
      handler_ref TYPE REF TO handler.

START-OF-SELECTION.
  CREATE OBJECT:  vehical_ref,handler_ref.
  SET HANDLER handler_ref->handle_event FOR ALL INSTANCES.
  DO 11 TIMES.
    CALL METHOD:  vehical_ref->accelerate,
                  vehical_ref->show_speed.
  ENDDO.


猜你喜欢

转载自caoxuhuan.iteye.com/blog/925395