GSI

객체 지향 설계에서 기존의 것과는 독립된 새로운 것을 추가, 확장시키기 위한 가장 좋은 방법 중 하나가 클래스 상속(InHeritance)을 이용하는 것이다.

객체지향 설게에서 클래스 상속은 크게 두가지 목적을 가지는데,

하나는 상위 클래스가 여러 하위 클래스들의 공통된 데이터를 추출해서 관리하도록 만드는 것이고,
다른 하나는 상위 클래스는 전반적인 자료형을 대표 하면서 외부에 공통된 인터페이스를 제공하고, 하위 클래스들은 각기 다른 구현 내용을 가지도록 만들어 주기 위한 것이다.
Posted by gsi
:

State Pattern

C++ 2008. 1. 22. 09:21 |

State Pattern

사용자 삽입 이미지
< State 패턴예>


GamePlayer 클래스와 GameLevel 및 그 하위 클래스들은 모두 동일한 인터페이스를 가지고 있는데, 이는 GamePlayer 객체에 각기 다른 유형의 공격 요청이 주어졌을 때 이에 대한 처리를 GameLevel 및 그 하위 클래스에게 위임시키기 위한 것이다.
이때 GamePlayer 객체가 공격 요청을 위임시키기 위한 방법으로는 내부적으로 관리하고 있는 GameLevel 포인터 객체를 통해 다형성(Polymorphism)을 적용시키는 것이다.

추가된 상태를 포함해서 객체의 상태 변화 시 기존 소스코드 변경없이 행위 수행 변경이 가능하도록 객체 상태 정보를 클래스 상속 구조로 정의해서 사용하는 방식을 State 패턴이라고 한다.

Posted by gsi
:

Observer Pattern - Simple

C++ 2008. 1. 21. 12:25 |


Observer Pattern을 공부중..

사용자 삽입 이미지

<Observer 패턴예>


데이터와 뷰가 분리 되어 있을때 하나의 데이터를 두개 이상의 뷰에 의존적일 경우에
이 패턴을 사용하면 되는거 같아요.
즉, 데이터를 두개의 뷰에 업데이트가 가능하며, 하나의 뷰에서 데이터가 수정된 후에
다른 뷰에도 업데이트가 가능하게 됩니다.

Posted by gsi
:

#include <iostream>

 

using namespace std;

 

typedef void(*F)(int);

 

class QSpinBox

{

       int data;

      F handler;   // call back 함수 이게 포인트. 값이 변경되면 이 함수를 통해서 콜백을 한다.

public:

       QSPinBox(F f = 0 ) : handler(f) { }

       void SetValue(int n)

       {

             data = n;     // data가 변경되었다

             valueChanged(data);

       }

       void up() { ++data; valueChanged(data);   }

       void Down() { --data; valueChanged(data); }

 

private:

       // Spin은 내부 상태가 바뀔때마다 valueChanged가 호출되는데 여기서 외부로 알려지게 된다 - Signal 이라고 부른다.

       void valueChanged(int n)

       { // 여기서 callback handler를 관리하자

             if(handler != 0)

                    handler(n);

       }

 

 

};

 

int main()

{

       QSpinBox s;

       s.SetValue(100);

       s.Up();

}

 

// SpinBox 의 상태가 변경되면 외부에 알려준다 -> callback


(펌) - http://blog.naver.com/arcyze?Redirect=Log&logNo=60041494408

Posted by gsi
:



세미나를 다녀 왔습니다.
아주 유익한 시간이였던거 같습니다.
목표도 더 생긴듯 하구요.

솔직히 기존에 코딩 작업을 하면서 구현한 내용들이 알게 모르게 패턴의 한 종류였다는 것도 알게 되었는데요.

코딩을 할때 부분 부분의 디자인 패턴과 프레임웍의 패턴이 잘 융합 되면 정말 좋은 프로그램이 되는거 같습니다.

각각의 패턴의 장단 점을 이해 하고 여러가지의 패턴을 조합해서 사용하는 방법을 터득하고 나면 조금더 업그레이드 된 나를 만날수 있을듯 합니다.

이 참에 세미나 관련 분들이 하는 스터디도 활동을 해봐야 할듯 합니다.

posa 참.. 이거 할려면 gof 부터.. ^^
Posted by gsi
: