본문 바로가기

전체 글

(184)
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..
Principles of OOP Part4 : Objects An Object os an instance of a class. SAP에서 Object를 정의한 문장입니다. 말 그대로 객체는 클래스의 인스턴스입니다. 객채(Object)는 인스턴스라고 불리기도 합니다. 그리고 객체는 create object라는 구문을 통해서 인스턴스화(instantiated) 됩니다. 간단히 예를 들면 Data : gc_grid type ref to CL_GUI_ALV_GRID 라고 보통 많이 선언합니다. 하지만 저 자체의 gc_grid는 아직 Object가 된 것이 아닙니다. 단순히 Class를 참조하는 data 형식만 선언해 놓은 것입니다. 이후 create object gc_grid. 라는 구문을 만나야 실제 인스턴스화되면서 객체가 되는 것입니다.(Exporting 이하는 생략..
Principles of OOP Part3 : Methods Methods는 객체(object)의 행동을 결정하고 클래스의 내부 절차(internal procedures)로서 역할을 합니다. Methods는 methods라는 키워드( static의 경우 class-methods)를 사용하여 클래스의 definition part에 정의되고, 클래스의 implementation part의 method~endmethod 블락 사이에서 기능이 구현됩니다. Methods는 클래스의 모든 attrubutes에 접근이 가능하고 객체의 상태(state of object)를 바꿀 수 있습니다. 개발자는 소스코드로 methods를 구현하여 객체의 행동을 정의할 수 있습니다. Methods는 종종 parameter interface( signature라고 불리우는) 를 포함하기 때문..
Principles of OOP Part2 : Attributes Attributes(속성)은 객체에서 소비되는(사용되는) 데이터를 정의한 것입니다. Attributes는 Elementary type, DIctionary type, User-defined type, reference type 등을 포함한 어떠한 종류의 데이터 타입으로도 선언될 수 있습니다. 클래스안에서, 개발자는 types 구문을 사용하여 user-defiend type을 정의할 수 있습니다. Constants(상수) 또한 constants 구문을 사용하여 정의할 수 있다. 또한 PUBLIC SECTION에서 Attribute를 선언할 때 addition인 read-only를 data 구문과 함께 사용하며 외부로부터 접근은 가능하지만, 수정은 불가능하도록 할 수 있다. 다른말로 하면, read-only..
Principles of OOP(객체지향 프로그래밍의 원칙들) PART 1 PART 1. 구성요소들 & CLASS 선언 방법 이번 글과 이후 이어질 PART를 통해서, class(클래스), objects(객체), attributes(속성), methods(메소드), encapsulations, instantiation, and constructors에 대해 알아보겠습니다. 글 마지막에서는 직접 class를 정의하고, object를 만들고, method를 직접 호출할 수 있을 정도로 이해가 늘어나셨으면 좋겠습니다. Objects는 데이터를 encapsulate(캡슐화 : 보여지지않게 한다) 하고 이 데이터를 조작할 수 있는 기능을 만듭니다. 객체의 특성(성격들 - attributes)과 기능(methods)들은 하나의 패키지(묶음)입니다. 이 패키지를 정의하는 것을 Class(클..