Skip to content

{ Category Archives } Development

Reference

C++을 자주 쓸 일이 없어 그런지 아직도 이따금 헷갈리는 reference. 몇가지만 적어두자. … // quoted from winapi.co.kr void plusref2(int &a); void main() { int i=5; plusref2(i); printf(“result = %d\n”, i); } void plusref2(int &a) { a=a+1; } 호출부가 call-by-value와 똑같다. (이것때문에 call-by-value 함수와 헷갈리기도 한다) 함수 원형이 plusref2(int &a) 식으로 레퍼런스를 받는다. 함수 본체 내에서는 [...]

Tagged

assert

종종 assert를 쓸까 말까 고민할 때가 있다. 아래 내용을 늘 기억하도록. if 문을 써서 프로그램을 exit 해도 되지만 왜 그렇게 되었는지는 assert를 쓰는 것이 더 명확하다. (NetWeaver에서는 Dump 화면과 똑같이 보이기 때문에 좀 시껍하긴 하다) debugger를 통해서도 오류를 알 수 있지만 assert를 쓰면 문제가 발생한 시점과 원인을 명확히 드러낼 수 있다. 많이 써도 성능에는 상관없다. [...]

Tagged , , ,

Event handing in ABAP Object

아래는 SAP Help에서 가져온 예제이다. *&———————————————————————* *& Report ZP_DEMO_CLASS_CNT_EVENT *&———————————————————————* REPORT zp_demo_class_cnt_event. *———————————————————————-* * CLASS counter DEFINITION *———————————————————————-* CLASS counter DEFINITION. PUBLIC SECTION. METHODS increment_counter. EVENTS critical_value EXPORTING value(excess) TYPE i. PRIVATE SECTION. DATA: count TYPE i, threshold TYPE i VALUE 10. ENDCLASS. “counter DEFINITION *———————————————————————-* * CLASS counter IMPLEMENTATION *———————————————————————-* CLASS counter IMPLEMENTATION. METHOD [...]

Tagged ,

오늘의 격언

Walking on water and developing software from a specification are easy if both are frozen. 그리고, 아래 그림. 오래 전부터 공감했던 그림인데 그냥 여기에 옮겨 포스팅한다. :-)

Tagged ,

Package example in ABAP, 두번째

지난 번과는 반대로, subpackage가 superpackage의 object를 억세스하려 할 경우를 생각해보자. SE80 open. 먼저 subpackage와 superpackage 양쪽에 Package Interface가 있나 확인해보자. 없으면 만들자. superpackage의 Package Interface를 더블 클릭. 두 개의 탭이 나오는데 ‘Exposed Objects’를 클릭, 노출할 object를 추가한다. (드래그 앤 드롭으로 쉽게 된다) 다음에 바로 옆의 탭인 ‘Attributes’ 클릭. 하단에 ‘Visible for subpackages’에 체크한다. subpackage 이름을 [...]

Tagged , ,

The Iterator Pattern (in ABAP)

Iterator를 사용해서 구현과는 분리하여 하나 하나 요소들을 셀 수 있다. 아래 소스를 보면 loop를 돌 때 Iterator의 메소드만 이용하고 있으며 Aggregate 클래스가 어떤 식으로 구현되어 있는가 – 배열이든, 벡터든, Internal Table이든 – 는 상관없다. 즉 나중에 Aggregate의 요소 관리 방식을 얼마든지 바꿀 수 있다는 이야기. 이를 위해 아래와 같은 것들이 필요하다. Iterator 인터페이스. Aggregate 인터페이스. [...]

Tagged , , ,

The Factory Method Pattern (in ABAP)

Factory의 요점은 다음과 같다. ‘Product를 만드는 것’과 ‘등록’의 구현은 하위 클래스에서 수행한다. (new를 사용해서) 실제의 인스턴스를 생성하는 대신에 인스턴스 생성을 위한 메소드를 호출함으로서(create_product) 구체적인 클래스명에 의한 속박에서 벗어나고 있다. Framework 쪽: ZCL_FACTORY class ZCL_FACTORY definition public abstract create public . public section. *”* public components of class ZCL_FACTORY *”* do not include other source files [...]

Tagged , , ,

Package example in ABAP

먼저 TEST_FRAMEWORK.ZCL_PRODUCT를 상속받는 TEST_IDCARD.ZCL_IDCARD를 컴파일하면 서로 다른 Package로 인한 경고를 받게 된다. 일단 TEST_IDCARD의 억세스를 가능하게 하기 위해 TEST_FRAMEWORK 쪽에서 인터페이스를 만들어주어야 한다. ZPIF_TEST_FRAMEWORK란 Package Interface를 만들어주고 대외적으로 오픈할 object – 여기서는 ZCL_PRODUCT와 ZCL_FACTORY – 를 추가해준다. 이때 Derive subclasses 부분도 ‘Allow Usage’ 체크를 해주어야 한다. TEST_IDCARD의 DCL(Dependency Control List)를 연다. (SE80로 가서 해당 class를 [...]

Tagged , ,

The Template Method Pattern

상위 class의 templateMethod는 같은 class내에 정의된 method1 ~ method3를 이용한 알고리즘을 가지고 있다. 예를 들어 method1 ~ method3가 각각 open(), print(), close() 라면 templateMethod 내부는 다음과 같을 수 있다. (아래 display()가 templateMethod다) 실질적인 각 구현은 concrete class에서 담당하므로 파일을 열어서 쓰는 작업을 할 것인지 소켓을 열 것인지 하는 실제 처리내용은 어떤 concrete class를 쓰느냐에 달려있다. [...]

Tagged , ,

The Adapter Pattern (in ABAP)

(HFDP에서) Duck의 object가 부족해서 Turkey의 object를 이용하려고 한다… 라는 이상한 상황을 가정하고 있다. 보통 기존 모듈이 새로운 모듈을 이용하려고 하나 서로 interface가 맞지 않을때 – 구체적으로, 한 클라이언트가 다른 object의 method를 이용하고 싶지만 기존 보유한 method를 바꾸고 싶진 않다(또는 바꿀 수 없다) 할 때… 같은 있음직한 상황을 예로 든다만. 어쨌건 이 경우 Duck은 client, Turkey는 [...]

Tagged , , , ,