객체지향 프로그래밍

박재완·2025년 1월 25일

SAP ABAP (1 ~ 8일차)

목록 보기
5/8

객체 지향 프로그래밍(OOP)

1. Calling Methods of Global Classes

  • 글로벌 클래스(Global Classes)란?

    • 글로벌 클래스는 SAP Class Builder(SE24)에서 정의된 클래스입니다.
    • 시스템 전체에서 재사용 가능하며, 객체 지향 프로그래밍의 기본 단위입니다.
    • 글로벌 클래스는 속성(Attributes), 메서드(Methods), 이벤트(Events), 인터페이스(Interfaces)로 구성됩니다.
  • 메서드 호출 방법

    • 인스턴스 메서드 호출: 객체를 생성한 후 메서드를 호출.
    • 정적 메서드 호출: 클래스 이름을 통해 바로 호출.
  • 예제

    " 글로벌 클래스의 인스턴스 메서드 호출
    DATA: lo_class TYPE REF TO zcl_example_class,
          lv_result TYPE I.
    
    CREATE OBJECT lo_class.
    CALL METHOD lo_class->calculate_sum
      EXPORTING
        iv_num1 = 10
        iv_num2 = 20
      IMPORTING
        ev_result = lv_result.
    
    WRITE: / 'Result:', lv_result.
    
    " 정적 메서드 호출
    CALL METHOD zcl_example_class=>display_message
      EXPORTING
        iv_message = 'Hello ABAP OOP!'.
  • 구성 요소 설명

    • zcl_example_class: 글로벌 클래스.
    • calculate_sum: 인스턴스 메서드.
    • display_message: 정적 메서드.

2. Creating Global Classes and Static Methods

  • 글로벌 클래스 생성

    • SAP의 SE24 트랜잭션을 사용하여 글로벌 클래스를 생성.
    • 클래스는 다음 구성 요소를 가질 수 있습니다:
      1. Attributes (속성): 클래스나 객체의 상태를 나타냄.
      2. Methods (메서드): 클래스나 객체의 동작을 정의.
      3. Events (이벤트): 특정 조건에서 발생하는 신호.
      4. Interfaces (인터페이스): 클래스에서 구현해야 하는 계약.
  • 정적 메서드 생성

    • 정적 메서드는 객체를 생성하지 않고 클래스 이름으로 직접 호출할 수 있는 메서드입니다.
    • 선언 시 STATIC 키워드를 사용.
  • 정적 메서드 예제

    CLASS zcl_example_class DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS display_message
          IMPORTING
            iv_message TYPE STRING.
    ENDCLASS.
    
    CLASS zcl_example_class IMPLEMENTATION.
      METHOD display_message.
        WRITE: / iv_message.
      ENDMETHOD.
    ENDCLASS.
    
    " 정적 메서드 호출
    CALL METHOD zcl_example_class=>display_message
      EXPORTING
        iv_message = 'This is a static method!'.
  • 정적 메서드의 특징

    • 메모리에 한 번만 로드되므로 성능이 좋음.
    • 객체 상태와 상관없는 유틸리티 성격의 작업에 적합.

3. Using Local Classes

  • 로컬 클래스(Local Classes)란?

    • 로컬 클래스는 ABAP 프로그램 내에서만 사용 가능한 클래스입니다.
    • 글로벌 클래스보다 간단한 구조를 가지며, 특정 프로그램에서만 필요한 로직을 구현할 때 사용합니다.
  • 로컬 클래스의 정의 및 사용

    • 로컬 클래스는 CLASS ... DEFINITIONCLASS ... IMPLEMENTATION으로 정의합니다.
    • 프로그램 내에서 인스턴스를 생성하여 사용.
  • 예제

    REPORT zlocal_class_example.
    
    CLASS lcl_example DEFINITION.
      PUBLIC SECTION.
        METHODS calculate_sum
          IMPORTING iv_num1 TYPE I
                    iv_num2 TYPE I
          RETURNING VALUE(rv_result) TYPE I.
    ENDCLASS.
    
    CLASS lcl_example IMPLEMENTATION.
      METHOD calculate_sum.
        rv_result = iv_num1 + iv_num2.
      ENDMETHOD.
    ENDCLASS.
    
    " 로컬 클래스 사용
    DATA: lo_example TYPE REF TO lcl_example,
          lv_result TYPE I.
    
    CREATE OBJECT lo_example.
    lv_result = lo_example->calculate_sum( iv_num1 = 15 iv_num2 = 25 ).
    WRITE: / 'Sum:', lv_result.
  • 로컬 클래스의 특징

    • 해당 프로그램 내에서만 유효.
    • 간단한 프로그램 모듈화를 위해 적합.
    • 글로벌 클래스를 생성할 필요가 없는 경우 사용.

객체 지향 프로그래밍의 주요 개념

  1. 캡슐화(Encapsulation):

    • 데이터와 메서드를 하나의 단위로 묶고, 외부에서 직접 접근하지 못하도록 보호.
    • PRIVATE, PROTECTED, PUBLIC 접근 지정자를 통해 제어.
  2. 상속(Inheritance):

    • 부모 클래스의 속성과 메서드를 자식 클래스가 상속받아 재사용.
    • 자식 클래스에서 부모 메서드를 재정의(Overriding) 가능.
    CLASS parent_class DEFINITION.
      PUBLIC SECTION.
        METHODS display_message.
    ENDCLASS.
    
    CLASS child_class DEFINITION INHERITING FROM parent_class.
      PUBLIC SECTION.
        METHODS display_message REDEFINITION.
    ENDCLASS.
    
    CLASS child_class IMPLEMENTATION.
      METHOD display_message.
        WRITE: / 'Child class message.'.
      ENDMETHOD.
    ENDCLASS.
  3. 다형성(Polymorphism):

    • 같은 메서드 이름이 다른 구현을 가질 수 있음.
    • 인터페이스와 상속을 통해 구현.

요약

  • 글로벌 클래스: 시스템 전역에서 사용 가능, SAP Class Builder에서 정의.
  • 로컬 클래스: 프로그램 내에서만 사용, 특정 작업에 적합.
  • 정적 메서드: 객체 생성 없이 호출 가능, 유틸리티 함수에 적합.
profile
안녕하세요!

0개의 댓글