본문 바로가기

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

(27)
ABAP OOP : Polymorphism(다형성) PART6 : Events 객체의 런타임 동안 특정 이벤트가 발생할 때, (Event handler라고 불리우는) 특별한 Methods들은 특정한 이벤트들에 반응합니다. 이러한 상황에서 (trigger라고 불리우는) trigger 메소드에 의해 작동될 클래스 안에서 Events들은 정의될 수 있습니다. Event들(Events)은 클래스 내부에 정의되며 triggers라고 불리우는 method로부터 작동됩니다. 객체의 런타임 동안 특정한 이벤트가 발생하였을 때, Event Handler라고 불리우는 특수한 methods들이 정의된 Events에 반응합니다. 예를 들어, 1. 우리는 유저가 레포트 결과에서 더블클릭을 할 때 발생하는 메소드 중 하나로 클래스에서 double_click이라고 불리우는 Event를 정의할 수 있습니다. ..
ABAP OOP : Polymorphism(다형성) PART5 : Interfaces 자바와 유사하게, ABAP Objects(객체)는 단일 상속(single inheritance)를 지원하고, C++ 처럼 다중 상속을 지원하지는 않습니다. Single Inheritance의 의미는 클래스가 다양한 subclass를 가질 수있지만 하나의 Superclass를 가지는 것을 의미합니다. 많은 Subclass들은 그들의 Superclass를 자신과 같은 클래스로 사용할 수 있지만, 각각의 Sublcass들은 오직 하나의 Superclass만을 가지는 것을 의미합니다. 현대 프로그래밍 언어는 애매모호함을 피하기 위해서 Multiple Inheritance(많은 Superclass들을 가지는 것)를 지원하지는 않았습니다. Multiple Inheritance의 가장 일반적인 문제 중 하나는 dia..
ABAP OOP : Polymorphism(다형성) PART4 : Dynamic Binding (동적 바인딩)with the Call Method 객체가 method의 파라미터로서 통과될 때, 시스템은 자동적으로 객체를 동적으로(dynamically) 바인드(bind)한다. 이 개념은 객체들이 쉽게 확장될 수 있어서 디자인 하는데 도움을 줍니다. 즉, method의 parameter로서 보통 type c, type i, 혹은 structure와 internal table을 사용했지만, parameter로 type ref to Class (static type 형식으로 type을 사용한)를 사용하는 것을 말합니다. Call Method에서의 Dynamic Binding(동적바인딩)을 이해하기 위해서는, 아래 코드를 봐야합니다. CLASS cl_student DEFINITION ABSTRACT. PUBLIC SECTION. METHODS tuition..
ABAP OOP : Polymorphism(다형성) PART3 : Casting 서로 다른 유형의 데이터 객체가 서로 할당될 때 적용되는 변환 규칙과 유사하게(Numc와 Intiger와 같은 데이터 형식의 할당과 유사하게), 다른 static type의 객체(type ref to로 각자 선언된 객체들)들의 할당도 특정 룰에 따릅니다. 원천 참조 객체(source reference object)의 static type이 타겟 참조 객체(target reference object)과 같지 않다면, cast라는 특수한 방법(opertaion)이 일어나야 합니다. 보통 이러한 프로세스를 우리는 casting이라고 부릅니다. 개발에서 cast operation을 사용하기 위해서는, target reference object의 static type이 source reference object의..
ABAP OOP : Polymorphism(다형성) PART2 : Static and Dynamic Types 객체(reference variable)의 Static Type은 reference variable을 정의하는데 사용되는 class 유형입니다. 예를 들어 아래 예시에서볼 수 있듯이 oref 참조는 cl_class라는 클래스를 참조하면서 정의됩니다. 이러한 경우, 객체 oref의 static type은 class cl_class이고, 정적으로 코드에서 정의된 것입니다. CLASS cl_class DEFINITION. PUBLIC SECTION. METHODS meth. ENDCLASS. CLASS cl_class IMPLEMENTATION. METHOD meth. ENDMETHOD. ENDCLASS. DATA oref TYPE REF TO cl_class. 때때로, 당신은 같은 하나의 참조 객체에서 st..
ABAP OOP : Polymorphism(다형성) PART1 Polymorphism이라는 뜻은 다양한 형태를 가질 수 있다는 것을 의미합니다. 상속의 개념은 객체가 다양한 형태의 모습을 가질 수 있는 시나리오를 만들 수 있다는 것을 이끌어 냈습니다. 예를 들어, subclass가 superclass의 메소드 호출에 응답하는 것이 가능해졌습니다. Polymorphism을 이해하기 위해선, static과 dynamic 형태에 대해서 먼저 이해할 필요가 있습니다. 그런 다음에 static 유형 소스 참조 객체(static type source reference object)가 대상 참조 객체(target reference object)와 다를 경우에 casting을 어떻게 쓰는지 알아보겠습니다. 그 후에는 인터페이스(interface)를 사용한 다양한 상속을 실행하는 ..
ABAP OOP : Inheritance(상속) PART6 : Refactoring Assistant 시스템을 디자인할 때, 때때로 Inheritance Hierachy(상속 위계)에서 올바른 단계에 클래스의 구성요소를 누락하는 경우가있습니다. 예를 들어, Subclass에서 만든 Method를 Superclass에 요구사항에 따라 바꾸거나 하는 경우가 있을 수 있습니다. 이런 경우에는 Class builder(SE24)에 있는 Recactoring Assistant를 사용하여 클래스의 Component의 위치를 위,아래로 옮길 수 있습니다. 이 방법은 많은 노력을 절약해주고 실수를 쉽게 수정할 수 있게 해줍니다. Refactoring Assistanct를 사용하기 위해서는, 클래스 Builder에서 Utilities -> Refactoring -> Refactoring Assistant를 아래 그림과 ..
ABAP OOP : Inheritance(상속) PART5 : Compositions 앞서 말했듯이, 상속을 사용하면, 클래스를 "is a relationship"에 적합하게 디자인할 수 있습니다. 예를 들어, car는 vehicle의 한 유형이기 때문에, cl_car를 cl_vehicle의 subclass로 만들 수 있는 것입니다. 때때로, 기존 소스를 재사용하기 위해서, 개발자들은 is-a relationship데 적합하지 않은 상속관계를 만들기도 합니다. 에를들어, orders라고 불리우는 존재하는 클래스가 있다고 할 때, sales_order라는 orders를 상속받는 클래스를 만들 수 있습니다. 왜냐하면 ,sales order도 order이기 때문입니다. 그러나, delivery라는 클래스를 정의할 때, delivery는 order가 아니기 때문에 orders를 상속받는 것은 말..