본문 바로가기

ABAP 프로그래밍 개념

(127)
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은 탈 것의 모든 유형에..
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..