반응형

프로그래밍 기술 604

[C#] 복합체 패턴(Composite Pattern)

8. 복합체 패턴(Composite Pattern) 복합체 패턴은 복합 개체와 단일 개체를 같은 방법으로 사용하고자 할 때 사용되는 패턴입니다. 복합체 패턴은 트리 구조로 관리고자 할 때 자주 사용이 됩니다. 예로 폴더(복합 개체)와 파일(단일 개체)을 같은 방법으로 사용하게 하는 것이죠. 이처럼 복합체 패턴에서는 단일 개체와 복합 개체를 같은 방법으로 사용할 수 있게 일반화하여 기반 클래스를 제공합니다. 단일 개체 형식과 복합 개체 형식은 파생된 클래스로 구현하겠죠. 중요한 것은 기반 클래스에서 단일 개체와 복합 개체에서 할 수 있는 모든 기능을 인터페이스로 약속한다는 점에 있습니다. 이를 통해 사용자는 해당 개체가 단일 개체인지 복합 개체인지를 모르더라도 같은 방법으로 사용할 수 있는 것입니다. 하지..

[C#] 가교 패턴(Bridge Pattern)

7. 가교 패턴(Bridge Pattern) 가교 패턴은 추상적 개념과 구체적 구현 사이의 종속성을 제거하여 목적에 맞게 다양한 구현 방법을 사용하도록 제공하는 패턴입니다. 프로그램하다 보면 일반화 관계로 설계하였을 때 기반 클래스에서 파생하는 클래스가 너무 많아지는 경우가 발생합니다. 그리고 다시 파생 클래스를 기반으로 하는 파생 클래스가 많아지는 경우도 발생하지요. 예를 들어, 사람이라는 기반 클래스가 있다고 가정합시다. 그리고 사람에서 파생한 학생과 학부모, 강사 등이 있습니다. 학생 중에는 피아노를 칠 수 있는 학생과 야구를 할 줄 아는 학생, 피아노와 야구를 할 줄 하는 학생 등이 있을 수 있겠죠. 학부모와 강사도 마찬가지일 것입니다. 이를 일반화 관계로 표현하다 보면 파생되는 계층도 깊어지고 ..

[C#] 적응자 패턴(Adapter Pattern)

6. 적응자 패턴(Adapter Pattern) 적응자 패턴은 서로 비슷한 기능을 하지만 사용 방법이 다른 경우 같은 인터페이스를 갖게 변환시키는 패턴입니다. 변환시키기 전에는 서로 다른 방법으로 사용해야 했던 작업들을 일관된 인터페이스를 사용할 수 있어 사용이 쉬워집니다. 적응자 패턴은 사용자에게 익숙한 인터페이스 형태로 포장하여 제공한다는 의미에서 래퍼(Wrapper)라고도 부릅니다. *적응자 패턴 적용전* *적응자 패턴 적용 후* 2016/04/26 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 적응자 패턴(Adapter Pattern) - 개요, 시나리오 2016/04/26 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 적응자 패턴(Adap..

[C#] 단일체 패턴(Singleton Pattern)

5. 단일체 패턴(Singleton Pattern) 단일체 패턴은 프로그램에서 특정 형식의 개체가 유일함을 보장하는 패턴을 말합니다. 일반적으로 데이터들을 관리하고 운용하는 개체를 하나만 두어 관리의 집중화를 통해 유지 보수 비용을 줄이고 높은 신뢰성을 부여할 수 있게 됩니다. 사용자와 상호작용을 하는 프로그램을 작성할 때 단일체 패턴은 유용하게 사용될 수 있습니다. 사용자와 상호 작용을 담당하는 개체는 주요 데이터를 관리하는 단일 개체에게 사용자의 명령을 전달하는 역할을 합니다. 그리고 사용자에게 보여줄 정보들도 단일 개체를 통해 얻어오게 프로그래밍을 할 수 있습니다. 이처럼 프로그래밍하면 사용자와 상호 작용하는 부분을 목적에 따라 다양한 형태의 뷰를 제작할 수 있습니다. 또한, 필요에 따라서 손쉽게 ..

[C#] 원형 패턴(Prototype Pattern)

4. 원형 패턴(Prototype Pattern) 원형 패턴은 미리 만들어진 개체를 복사하여 개체를 생성하는 패턴을 말합니다. 그리고 이때 미리 만들어진 개체를 원형 개체라 부릅니다. 일반화 관계로 표현할 때 파생 클래스의 개수가 과도히 많아지고 각 클래스의 메서드에서 수행하는 알고리즘에 차이가 없고 생성 시에 개체의 속성값만 다르다면 원형 패턴을 사용하는 것이 효과적입니다. 2016/04/25 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 4. 원형 패턴(Prototype Pattern) - 개요, 시나리오 2016/04/25 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#]4. 원형 패턴(Prototype Pattern) - 설계(Design) 2..

[C#] 팩토리 메서드 패턴(Factory Method Pattern)

3. 팩토리 메서드 패턴(Factory Method Pattern) 프로그래밍하다 보면 같은 방법으로 사용할 수 있는 여러 종류의 개체를 일반화하여 기반 클래스를 정의하고 이를 기반으로 파생 클래스로 정의하는 것은 매우 흔합니다. 이 경우에 사용하는 곳에서 구체적으로 어떠한 개체를 생성해서 사용할 지에 대하여 개발 초기 단계에서 결정할 수 없다면 어떻게 하면 좋을까요? 팩토리 메서드 패턴을 이용하면 이러한 고민을 해결할 수 있습니다. 추상 팩토리 클래스에서는 사용할 개체(추상 클래스)를 생성하는 것에 대해 약속만 합니다. 대신 파생 팩토리 클래스에서 구체적으로 어떠한 개체를 생성할 것인지 구현합니다. 이처럼 구체적인 개체를 생성하는 부분을 분리하면 추상 팩토리 클래스에서는 어떠한 개체를 생성할 것인지에 ..

[C#] 빌더 패턴(Builder Pattern)

2. 빌더 패턴(Builder Pattern) 프로그래밍하다 보면 여러 요소로 구성되는 개체가 있습니다. 그리고 이와 같은 개체를 생성하는 방법이 목적에 따라 다양한 경우가 생깁니다. 이 경우에 빌더 패턴은 목적에 따른 개체를 생성하는 과정에 대한 약속과 각 과정에서 수행할 구체적인 알고리즘을 분리하여 개체를 생성하는 패턴입니다. 빌더 패턴에서 빌더는 추상 클래스로 개체를 생성하는 과정들을 약속합니다. 빌더를 기반으로 파생한 클래스에서는 생성 과정들에 대해 구체적으로 구현합니다. 이처럼 정의하면 빌더를 사용하는 곳에서는 서로 다른 구조를 갖는 개체를 같은 방법으로 생성할 수 있습니다. 2016/04/25 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 2. 빌더 패턴(Build..

[C#] 추상 팩토리 패턴 (Abstract Factory Pattern)

1. 추상 팩토리 패턴 (Abstract Factory Pattern) 프로그래밍하다 보면 특정 목적에 따라 사용해야 하는 개체들이 서로 호환성이 있어야 하는 경우가 발생합니다. 목적에 따라 사용해야 하는 개체군들이 있을 때 특정 목적에 맞게 호환성 있는 개체가 무엇인지 조사하고 사용하기 위해서 비용이 발생할 수 있습니다. 이럴 때 추상 팩토리 패턴을 사용하면 효과적으로 비용을 줄일 수 있을 것입니다. 특히, 비슷한 작업을 위해 필요한 개체들 사이에 호환성을 유지해야 하는 여러 종류의 개체군이 있을 때 추상 팩토리 패턴을 사용하면 표준화된 방식에 의해 자신에게 맞는 개체군을 효과적으로 사용할 수 있게 해 줍니다. 이를 위해 추상 팩토리 패턴에서는 서로 호환성 있는 개체들을 생성하는 부분만 담당하는 개체를..

1.4 윈도우 클래스 등록 및 윈도우 개체 생성 [Windows API]

1.4 윈도우 클래스 등록 및 윈도우 개체 생성이번에는 윈도우 클래스를 등록하여 윈도우 개체를 생성하는 형태의 윈도우즈 응용 프로그램을 만들어 보기로 합시다. 이번 프로그램을 통해 윈도우즈 프로그램의 기본적인 동작 흐름을 파악할 수 있습니다. 윈도우즈 프로그램에서 자신의 원하는 형태로 창을 만들기 위해서는 윈도우 클래스를 등록한 후에 등록한 윈도우 클래스 형태의 인스턴스를 생성하는 것이 필요합니다. 윈도우즈 API에서는 비슷한 동작을 하는 버튼이나 리스트 박스 등을 만들 때 미리 등록해 놓은 윈도우 클래스를 이용하여 만들게 하고 있습니다. 다음은 이번에 작성할 윈도우즈 프로그램의 기본 흐름입니다. [그림 5] 윈도우즈 프로그램 기본 동작 흐름 제일 먼저 윈도우 클래스 속성을 설정합니다. 윈도우 클래스 속..

1.3 첫 번째 윈도우즈 프로그램 만들기 [Windows API]

1.3 첫 번째 윈도우즈 프로그램 만들기이제 첫 번째 윈도우즈 프로그램을 작성해 봅시다. 개발 도구에서 [Windows 응용 프로그램]을 선택하시고 마법사의 응용 프로그램 설정에서 빈 프로젝트를 체크하여 프로젝트를 생성하세요. 여기에서는 프로그램을 시작하면 메시지 창이 뜨고 확인을 누르면 메시지 창이 닫히면서 응용 프로그램이 끝나는 아주 작은 프로그램입니다. 이 프로그램을 통해 윈도우즈 프로그램의 진입점과 함수 호출 규약 및 포함해야 할 파일 등을 간략하게 살펴볼 거예요. 다음처럼 코드를 작성하세요.//첫 번째 프로그램 - 메시지 창 띄우기#include //윈도우즈 API의 제공 형식과 기능을 사용하기 위해 포함 INT APIENTRY WinMain(HINSTANCE hIns, HINSTANCE hPr..

반응형