본문 바로가기

전체 글

(184)
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를 상속받는 것은 말..
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은 탈 것의 모든 유형에..