BC401-1 (오후)

Beemajor·2024년 8월 12일
post-thumbnail


CLASS lcl_airline DEFINITION.
  PUBLIC SECTION.
    METHODS: constructor
      IMPORTING iv_carrid TYPE scarr-carrid,
      get_info EXPORTING ev_info TYPE string.
  PRIVATE SECTION.
    DATA: carrid   TYPE scarr-carrid,
          carrname TYPE scarr-carrname.
ENDCLASS.

Public Section:

  • constructor: 객체 생성 시 호출되는 생성자 메서드. iv_carrid를 받아 객체의 carrid 필드를 초기화합니다.
  • get_info: 항공사 정보를 문자열로 반환하는 메서드입니다.

Private Section:

  • carrid: 항공사 ID를 저장합니다.
  • carrname: 항공사 이름을 저장합니다.
CLASS lcl_airline IMPLEMENTATION.
  METHOD constructor.
    me->carrid = iv_carrid.
    SELECT SINGLE carrname
      FROM scarr
      INTO me->carrname
     WHERE carrid = me->carrid.
  ENDMETHOD.
  *
   METHOD get_info.
    ev_info = me->carrid && ':' && me->carrname.
  ENDMETHOD.
ENDCLASS.

Constructor:

  • me->carrid = iv_carrid. : 전달받은 iv_carrid 값을 클래스의 carrid 필드에 저장합니다.
  • scarr 테이블에서 carrid 에 해당하는 carrname(항공사 이름)을 조회하여 carrname 필드에 저장합니다.
    get_info:
  • ev_info = me->carrid && ':' && me->carrname.:
    carrid와 carrname을 결합하여 ev_info에 반환합니다. && 연산자는 문자열을 연결합니다.
DATA go_air01 TYPE REF TO lcl_airline.
DATA go_air02 LIKE go_air01.
DATA gv_info TYPE string.
  • go_air01과 go_air02는 lcl_airline 클래스를 참조하는 객체 변수입니다.
  • gv_info는 문자열을 저장할 변수로, get_info 메서드에서 반환된 정보를 담기 위해 사용됩니다.
START-OF-SELECTION.
  CREATE OBJECT go_air01
    EXPORTING
      iv_carrid = 'AA'.
  CREATE OBJECT go_air02
    EXPORTING
      iv_carrid = 'UA'.

객체 생성:

  • go_air01 객체를 생성하면서 iv_carrid = 'AA'를 전달합니다.
    이 값은 carrid 필드에 저장되고, carrname 필드는 scarr 테이블에서 'AA'에 해당하는 이름을 조회하여 저장됩니다.
  • go_air02 객체도 같은 방식으로 생성되며, 'UA'라는 항공사 ID를 가지고 있습니다.
  CLEAR gv_info.
  CALL METHOD go_air01->get_info
    IMPORTING
      ev_info = gv_info.
  WRITE gv_info.

get_info 메서드 호출 및 출력:
go_air01->get_info를 호출하여 gv_info에 항공사 정보를 저장합니다.
WRITE gv_info.는 'AA'와 관련된 항공사 정보를 출력합니다.

  NEW-LINE. 
  CLEAR gv_info.
  go_air02->get_info(
    IMPORTING
      ev_info = gv_info
  ).
  WRITE gv_info.

NEW-LINE으로 줄바꿈 후 go_air02 객체의 정보를 같은 방식으로 출력합니다.

WRITE go_air01->carrid. 이렇게 private을 그냥 볼 수는 없다.
WRITE go_air01->carrid.는 불가능합니다.
그 이유는 carrid 필드가 클래스의 PRIVATE SECTION에 정의되어 있기 때문입니다.

ABAP에서는 PRIVATE SECTION에 정의된 데이터는 클래스 외부에서 직접 접근할 수 없습니다.
go_air01->carrid와 같은 접근은 클래스 내부에서만 가능합니다.

profile
i'm Graphic Designer

0개의 댓글