ABAP OOP와 Class

onlog·2024년 10월 18일
post-thumbnail

클래스

객체에 담긴 두 종류의 정보

  • 속성(attributes, properties) : 상태(state)를 나타내는 데이터
  • 메서드(method) : 행동(behavior)을 나타내는 데이터

🖋️OOP

⭐캡슐화 = 은닉화

  • 변수와 메소드를 하나로 묶음
  • 데이터를 외부에서 직접 접근하지 않고 함수를 통해서만 접근
  • PUBLIC / PRIVATE / PROTECTED

⭐상속

  • 자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것
  • 기능의 일부분을 변경하는 경우 자식 클래스에서 상속받아 수정 및 사용
  • 상속은 캡슐화 / 클래스의 재활용을 용이하도록 함

⭐추상화

  • 인터페이스로 클래스들의 공통적인 특성(변수, 메소드) 들을 묶어 표현하는 것
  • 함수의 이름, 매개변수 정보, Return Type 등의 정보만 있음
  • 이러한 추상 메소드를 품고 있는 클래스를 추상클래스라고 함
    • 추상 클래스는 상속에 의해서만 구현되며, 추상클래스 내에서 로직 구현 x → 서브루틴 활용

⭐다형성

  • 어떤 변수, 메소드가 상황에 따라 다른 결과를 내는 것
  • Overloading : 하나의 클래스에서 메소드의 이름은 같지만 파라미터가 다른 것
  • Overriging : 부모 클래스의 메소드를 자식 클래스의 용도에 맞게 재정의하여 코드의 재사용성을 높임

🙌Global Class vs Local Class

⭐Global Class

  • T-Code SE24에서 생성/수정/조회 가능한 클래스

⭐Local Class

  • SAP ABAP 프로그램 내에서 선언하여 사용하는 클래스

🙌Local Class

⭐클래스 선언/정의

CLASS **lcl_event_handler** DEFINITION FINAL.   "정의부 - METHODS

  PUBLIC SECTION.
*-- Static Method
    **CLASS-METHODS** double_click FOR EVENT double_click OF cl_gui_alv_grid
      IMPORTING e_row e_column.

*-- Instance Method
    **METHODS** hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
      IMPORTING e_row_id e_column_id.

ENDCLASS.

⭐클래스 구현

CLASS **lcl_event_handler** IMPLEMENTATION.   "구현부 - METHOD
*-- 다형성 OVERRIDNG 상속에 의한 메소드 재정의
  **METHOD double_click.**

    PERFORM handle_double_click USING e_row e_column.

  **ENDMETHOD.**
  
  **METHOD hotspot_click.**

    PERFORM handle_hotspot_click USING e_row_id e_column_id. 

  **ENDMETHOD.**                 " 자동완성 안 됨

ENDCLASS.

🙌Attributes

  • 클래스 내에서 선언된 Data Field
  • C, I, F, N 타입만 선언 가능
  • 객체의 구조를 나타냄
  • 클래스의 메소드가 참조할 변수들의 type 모음집이라고 이해하면 쉬울 듯

🙌Method

  • 메소드는 클래스의 모든 속성(Attributes)에 접근할 수 있으며, 이에 따라 Object의 상태 변경
  • 메소드는 parameter 값을 받아 동작을 수행한 후 return value를 돌려 줌

⭐STATIC TYPE METHOD

  • CLASS 이름 METHOD
  • 클래스 자체에 소속/생성된 놈
  • 메모리에 고정적으로 할당됨
  • 객체 생성 없이(클래스 인스턴스 생성 없이) 할당됨
  • 클래스 이름으로 접근해서 사용할 수 있음

⭐INSTANCE TYPE METHOD

  • CLASS 이름 METHOD
  • 인스턴스가 생성될 때 메모리가 확보됨
  • 인스턴스 : 클래스를 대표하는 이름, ALIAS, 클래스를 참조하는 변수
  • 인스턴스로 접근해 사용 가능.
호출 화살표의미호출하는 주체
->인스턴스 통해서 CALL동적(dynamic)
=>클래스 명으로 direct call정적(static)

🙌Instance

  • 하나의 클래스로부터 객체로 선언한 형태
  • 클래스로부터 생성된 객체
  • 클래스를 참조하는 변수

🙌Events

  • Object나 Class에게 다른 Object나 Class의 Event hander method를 연쇄 작동(Trigger) 할 수 있도록 함.
  • 상속 관계가 아닌 클래스 사이에 호출할 수 있는 메소드~!
profile
짱이 되겠어

0개의 댓글