본문 바로가기

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

Principles of OOP Part4 : Constructor

Constructor은 클래스 안의 PUBLIC SECTION에서 정의된 Instance constructor에서는 constructor, Static Constructor에서는 class-constructor 라는 이름을 가진 특수한 method입니다. 각 클래스는 최대 한개의 Instace Constructor와 Static Constructor를 가질 수 있습니다. Constructor는 클래스에서 정의되는 optional(선택적인) method로서 Instace Constructor의 경우 Attrubutes를 초기화하고 Static Constructor의 경우 클래스에 처음 접근할 때 특수한 업무(special task)를 수행(사용자가 정의한)합니다.

Method Tab에서 검색할 수 있는 Constructor
Constructor의 Importing Parameter 예시


Instace Constructor


Instance Constructor는 오직 importing parameters와 exceptions를 가집니다. Instance Constructor는  CREATE OBJECT 구문을 통해 객체를 인스턴스화할 때 딱 한번 실행됩니다. Constructor는 프로그램에서 명시적으로 호출되지 않지만 객체가 인스턴스화 될 때 런타임 환경에서 호출되며 함축적으로 실행됩니다. Instance Constructor의 importing parameter는 클래스의 Attributes를 초기화 할 때 사용되거나 또는 클래스의 어떠한 component에 접근되기 전에 어떠한 특정 task를 수행하기 위해서 사용합니다. 만약, Constructor에서 exceptions이 발생(raised)하였다면, 객체는 인스턴스가 되지 못합니다. Instance Constructor는 클래스의 다른 Method와 동일하게 PUBLIC SECTION에서 같은 방식으로 정의됩니다.

다만, 이름은 반드시 Constructor로 정해야되고, 오직 Importing Parameter와 Exception만이 존재해야됩니다. 

아래는 예시입니다.

CLASS CL_VEHICLE DEFINITION.

PUBLIC SECTION.
……
METHODS constructor IMPORTING serial_no TYPE n
		    EXCEPTIONS invalid_serial.                   
ENDCLASS.

CLASS CL_VEHICLE IMPLEMENTATION.

METHOD constructor.
……
ENDMETHOD.

ENDCLASS.

 

위 예시에서 볼 수 있듯이, instance constructor는 PUBLIC SECTIO에 정의하였고, 하나의 Importing Parmeter와 Exception을 가지고 있습니다. constructor는 하나가 아니라 다수의 Importing Parameter와 Exceptions를 가질 수 있습니다.


Static Constructor


 

Static Constructor는 클래스의 PUBLIC SECTION에서 class-methods라는 구문class_constructor라고 정의되어야 하는 특별한 Static Method입니다. 아래 예시에서 위 내용을 볼 수 있습니다.

Static Constructor은 어떠한 파라미도 가질 수 없고 오직 클래스에 접근할 때 런타임 환경에 의해서 딱 한번만 자동으로 호출됩다. 예를 들어, 프로그램에서 static method나 static attribute를 호출하거나 객체로 인스턴스화될때 Static Constructor가 호출됩니다. Static Constructor는 프로그램 마다 오직 한번만 실행됩니다. Instace Constructor와 같이, Static Constructor도 직접 명시적으로 호출할 수 없습니다.(런타임 환경에 의해 내부적으로 실행된다는 의미)

CLASS CL_VEHICLE DEFINITION.

PUBLIC SECTION.
……
CLASS-METHODS class_constructor.
ENDCLASS.

CLASS CL_VEHICLE IMPLEMENTATION.

METHOD class_constructor.
……
ENDMETHOD.

ENDCLASS.

 

반응형