Category프로그래밍 (109)

팩토리 패턴 (Factory Pattern)

팩토리 패턴이란 객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화하는 패턴 즉, 객체의 생성 코드를 별도의 클래스 / 매소드로 분리함으로써 객체 생성의 변화에 대비하는데 유용하다. 특정 기능의 구현은 개별 클래스를 통해 제공되는 것이 바람직한 설계다. 기능의 변경이나 상황에 따른 기능의 선택은 해당 객체를 생성하는 코드의 변경을 초래한다. 상황에 따라 적절한 객체를 생성하는 코드는 자주 중복될 수 있다. 객체 생성 방식의 변화는 해당되는 모든 코드 부분을 변경해야 하는 문제가 발생한다. 역할이 수행하는 작업 Product 팩토리 메소드로 생성될 객체의 공통 인터페이스 ConcreteProduct 구체적으로 객체가 생성되는 클래스 Creator 팩토리 메소드를 갖는 클래스 ConcreteCreato..

싱글턴 패턴 (Singleton Pattern)

싱글턴 패턴이란 전역 변수를 사용하지 않고 객체를 하나만 생성 하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴 역할이 수행하는 작업 Singleton 클래스에 instance라는 멤버변수를 선언하고, 생성자를 private로 선언하여 외부에 노출이 되지 않도록 합니다. 이후에 Static으로 전역에서 접근이 가능한 메소드를 생성해서 인스턴스를 반환합니다. 이 때 멤버변수에 이미 변수가 생성이 되어 있다면 해당 인스턴스를 리턴하며, 만약 인스턴스가 한번도 초기화 되지 않았다면, 생성해서 리턴합니다. 참고 생성(Creational) 패턴 객체 생성에 관련된 패턴 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다. ..

디자인 패턴의 종류

생성(Creational) 패턴 구조(Structural) 패턴 행위(Behavioral) 패턴 - 팩토리 - 추상 팩토리 - 싱글턴 - 프로토타입 - 빌더 - 어댑터 - 브리지 - 컴포지트 - 데코레이터 - 퍼사드 - 플라이웨이트 - 프록시 - 책임 연쇄 - 커맨드 - 인터프리터 - 이터레이터 - 미디에이터 - 메멘토 - 옵저버 - 스테이트 - 스트래티지 - 템플릿 메소드 - 비지터 - 팩토리 패턴 (Factory Pattern) 생성할 구상 클래스를 서브 클래스에서 결정함. - 추상 팩토리 패턴 (AbstractFactory Pattern) 클라이언트에서 구상 클래스를 지정하지 않으면서도 일군의 객체를 생성할 수 있도록 함. - 싱글턴 패턴 (Singleton Pattern) 딱 한 객체만 생성되도록..

디자인 패턴의 개념과 구조

디자인 패턴이란 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용 할 수 있는 훌륭한 해결책. "바퀴를 다시 발명하지 마라(Don't reinvent the wheel)" 이미 만들어져서 잘 되는 것을 처음부터 다시 만들 필요가 없다는 의미이다. 패턴이란 각기 다른 소프트웨어 모듈이나 기능을 가진 다양한 응용 소프트웨어 시스템들을 개발할 때도 서로 간에 공통되는 설계 문제가 존재하며 이를 처리하는 해결책 사이에도 공통점이 있다. 이러한 유사점을 패턴이라 한다. 패턴은 공통의 언어를 만들어주며 팀원 사이의 의사 소통을 원활하게 해주는 아주 중요한 역할을 한다. 디자인 패턴 구조 콘텍스트(context) 문제가 발생하는 여러 상황을 기술한다. 즉, 패턴이 적용될 수..

3. 배열

- 배열은 같은 자료형의 연속적인 메모리 공간이다. - 배열의 이름은 그 배열이 시작하는 메모리 공간의 시작 주소이다. - int arr[n]의 배열은 n개의 int형 메모리가 만들어지며 arr[0] ~ arr[n - 1]의 메모리 공간을 사용할 수 있다. - 1차원 배열의 이름은 1차원 주소의 의미를 갖고, 2차원 배열의 이름은 2차원 주소의 의미를 갖는다. - 1차원 배열의 이름에는 * 연산자를 한 번 붙이면 값이 되고 2차원 배열의 이름에는 * 연산자를 두 번 붙여야 값이 된다. - n차원 배열의 이름은 n차원 주소의 의미이므로 * 연산자를 n번 붙여야 값에 접근할 수 있다.

초급 50. 매크로 이해하기

학습 내용 : 매크로를 작성하고 사용하는 방법을 이해합니다. 소스 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include #define MAX(a, b) a > b ? a : b #define MIN(a, b) a

초급 49. #include문 이해하기

학습 내용 : printf() 함수나 getch() 함수 등을 사용하기 위해서 함수의 선언을 포기하는 방법을 이해합니다. 소스 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 #include #include void main() { char ch; printf("아무키나 누르세요...\n"); ch = getch(); printf("%c 키가 눌려졌습니다.", ch); } 실행 화면 : 라며 에러가 뜹니다... 그리하여 include 하지않고 getch() 함수를 만들어 보겠습니다. 소스 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include char getch(); void main() { char ch; printf..

초급 48. 변수의 범위 이해하기

학습 내용 : 전역 변수가 사용되는 범위와 지역 변수가 사용되는 범위에 대해 이해합니다. 소스 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include void print_x(int x); void print_gx(void); int x = 20; void main() { int x = 5; printf("x = %d\n", x); print_x(10); print_gx(); } void print_x(int x) { printf("x = %d\n", x); } void print_gx() { printf("x = %d\n", x); } 실행 화면 :

초급 47. 함수와 인수 이해하기

학습 내용 : 함수를 만들고, 함수에 값을 전달하기 위한 인수를 사용하는 방법을 이해합니다. 소스 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include int print(char* string); void main() { print("This is a function!\n"); } int print(char* string) { int len = 0; while (*string != (char)NULL) { printf("%c", *string); string++; len++; } return len; } 실행 화면 :

초급 46. 데이터형 정의하기

학습 내용 : 데이터형을 정의하는 방법을 학습합니다. 소스 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include #define true 1 #define false 0 typedef int bool; void main() { bool bCondition; bCondition = true; if (bCondition == true) { printf("조건식은 true입니다.\n"); } } 실행 화면 :