디자인 패턴12 Iterator Pattern 이번에는 Iterator 패턴에 대해 알아보고, 해당 부분을 적용한 Unity 예제와, 조금의 응용을 같이 진행에 보도록 하겠습니다. 흔히 Iterator라 함은, 구지 디자인 패턴의 종류라기보단 컨테니어들을 따라갈때 많이 쓰던 키워드 중 하나? 정도로 많이 파악이 되어 있습니다. 실제로 그것과 크게 다르지도 않습니다. 중요한 것은, 특정 List나 Arr등 그룹지어져 있는 Object들을 순차적( 구현에 따라선 특정 구간이 될 수도... )으로 순회하면서 찾는다는 것이 중요합니다. 단지 이것을 디자인 패턴으로 표현 하였을 때 어떤식의 장점이 있는지, 그리고 어떤식으로 구현해야 하는지 확인해 본다고 보시면 될 것 같습니다. 먼저 최종 사용 코드부터 보도록 하겠습니다. 사용 코드 예제 namespace I.. 2016. 5. 4. UML의 기본 구성-시퀀스 다이어그램 클래스 다이어그램에 비하면 조금 더 가독성이 높은 편, 실제 내부적으로 어떻게 구성 되어 있는지 표현하는게 클래스 다이어그램이라면 시퀀스 다이어그램은, 구성된 내용들이 어떻게 동작하는지 보여 준다고 보면됩니다. 표현을 빌리면, 시간에 의해 변하지 않는 것(정적인 관계) = 클래스 다이어그램 시간에 따라 변하는 것(동적인 관계) = 시퀀스 다이어그램 이라고 보시면됩니다. 실제 예제를 보면 다음과 같습니다. 1 ~ 2. 손님이 입장 후 서빙 직원에게 요리를 주문합니다. 3 ~ 4. 직원은 해당 내용을 종이에 작성 한 후 그 리스트를 요리사에게 전달 합니다. 5 ~ 6. 요리사는 해당 요리를 제작 완료된 요리를 직원에게 다시 전달합니다. 7. 직원은 해당 요리를 손님에게 전달합니다. 8. 식사 진행 9 ~ 1.. 2016. 5. 2. UML의 기본 구성-클래스 다이어그램 디자인 패턴에 들어 가기에 앞서 UML을 알아둬야 할 필요성이 있습니다. Unified Modeling Language의 약자로 설계문서를 시각화 한다고 정의 되어 있습니다. 지금 설명하는 것들은 모두 클래스 다이어그램입니다. 가장 기본적인 상속 구조를 알아 보도록 하겠습니다. 해당 그림은 다음과 같습니다. - 부모 클래스가 가상 클래스(이탤릭)로써, 자식 클래스가 상속을 받은 형태 - 부모클래스에는 변수, 스태틱 변수( 밑줄 )가 존재 - 부모 클래스는 가상함수(이텔릭)와 함수가 존재 - 자식 클래스는 변수X, 부모로써 상속받은 가상함수와 스태틱함수(밑줄) 존재 - 각 변수나 함수 앞에 기호는 public은 +, protected는 #, private는 -로 표기 다음은 인터페이스 설명입니다. - 가상.. 2016. 5. 2. 데코레이터(Decorator) 패턴 특정 객체의 기능을 동적으로 추가하거나, 삭제 할 때 편리하게 사용 할 수 있는 패턴이다. 유용한 상황 : 다른 객체에 영향을 주지 않으면서 새로운 기능을 추가 하고자 할 때, 특시 Client 측에서는 이렇게 새로운 기능이 추가된 객체와 그렇지 않은 객체를 따로 구분하고 싶지 않을 때 특정 객체에 동적으로 추가된 기능을 삭제하고 싶을 때. 단, 이 경우 추가된 기능에 해당하는 객체가 아닌 원래 객체가 가진 기능은 삭제할 수 없다. 클래스 상속을 통한 기능 확장이 불가능하거나 어려울 때, 예를 들어 서로 독립된 상속 관계가 많아 이들을 조합하면, 너무 많은 하위 클래스가 만들어질 우려가 있는 경우 또는 클래스 정의가 숨겨져 있어 상속이 불가능할 때. 예제는 기본 베이스 커피에 토핑을 추가 한다고 하였을 .. 2010. 4. 4. 스트레티지(strategy) 패턴 기본적인 구조는 최상위 클래스를 상속받아 그 클래스들에 기능을 추가한다. 라고 보는게 맞을듯. 어떤 상황에 좋은가? 서로 행위만 다를 뿐 밀접한 연관 관계를 가지는 여러 클래스들에 대해 필요한 시점에 어느 한 행위를 수행하는 클래스를 골라 사용하고자 할 때 유용하다. 저장 공간 사용 효율이나 실행 시간 효율 등의 측면에서 다양한 형태의 알고리즘(기능)이 존재해서 상황에 따라 최적의 알고리즘(기능)을 선택해서 사용하도록 할 때 유용하다. 어떤 알고리즘(기능)이 Client가 알아서는 안될 데이터를 사용하거나 알고리즘(기능)에 종속된 복잡한 자료구조(속성)를 사용할 때 유용하다. 이 경우 Strategy 패턴은 Client에게 알고리즘(기능)이 사용하는 데이터나 자료구조(속성)를 숨겨주는 역활을 한다. 어떤.. 2010. 4. 3. static static, 지역변수로 선언되어 있는 변수를 전역 변수처럼 사용한다. C++, 클래스에서 사용하는 static은 크게 2가지 특징을 가지고 있는데 첫번째로 public안에 선언된 멤버 변수에 static을 붙히면 전역 변수처럼 사용이 가능하다. (main 함수가 호출 되기 이전에 메모리 공간에서 초기화가 되기 때문이다.) #include class AAA { public: // public에 static을 선언 static int a; }; // 일단 이곳에서 초기화를 한번 해주어야 한다. int AAA::a = 10; void main() { std::cout 2010. 3. 24. 이전 1 2 다음