본문 바로가기

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

(27)
ABAP OOP : Inheritance(상속) PART4 : Final Classes and Methods 때때로, 상속 트리(상속 관례 구성)에서, 더 이상 클래스간의 상속을 확장시키고 싶지 않을 수 있습니다. 이러한 시나리오에서, 클래스를 Class Final로 만든다면, 더 이상 상속이 되지 않게 할 수 있습니다. Final Class로 정의하려면, CLASS DEFINITION 구문에 FINAL 이라는 addition만 붙여주면 됩니다. CLASS cl_final DEFINITION FINAL. ... ENDCLASS. Global 클래스(SE24에서 관리되는 전역 클래스)에서 Class를 Final로 정의하면되는데, 이는 아래 그림과 같이 Properties 탭에서 가능합니다. Methods들도 또한 final로 정의가 가능한데, Final Method로 정의를 해놓으면 Subclass에서 더 이상 ..
ABAP OOP : Inheritance(상속) PART3 : Abstract Classes and Methods(추상 클래스 & 메소드) 때떄로, 개발자들은 Templete으로서의(틀만 가지고 있는) 역할을 하고 subclass에서 구현될 수 있는 generic class를 정의하고 싶을 것입니다. Dummy Superclass를 만들고 Dummy Method를 정의하는 것은 Templete(오로지 겉 틀)을 정의하는 것에 좋은 방법이 아닐 수 있습니다. 예를 들어, 만약 많은 학생들과 교육 카테고리가 있을 때, 각 교육 카테고리는 교육비를 결정하는 것에 각기 다른 프로세스를 가지고 있을 때, 개발자는 student라고 이름 불리우는 클래스를 정의하고 tuition_fee라는 메소드를 만들어서 templete 처럼 쓸 수 있을 것입니다. 이렇게 만들어진 클래스는 이 student라는 클래스를 상속받은 구체화된 subclass들에서 더 구체..
ABAP OOP : Inheritance(상속) PART2 : 상속의 정의(Define) 상속관계를 만들기 위해서는 , 당신은 inheriting from이라는 addition 구문을 class 구문과 함께 써야한다. CLASS cl_vehicle DEFINITION. PUBLIC SECTION. METHODS get_serial_no RETURNING VALUE(r_serial_no) TYPE n. PRIVATE SECTION. DATA : serial_no TYPE n. ENDCLASS. CLASS cl_vehicle IMPLEMENTATION. METHOD get_serial_no. r_serial_no = serial_no. ENDMETHOD. ENDCLASS. CLASS cl_car DEFINITION INHERITING FROM cl_vehicle. PUBLIC SECTION. M..
ABAP OOP : Inheritance(상속) PART1 Inheritance Relationship(상속 관계)를 사용하면, subclass(하위 클래스)는 superclass(상위클래스)의 모든 특성을 상속받을 수 있습니다. 부가적으로, 상속된 클래스(subclass)는 자신만의 추가적인 구성요소를 더 할 수 있고, 상속받은 methods들의 구현을 수정할 수 있습니다. => 상위 클래스의 모든 특성 상속 + 자신만의 구성요소 추가 + method 재정의 가능 상속 관계는 개발자에게 클래스간의 유사성을 강조할 수 있게 해줍니다. 상의 클래스에서 실행가능했던 모든 특징들은 자동으로 하위 클래스에서도 가능합니다. 아래 그림을 보면( 이전 글에서 정의한 CL_VEHICLE을 기억하고 계셔야 합니다) superclass인 CL_VEHICLE은 탈 것의 모든 유형에..
ABAP OOP : ENCAPSULATION(캡슐화) PART1 : Implementation Hiding(구현을 숨기는 것) 외부 세계로부터 구현을 숨기는 것은 늘 변화하는 비즈니스 요구사항 때문에 발생하는 미래의 업무에 유연성을 주기 때문에 더 나은 구현을 관리하는 것에 도움이 됩니다. Public Interface를 최소한으로 유지하는 것은(PUBLIC SECTION에서 구현을 최소로 하는 것) 수정 요구가 있을 때마다 클래스를 호출하는 모든 Application에 대한 적용상황에 대한 걱정 없이 수정 요구사항마다 클래스의 PRIVATE SECTION과 PROTECTED SECTION의 변화를 가능하게 해줍니다. 이것은 개발건에 대한 관리 및 유지에 많은 시간을 절약해 줍니다. 왜 구현을 숨기는 것이 어떻게 유용한지 드러나는 몇가지 경우를 고려해봅시다. 예를 들어, iOS나 Android와 같은 mobile operatio..
ABAP OOP : ENCAPSULATION(캡슐화) PART2 : Friends 클래스는 다른 클래스를 그 자신의 Friends로 선언을 하면서, Private와 Protected Component를 포함한자신의 모든 구성요소에 접근을 허락을 합니다. Friend Class는 클래스 정의에서 Friend로 명시적으로 정의된 클래스입니다. Friendship relation은 상호적인 것은 아닙니다. 예를 들어, 클래스 c1에서 클래스 c2를 friend로 선언한다면, 클래스 c2의 Methods(메소드)는 클래스 c1의 Private Component에 접근할 수 있습니다. 그러나 클래스 c1의 Methods들은 c2의 Private Component에 접근할 수는 없습니다. 이것은 클래스 그 자신을 다른 클래스로 선언하여 다른 클래스의 Private와 Procted Componen..
ABAP OOP : ENCAPSULATION(캡슐화) PART1 : Visibility 앞선 글 들을 통해 OOP를 구성하는 구성요소들 -> Attributes, Methods, Event, Object 등에 무엇인지에 대해서 알아보았습니다. 앞서서 진행할 몇 가지 주제는 OOP의 특징과 개념에 대해서 입니다. 앞서서 설명한 구성요소들은 OOP로서 ABAP에서 클래스가 가 무엇으로 이루어져있나를 설명했다면, 앞으로는 OOP가 어떤 특성(개념)으로 이루어져 있는지를 알아보도록 하겠습니다. OOP의 주요 원칙 중 하나는 Encapsulation(캡슐화)입니다. 캡슐화는 영역을 정의하여 외부 세상으로부터 구현(실행 소스)를 숨길 수 있습니다. Attributes(사용되는 데이터)와 methods(데이터를 조작하는 기능)는 Obejct라는 캡슐에 들어있기 떄문에, 객체 안에서 어디까지 접근을 허락..
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)를 수행(사용자가 정의한)합니다. Instace Constructor Ins..