반응형

분류 전체보기 2946

[C#] 2. 빌더 패턴(Builder Pattern) - 개요, 시나리오

2. 빌더 패턴(Builder Pattern) 2.1 개요 프로그래밍하다 보면 여러 요소로 구성되는 개체가 있습니다. 그리고 이와 같은 개체를 생성하는 방법이 목적에 따라 다양한 경우가 생깁니다. 이 경우에 빌더 패턴은 목적에 따른 개체를 생성하는 과정에 대한 약속과 각 과정에서 수행할 구체적인 알고리즘을 분리하여 개체를 생성하는 패턴입니다. 빌더 패턴에서 빌더는 추상 클래스로 개체를 생성하는 과정들을 약속합니다. 빌더를 기반으로 파생한 클래스에서는 생성 과정들에 대해 구체적으로 구현합니다. 이처럼 정의하면 빌더를 사용하는 곳에서는 서로 다른 구조를 갖는 개체를 같은 방법으로 생성할 수 있습니다. 2. 2 시나리오 우리 가족은 매주 토요일에는 여행을 갑니다. 여러분도 아시다시피 우리 가족은 사진을 찍는 ..

[C#] 1. 추상 팩토리 패턴 (Abstract Factory Pattern) - 구현

1. 추상 팩토리 패턴 (Abstract Factory Pattern) 1. 4 구현 이제 구체적으로 구현해 봅시다. 먼저, 카메라와 렌즈를 구현하고 팩토리 부분을 구현한 후에 마지막으로 테스터를 구현합시다. 1.4.1 렌즈 렌즈의 기능은 ITake 인터페이스로 정의하고 상을 맺히는 기능을 약속합시다. EvLens와 HoLens는 ITake를 기반으로 상을 맺히는 기능을 구체적으로 구현합시다. 이처럼 인터페이스를 정의하고 이를 기반으로 구현하면 표준화된 인터페이스를 사용할 수 있어서 사용방법을 익히는 비용을 줄일 수 있습니다. ▶ITake.cs using System; namespace AbstractFactory { class EvLens:ITake { public void Take() //ITake에..

[C#] 1. 추상 팩토리 패턴 (Abstract Factory Pattern) - 설계(Design)

1. 추상 팩토리 패턴 (Abstract Factory Pattern) 1. 3 디자인 여기에서는 렌즈의 종류는 기종별로 하나의 렌즈만 제공하는 수준으로 디자인하려고 합니다. 여기에서 보여 드리고자 하는 프로그램에는 카메라, 렌즈, 특정 기종의 카메라와 렌즈를 생성하는 역할을 하는 팩토리, 테스터로 분류할 것입니다. 카메라와 렌즈, 팩토리는 Everyday에 관련된 것과 Holiday에 관련된 구체화 클래스와 일반화된 추상 클래스 구조로 만들어야겠지요. 여기에서 Everyday에 관련된 것들은 접두사 Ev를 사용하고 Holiday에 관련된 것들은 접두사 Ho를 사용할 것입니다. 카메라에는 렌즈를 장착 및 탈착하는 기능과 사진을 찍는 기능에 대해 약속합시다. 렌즈에는 상을 얻어오는 기능을 약속하겠습니다. ..

[C#] 1. 추상 팩토리 패턴 (Abstract Factory Pattern) - 개요, 시나리오

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

[C#] 생성 패턴 개요 (추상 팩토리 패턴, 빌더 패턴, 팩토리 메서드 패턴, 원형 패턴, 단일체 패턴)

1부 생성 패턴들 1. 추상 팩토리 패턴(Abstract Factory Pattern) 호환성 있는 개체군을 하나의 팩토리 개체를 통해 생성하게 함으로써 사용자 편의성을 증대시킬 수 있다. 2016/04/25 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 1. 추상 팩토리 패턴 (Abstract Factory Pattern) - 개요, 시나리오2. 빌더 패턴(Builder Pattern) 개체를 생성하는 과정이 복잡하면 생성하는 알고리즘을 빌더에 구현하여 빌더 개체를 통해 복잡한 개체 생성을 쉽게 사용할 수 있다. 2016/04/25 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 2. 빌더 패턴(Builder Pattern) - 개요, 시나리오 3..

[C++] 56. string 클래스 흉내내기2

이제 자신의 string 클래스의 멤버 메서드를 하나 하나 구현해 보기로 해요. 제일 먼저 생성자를 구현합시다. string::string(const char *buf) { 먼저 입력 인자가 0(널 포인터)일 때 빈 문자열을 보관할 버퍼를 생성해서 빈 문자열을 복사하세요. if(buf==0)//입력 인자가 0(널 포인터)일 때 { this->buf = new char[1];//크기가 1인 버퍼를 생성 strcpy_s(this->buf,1,""); //공백 문자를 대입 } 입력 인자가 0(널 포인터)가 아닐 때는 입력 문자열 길이를 구하여 버퍼를 생성하고 문자열을 복사하세요. else//입력 인자가 0(널 포인터)가 아닐 때 { int len_p1 = strlen(buf)+1; //입력 문자열의 길이 + ..

[C++] 55. string 클래스 흉내내기1

이번에는 연산자 중복 정의 문법으로 string 클래스와 비슷하게 사용할 수 있는 클래스를 만들어 보아요. 먼저 여기에서 구현할 범위를 정하기 위해 string 클래스를 사용하는 기본적인 사항을 확인하고 넘어갈게요. string 형식은 기본 생성 및 문자열을 입력 인자로 받는 생성을 할 수 있어요. string s; string s2="hello"; string 형식은 비교 연산(==, !=, >, >=,

[C++] 53. iostream 흉내내기

이번에는 cin과 cout으로 출력 및 입력할 때 쉬프트 연산을 사용하는 원리를 살펴보기 위해 iostream 클래스를 흉내내 보기로 할게요. 여기에서 설명하는 것은 원리를 살펴보기 위한 것이지 iostream 클래스의 내부를 정확하게 표현하기 위한 것이 아닙니다. 실제 iostream 클래스는 여기에서 설명하는 것보다 훨씬 정교하고 신뢰성있게 정의하고 있어요. C언어에서 printf 함수로 출력하거나 scanf 함수로 입력받을 때는 포멧 사용자를 사용했었죠. 하지만 C++에서 cin과 cout을 사용할 때는 포멧 사용자 없이 쉬프트 연산을 사용했어요. 어떠한 포멧으로 출력 혹은 입력해야 하는지 표현하지 않아도 알아서 입출력해 주었죠. 이러한 것이 가능한 이유는 클래스에 연산자 중복 정의를 해 주었기 때..

[C++] 52. 함수 개체

이번에는 함수 호출 연산자 중복 정의와 함수 개체를 알아보기로 해요. C++언어에서는 함수 호출 연산자를 중복정의 할 수 있습니다. 함수 호출 연산자의 연산 기호는 ( ) 입니다. 따라서 함수 호출 연산자를 중복 정의할 때 메서드 이름은 operator()입니다. 메서드 뒤에 입력 매개 변수 리스트를 열거하는 ()에는 개발자가 개수와 형식을 결정하고 반환 형식도 개발자가 정합니다. [반환형식] operator() ([입력 매개 변수 리스트]); 그리고 함수 호출 연산자를 중복 정의한 형식의 개체를 함수 개체라고 부릅니다. 함수 개체는 형식 내부에 함수 호출 연산자를 중복 정의하고 있어서 마치 함수처럼 호출하여 사용할 수 있습니다. 먼저 간단하게 함수 호출 연산자 중복 정의를 사용하여 함수 개체를 함수처럼..

반응형