
클래스
객체에 담긴 두 종류의 정보
- 속성(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) 할 수 있도록 함.
- 상속 관계가 아닌 클래스 사이에 호출할 수 있는 메소드~!