CLASS 구성요소
▪ 클래스의 모든 구성요소는 Declaration part(선언부)에서 선언
-> 구성 요소들은 클래스 내에서 객체의 속성을 정의한다.
▪ 클래스를 정의할 때, 각 항목은 3개의 접근 제한 영역(Visibility Section) 중 한 곳에서 선언되어야 한다.
(접근 제한 영역은 클래스 간의 외부 인터페이스(Interface)를 정의하여야 한다.)
▪ 클래스의 모든 항목은 클래스 내부에서는 모두 보이지만, 선언 방식에 따라서 다른 클래스에서는 보이지 않을 수(인터페이스 되지 않을 수) 있다.
▪ 클래스의 모든 항목은 Namespace에 존재하게 되며, 이것은 각 클래스 항목마다 유일한 이름을 가지게 된다는 것을 의미한다.
클래스의 두 가지 구성요소
▪ 클래스에는 두가지 종류의 구성 요소가 존재.
1.각 클래스의 객체마다 존재하는 것.
2. 인스턴스의 수와 상관없이 전체 클래스에서 오직 하나만 존재하는 것.
▪ 1. 각 클래스마다 존재하는 것.
Instance-specific 항목으로 Instance Component(인스턴스)라고 한다. 이것은 클래스를 참고하여 객체를 생성하면 메모리에 생성되는 즉 객체를 생성할 때마다 초기화되는 항목들이다.
▪ 2. 인스턴스의 수와 상관없이 전체 클래스에서 오직 하나만 존재하는 것.
Non Instance-specific 항목으로 Static Component라고 한다. 이것은 클래스 생성자(CREATE OBJECT 구문)을 만나면 프로그램이 종료될 때까지 메모리에 저장되며 클래스에 의존적인 항목이다.
Static 속성은 CLASS-DATA 구문으로 선언하고, Static 메서드는 CLASS-METHOD 구문으로 선언한다.
Static 속성과 메서드는 클래스의 컴포넌트를 조작하기 위해 선언되는 것이며, 객체를 생성하지 않아도 메모리에 로드되어 바로 사용할 수 있다.
Attribute(속성)
▪ 속성(Attribute)는 모든 ABAP 데이터 타입을 가질 수 있는 클래스의 내부 데이터 필드-> 객체의 상태는 Attribute의 콘텐츠에 의해 결정됨.
▪속성(Attribute)의 한가지 종류는 Reference Variable이다.
Reference Variable은 객체를 생성하고 주소를 지정한다.
Reference Variable은 클래스 내부에서 정의될 수 있으며, 클래스 내부로부터 객체에 접근할 수 있게 해준다.
▪속성(Attribute)의 타입(TYPE)
ATTRIBUTE 타입 |
ABAP 구문 |
Instance Attribute(인스턴스 속성) |
DATA |
Static Attribute(Static 속성) |
CLASS-DATA |
속성(Attribute)는 모든 ABAP 데이터 타입을 가질 수 있는 클래스의 내부 데이터 필드
-> 객체의 상태는 Attribute의 콘텐츠에 의해 결정됨
▪Instance Attribute(인스턴스 속성)
인스턴스 속성의 콘텐츠는 Instance-specific 객체의 상태를 정의.
클래스 내에서 DATA 구문을 사용해서 인스턴스를 선언할 수 있다.
DATA l_data TYPE C.
▪Static Attribute(Static 속성)
Static 속성의 콘텐츠는 클래스의 모든 인스턴스에 유용한 클래스의 상태를 정의한다. 즉 인스턴스 수에 상관없이 클래스에 의존적이며, 클래스만의 고유한 영역이다. CLASS-DATA 구문을 이용하여 선언한다. 클래스의 실행 환경에서 접근할 수 있다.
CLASS-DATA c_data TYPE i.
Method
▪메서드는 객체의 행위를 정의하는 클래스의 내부 수행 절차를 의미
▪1)메서드는 클래스의 모든 속성에 접근할 수 있으며, 메서드를 통해 객체의 내용을 변경할 수 있다.
▪2)파라미터 Interface를 제공하여 사용자가 값을 가지고 객체를 호출하고 호출 후 값을 되돌려 받을 수 있도록 한다.
▪클래스의 PRIVATE 속성은 동일 클래스의 메서드에 의해서만 변경할 수 있다.
-클래스 정의(DEFINITION) 부분에서 METHOD 구문을 이용해 정의하고,
-클래스 구현(IMPLEMENTATION) 부분에서 메서드 기능을 기술.
METHOD 타입 | ABAP 구문 |
Instance Method | METHOD로 선언 |
Static Method | CLASS-METHOD로 선언 |
Special Method | CONSTRUCTOR로 선언 CLASS-CONSTRUCTOR로 선언 EVENTS로 선언 |
Event
▪이벤트는 상속관계에 있지 않는 클래스 간에 메서드를 상호 호출하여 영향을 미칠 수 있는 특별한 메서드.
▪객체[또는 클래스]는 다른 객체[또는 클래스]의 이벤트 핸들러 메서드를 호출(Trigger)하기 위해 이벤트를 사용한다.
(이벤트 핸들러 메서드는 메서드의 한 종류이다.)
▪CALL METHOD 구문을 통해 일반 메서드를 호출하는 경우, 하나의 메서드는 수많은 객체에 의해 호출될 수 있다.
-> 이와 유사하게, 모든 객체가 이벤트 메서드를 호출할 수 있으며 이벤트의 소유주인 객체만이 이벤트를 실행할 수 있다.
▪일반 메서드를 호출하는 경우, 호출한 프로그램이 호출하고자하는 메서드를 결정지을 수 있다.
-> 이와 유사하게 이벤트에서는 핸들러가 반응하고자 하는 이벤트를 결정할 수 있다.
▪클래스의 이벤트는 RAISE EVENT 구문을 사용하는 같은 클래스의 메서드에서 호출된다.
▪다른 클래스의 이벤트를 호출할 때는 FOR EVENT [evt] OF CLASS 구문을 사용한다.(예시 : FOR EVENT toolbar OF cl_gui_alv_grid)
이벤트 선언 |
EVENTS [이벤트명] EXPORTING… VALUE(e1 e2 .) TYPE type (OPTIONAL)… |
이벤트 호출(trigger) |
RAISE EVENT [이벤트명] EXPORTING e1 = f1 e2 = f2… |
Event Handler Method 선언 |
METHODS meth FOR EVENT [이벤트명] OF [클래스명] IMPORTING e1 e2 … |
Event Handler Method 등록 |
SET HADLER h1 h2 … [FOR] … |
'ABAP 프로그래밍 개념 > Object-Oriented ABAP' 카테고리의 다른 글
Object Oriented 언어로서의 ABAP (0) | 2023.01.01 |
---|---|
METHOD (0) | 2020.08.15 |
OBJECT(객체)란? (1) | 2020.08.12 |
CLASS [1] (0) | 2020.08.04 |
클래스와 객체의 관계 & 클래스와 인스턴스 (1) | 2020.08.04 |