2008 May 02 7:09 AM
Hi,
Can anyone send one total report using OOPS Concept.
Thankyou,
Kiranmai.
2008 May 02 7:28 AM
hi,
REPORT sapbc404gens_inh_polymorphism .
INCLUDE sapbc404gens_lcl_airplane.
INCLUDE sapbc404gens_lcl_passenger_air.
INCLUDE sapbc404gens_lcl_cargo_air.
* New include
INCLUDE sapbc404gens_lcl_carrier_1.
DATA: passenger_airplane TYPE REF TO lcl_passenger_airplane,
cargo_airplane TYPE REF TO lcl_cargo_airplane,
* new reference
carrier TYPE REF TO lcl_carrier.
START-OF-SELECTION.
* CALL METHOD lcl_airplane=>display_n_o_airplanes.
CREATE OBJECT passenger_airplane EXPORTING
im_name = 'LH Berlin'
im_planetype = '747-400'
im_n_o_seats = 580.
CREATE OBJECT cargo_airplane EXPORTING
im_name = 'US Hercules'
im_planetype = 'Galaxy'
im_cargo_max = 30000.
* CALL METHOD passenger_airplane->display_attributes.
* CALL METHOD cargo_airplane->display_attributes.
* CALL METHOD lcl_airplane=>display_n_o_airplanes.
* new coding
* Create a carrier
CREATE OBJECT carrier EXPORTING im_name = 'Lufthansa'.
* Add passenger airplane to airplane list
CALL METHOD carrier->add_a_new_airplane EXPORTING
im_airplane = passenger_airplane.
* Create new passenger airplane
CREATE OBJECT passenger_airplane EXPORTING
im_name = 'LH München'
im_planetype = 'A310-300'
im_n_o_seats = 280.
* Add new passenger airplane to airplane list
CALL METHOD carrier->add_a_new_airplane EXPORTING
im_airplane = passenger_airplane.
* Add cargo airplane to airplane list
CALL METHOD carrier->add_a_new_airplane EXPORTING
im_airplane = cargo_airplane.
* Display all airplanes of airplane list
CALL METHOD carrier->display_airplanes.
Include program SAPBC404GENS_LCL_AIRPLANE
*------------------------------------------------------------------*
* CLASS lcl_airplane DEFINITION *
*------------------------------------------------------------------*
CLASS lcl_airplane DEFINITION.
PUBLIC SECTION.
TYPES: name_type(25) TYPE c.
CONSTANTS: pos_1 TYPE i VALUE 30.
METHODS: constructor IMPORTING
im_name TYPE name_type
im_planetype TYPE saplane-planetype,
set_attributes IMPORTING
im_name TYPE name_type
im_planetype TYPE saplane-planetype,
display_attributes.
CLASS-METHODS: display_n_o_airplanes.
* NEW: protected section
PROTECTED SECTION.
DATA: name TYPE name_type,
planetype TYPE saplane-planetype.
PRIVATE SECTION.
CLASS-DATA: n_o_airplanes TYPE i.
ENDCLASS.
*------------------------------------------------------------------*
* CLASS lcl_airplane IMPLEMENTATION *
*------------------------------------------------------------------*
CLASS lcl_airplane IMPLEMENTATION.
METHOD constructor.
name = im_name.
planetype = im_planetype.
n_o_airplanes = n_o_airplanes + 1.
ENDMETHOD.
METHOD set_attributes.
name = im_name.
planetype = im_planetype.
ENDMETHOD.
METHOD display_attributes.
WRITE: / 'Name of the airplane: '(001), AT pos_1 name,
/ 'Plane type: '(002), AT pos_1 planetype.
ENDMETHOD.
METHOD display_n_o_airplanes.
WRITE: /, / 'Total number of airplanes: '(ca1),
AT pos_1 n_o_airplanes LEFT-JUSTIFIED, /.
ENDMETHOD.
ENDCLASS.
Include program SAPBC404GENS_LCL_PASSENGER_AIR
*------------------------------------------------------------------*
* CLASS lcl_passenger_airplane DEFINITION *
*------------------------------------------------------------------*
CLASS lcl_passenger_airplane DEFINITION INHERITING FROM
lcl_airplane.
PUBLIC SECTION.
METHODS: constructor IMPORTING
im_name TYPE name_type
im_planetype TYPE saplane-planetype
im_n_o_seats TYPE sflight-seatsmax,
display_attributes REDEFINITION.
PRIVATE SECTION.
DATA: n_o_seats TYPE sflight-seatsmax.
ENDCLASS.
*------------------------------------------------------------------*
* CLASS lcl_passenger_airplane IMPLEMENTATION *
*------------------------------------------------------------------*
CLASS lcl_passenger_airplane IMPLEMENTATION.
METHOD constructor.
CALL METHOD super->constructor EXPORTING
im_name = im_name
im_planetype = im_planetype.
n_o_seats = im_n_o_seats.
ENDMETHOD.
METHOD display_attributes.
CALL METHOD super->display_attributes.
WRITE: / 'Number of seats: '(003), 25 n_o_seats, /.
ENDMETHOD.
ENDCLASS.
Include program SAPBC404GENS_LCL_CARGO_AIR
*------------------------------------------------------------------*
* CLASS lcl_cargo_airplane DEFINITION *
*------------------------------------------------------------------*
CLASS lcl_cargo_airplane DEFINITION INHERITING FROM lcl_airplane.
PUBLIC SECTION.
METHODS: constructor IMPORTING
im_name TYPE name_type
im_planetype TYPE saplane-planetype
im_cargo_max TYPE p,
display_attributes REDEFINITION.
PRIVATE SECTION.
DATA: cargo_max TYPE scplane-cargomax.
ENDCLASS.
*------------------------------------------------------------------*
* CLASS lcl_cargo_airplane IMPLEMENTATION *
*------------------------------------------------------------------*
CLASS lcl_cargo_airplane IMPLEMENTATION.
METHOD constructor.
CALL METHOD super->constructor EXPORTING
im_name = im_name
im_planetype = im_planetype.
cargo_max = im_cargo_max.
ENDMETHOD.
METHOD display_attributes.
CALL METHOD super->display_attributes.
WRITE: / 'Maximal cargo: '(004),
at pos_1 cargo_max left-justified, /.
ENDMETHOD.
ENDCLASS.
Include program SAPBC404GENS_LCL_CARRIER_1
*------------------------------------------------------------------*
* CLASS lcl_carrier DEFINITION *
*------------------------------------------------------------------*
CLASS lcl_carrier DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF flight_list_type,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
airplane TYPE REF TO lcl_airplane,
seatsocc TYPE sflight-seatsocc,
cargo(5) TYPE p DECIMALS 3,
END OF flight_list_type.
METHODS: constructor IMPORTING im_name TYPE string,
get_name returning value(ex_name) type string,
* add a new airplane
add_a_new_airplane IMPORTING
im_airplane TYPE REF TO lcl_airplane,
create_a_new_flight IMPORTING
im_connid TYPE sflight-connid
im_fldate TYPE sflight-fldate
im_airplane TYPE REF TO lcl_airplane
im_seatsocc TYPE sflight-seatsocc
OPTIONAL
im_cargo TYPE p OPTIONAL,
* display airplanes
display_airplanes.
PRIVATE SECTION.
DATA: name TYPE string,
list_of_airplanes TYPE TABLE OF REF TO lcl_airplane,
list_of_flights TYPE TABLE OF flight_list_type.
ENDCLASS.
*------------------------------------------------------------------*
* CLASS lcl_carrier IMPLEMENTATION
*------------------------------------------------------------------*
CLASS lcl_carrier IMPLEMENTATION.
METHOD constructor.
name = im_name.
ENDMETHOD.
METHOD get_name.
ex_name = name.
ENDMETHOD.
* add a new airplane
METHOD add_a_new_airplane.
APPEND im_airplane TO list_of_airplanes.
ENDMETHOD.
METHOD create_a_new_flight.
DATA: wa_list_of_flights TYPE flight_list_type.
wa_list_of_flights-connid = im_connid.
wa_list_of_flights-fldate = im_fldate.
wa_list_of_flights-airplane = im_airplane.
IF im_seatsocc IS INITIAL.
wa_list_of_flights-cargo = im_cargo.
ELSE.
wa_list_of_flights-seatsocc = im_seatsocc.
ENDIF.
APPEND wa_list_of_flights TO list_of_flights.
ENDMETHOD.
* display airplanes
METHOD display_airplanes.
DATA airplane TYPE REF TO lcl_airplane.
LOOP AT list_of_airplanes INTO airplane.
* Polymorphism: calling different method implementations
* by one call
CALL METHOD airplane->display_attributes.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
Hope this helps, Do reward.
2008 May 02 7:14 AM
Hi,
Please see this [link ( Abap - OOP Report ).|https://www.sdn.sap.com/irj/sdn/wiki?path=/pages/viewpage.action&pageid=26810]
Regards,
2008 May 02 7:28 AM
hi,
REPORT sapbc404gens_inh_polymorphism .
INCLUDE sapbc404gens_lcl_airplane.
INCLUDE sapbc404gens_lcl_passenger_air.
INCLUDE sapbc404gens_lcl_cargo_air.
* New include
INCLUDE sapbc404gens_lcl_carrier_1.
DATA: passenger_airplane TYPE REF TO lcl_passenger_airplane,
cargo_airplane TYPE REF TO lcl_cargo_airplane,
* new reference
carrier TYPE REF TO lcl_carrier.
START-OF-SELECTION.
* CALL METHOD lcl_airplane=>display_n_o_airplanes.
CREATE OBJECT passenger_airplane EXPORTING
im_name = 'LH Berlin'
im_planetype = '747-400'
im_n_o_seats = 580.
CREATE OBJECT cargo_airplane EXPORTING
im_name = 'US Hercules'
im_planetype = 'Galaxy'
im_cargo_max = 30000.
* CALL METHOD passenger_airplane->display_attributes.
* CALL METHOD cargo_airplane->display_attributes.
* CALL METHOD lcl_airplane=>display_n_o_airplanes.
* new coding
* Create a carrier
CREATE OBJECT carrier EXPORTING im_name = 'Lufthansa'.
* Add passenger airplane to airplane list
CALL METHOD carrier->add_a_new_airplane EXPORTING
im_airplane = passenger_airplane.
* Create new passenger airplane
CREATE OBJECT passenger_airplane EXPORTING
im_name = 'LH München'
im_planetype = 'A310-300'
im_n_o_seats = 280.
* Add new passenger airplane to airplane list
CALL METHOD carrier->add_a_new_airplane EXPORTING
im_airplane = passenger_airplane.
* Add cargo airplane to airplane list
CALL METHOD carrier->add_a_new_airplane EXPORTING
im_airplane = cargo_airplane.
* Display all airplanes of airplane list
CALL METHOD carrier->display_airplanes.
Include program SAPBC404GENS_LCL_AIRPLANE
*------------------------------------------------------------------*
* CLASS lcl_airplane DEFINITION *
*------------------------------------------------------------------*
CLASS lcl_airplane DEFINITION.
PUBLIC SECTION.
TYPES: name_type(25) TYPE c.
CONSTANTS: pos_1 TYPE i VALUE 30.
METHODS: constructor IMPORTING
im_name TYPE name_type
im_planetype TYPE saplane-planetype,
set_attributes IMPORTING
im_name TYPE name_type
im_planetype TYPE saplane-planetype,
display_attributes.
CLASS-METHODS: display_n_o_airplanes.
* NEW: protected section
PROTECTED SECTION.
DATA: name TYPE name_type,
planetype TYPE saplane-planetype.
PRIVATE SECTION.
CLASS-DATA: n_o_airplanes TYPE i.
ENDCLASS.
*------------------------------------------------------------------*
* CLASS lcl_airplane IMPLEMENTATION *
*------------------------------------------------------------------*
CLASS lcl_airplane IMPLEMENTATION.
METHOD constructor.
name = im_name.
planetype = im_planetype.
n_o_airplanes = n_o_airplanes + 1.
ENDMETHOD.
METHOD set_attributes.
name = im_name.
planetype = im_planetype.
ENDMETHOD.
METHOD display_attributes.
WRITE: / 'Name of the airplane: '(001), AT pos_1 name,
/ 'Plane type: '(002), AT pos_1 planetype.
ENDMETHOD.
METHOD display_n_o_airplanes.
WRITE: /, / 'Total number of airplanes: '(ca1),
AT pos_1 n_o_airplanes LEFT-JUSTIFIED, /.
ENDMETHOD.
ENDCLASS.
Include program SAPBC404GENS_LCL_PASSENGER_AIR
*------------------------------------------------------------------*
* CLASS lcl_passenger_airplane DEFINITION *
*------------------------------------------------------------------*
CLASS lcl_passenger_airplane DEFINITION INHERITING FROM
lcl_airplane.
PUBLIC SECTION.
METHODS: constructor IMPORTING
im_name TYPE name_type
im_planetype TYPE saplane-planetype
im_n_o_seats TYPE sflight-seatsmax,
display_attributes REDEFINITION.
PRIVATE SECTION.
DATA: n_o_seats TYPE sflight-seatsmax.
ENDCLASS.
*------------------------------------------------------------------*
* CLASS lcl_passenger_airplane IMPLEMENTATION *
*------------------------------------------------------------------*
CLASS lcl_passenger_airplane IMPLEMENTATION.
METHOD constructor.
CALL METHOD super->constructor EXPORTING
im_name = im_name
im_planetype = im_planetype.
n_o_seats = im_n_o_seats.
ENDMETHOD.
METHOD display_attributes.
CALL METHOD super->display_attributes.
WRITE: / 'Number of seats: '(003), 25 n_o_seats, /.
ENDMETHOD.
ENDCLASS.
Include program SAPBC404GENS_LCL_CARGO_AIR
*------------------------------------------------------------------*
* CLASS lcl_cargo_airplane DEFINITION *
*------------------------------------------------------------------*
CLASS lcl_cargo_airplane DEFINITION INHERITING FROM lcl_airplane.
PUBLIC SECTION.
METHODS: constructor IMPORTING
im_name TYPE name_type
im_planetype TYPE saplane-planetype
im_cargo_max TYPE p,
display_attributes REDEFINITION.
PRIVATE SECTION.
DATA: cargo_max TYPE scplane-cargomax.
ENDCLASS.
*------------------------------------------------------------------*
* CLASS lcl_cargo_airplane IMPLEMENTATION *
*------------------------------------------------------------------*
CLASS lcl_cargo_airplane IMPLEMENTATION.
METHOD constructor.
CALL METHOD super->constructor EXPORTING
im_name = im_name
im_planetype = im_planetype.
cargo_max = im_cargo_max.
ENDMETHOD.
METHOD display_attributes.
CALL METHOD super->display_attributes.
WRITE: / 'Maximal cargo: '(004),
at pos_1 cargo_max left-justified, /.
ENDMETHOD.
ENDCLASS.
Include program SAPBC404GENS_LCL_CARRIER_1
*------------------------------------------------------------------*
* CLASS lcl_carrier DEFINITION *
*------------------------------------------------------------------*
CLASS lcl_carrier DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF flight_list_type,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
airplane TYPE REF TO lcl_airplane,
seatsocc TYPE sflight-seatsocc,
cargo(5) TYPE p DECIMALS 3,
END OF flight_list_type.
METHODS: constructor IMPORTING im_name TYPE string,
get_name returning value(ex_name) type string,
* add a new airplane
add_a_new_airplane IMPORTING
im_airplane TYPE REF TO lcl_airplane,
create_a_new_flight IMPORTING
im_connid TYPE sflight-connid
im_fldate TYPE sflight-fldate
im_airplane TYPE REF TO lcl_airplane
im_seatsocc TYPE sflight-seatsocc
OPTIONAL
im_cargo TYPE p OPTIONAL,
* display airplanes
display_airplanes.
PRIVATE SECTION.
DATA: name TYPE string,
list_of_airplanes TYPE TABLE OF REF TO lcl_airplane,
list_of_flights TYPE TABLE OF flight_list_type.
ENDCLASS.
*------------------------------------------------------------------*
* CLASS lcl_carrier IMPLEMENTATION
*------------------------------------------------------------------*
CLASS lcl_carrier IMPLEMENTATION.
METHOD constructor.
name = im_name.
ENDMETHOD.
METHOD get_name.
ex_name = name.
ENDMETHOD.
* add a new airplane
METHOD add_a_new_airplane.
APPEND im_airplane TO list_of_airplanes.
ENDMETHOD.
METHOD create_a_new_flight.
DATA: wa_list_of_flights TYPE flight_list_type.
wa_list_of_flights-connid = im_connid.
wa_list_of_flights-fldate = im_fldate.
wa_list_of_flights-airplane = im_airplane.
IF im_seatsocc IS INITIAL.
wa_list_of_flights-cargo = im_cargo.
ELSE.
wa_list_of_flights-seatsocc = im_seatsocc.
ENDIF.
APPEND wa_list_of_flights TO list_of_flights.
ENDMETHOD.
* display airplanes
METHOD display_airplanes.
DATA airplane TYPE REF TO lcl_airplane.
LOOP AT list_of_airplanes INTO airplane.
* Polymorphism: calling different method implementations
* by one call
CALL METHOD airplane->display_attributes.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
Hope this helps, Do reward.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |