53 lines
1.5 KiB
ABAP
53 lines
1.5 KiB
ABAP
CLASS {{p}}balloon_checker DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
|
PUBLIC SECTION.
|
|
METHODS check_flight
|
|
IMPORTING iv_passengers TYPE i
|
|
iv_weight_kg TYPE i
|
|
iv_wind_kmh TYPE i
|
|
iv_cloud_base_m TYPE i
|
|
RETURNING VALUE(rv_free_kg) TYPE i
|
|
RAISING {{p}}cx_balloon_flight.
|
|
|
|
PRIVATE SECTION.
|
|
CONSTANTS:
|
|
c_max_passengers TYPE i VALUE 8,
|
|
c_max_weight_kg TYPE i VALUE 640,
|
|
c_max_wind_kmh TYPE i VALUE 18,
|
|
c_min_cloud_base_m TYPE i VALUE 300.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}balloon_checker IMPLEMENTATION.
|
|
METHOD check_flight.
|
|
IF iv_passengers > c_max_passengers.
|
|
RAISE EXCEPTION TYPE {{p}}cx_balloon_crew
|
|
EXPORTING
|
|
iv_passengers = iv_passengers
|
|
iv_limit = c_max_passengers.
|
|
ENDIF.
|
|
|
|
IF iv_weight_kg > c_max_weight_kg.
|
|
RAISE EXCEPTION TYPE {{p}}cx_balloon_weight
|
|
EXPORTING
|
|
iv_weight_kg = iv_weight_kg
|
|
iv_limit_kg = c_max_weight_kg.
|
|
ENDIF.
|
|
|
|
IF iv_wind_kmh > c_max_wind_kmh.
|
|
RAISE EXCEPTION TYPE {{p}}cx_balloon_wind
|
|
EXPORTING
|
|
iv_wind_kmh = iv_wind_kmh
|
|
iv_limit_kmh = c_max_wind_kmh.
|
|
ENDIF.
|
|
|
|
IF iv_cloud_base_m < c_min_cloud_base_m.
|
|
RAISE EXCEPTION TYPE {{p}}cx_balloon_cloud
|
|
EXPORTING
|
|
iv_cloud_base_m = iv_cloud_base_m
|
|
iv_limit_m = c_min_cloud_base_m.
|
|
ENDIF.
|
|
|
|
rv_free_kg = c_max_weight_kg - iv_weight_kg.
|
|
ENDMETHOD.
|
|
ENDCLASS.
|