본문 바로가기

ABAP 프로그래밍 개념/Object-Oriented ABAP

CLASS [2] 구성요소


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