본문 바로가기

전체 글90

[디자인 패턴] 팩토리 메소드 패턴 (Factory method pattern) ▶ 주제 : 팩토리 메소드 패턴 (Factory method pattern). 생성 패턴의 하나. 팩토리라는 인터페이스를 정의하고 인스턴스화를 해내는 부분을 서브 클래스에 위임하는 패턴이다. ▶ 관련 문서▷ 추상 팩토리 패턴▷ 위키피디아 ▶ 구조 팩토리 인터페이스를 정의하여 이를 서브 클래스가 상속받아 구현하는 형태이다. 서브 클래스는 Product 타입 객체를 생성하고 반환하는 createProduct 함수를 정의해야한다. ▶ 예시 아래 예시는 C#을 기반으로 작성하였다. public interface IFactory { IProduct CreateProduct(); } 팩토리 인터페이스를 정의한다. 인터페이스에는 특정 타입을 반환할 함수가 선언되어야 한다. public interface IProduc.. 2019. 3. 20.
[디자인 패턴] 복합체 패턴 (Composite pattern) ▶ 주제 : 복합체 패턴 (Composite pattern). 구조 패턴의 하나. 복합 객체 그룹(전체)과 단일 객체를 동일하게 취급하거나 다룰 수 있게 해주는 방식으로, 재귀적 특성을 띄며 트리(tree) 구조에 가까운 패턴이다. ▶ 구조 복합체 패턴의 구조는 크게 4가지로 분류된다.▷ 첫 번째 : 컴포넌트 인터페이스(추상클래스도 가능) : Leaf와 Composite를 같은 타입으로 취급하기 위한 인터페이스로써, Leaf와 Composite가 동일하게 가져야 할 함수를 여기에 선언한다.▷ 두 번째 : 리프 클래스 : 단일 객체를 표현할 클래스로, 그룹의 구성원 역할을 하며 트리구조로 따지면 가장 밑단에 존재하는 나뭇잎 역할을 한다고 보면 된다.▷ 세 번째 : 컴포지트(복합체) 클래스 : 복합 객체 그.. 2019. 3. 12.
[디자인 패턴] 빌더 패턴 (Builder pattern) ▶ 주제 : 빌더 패턴 (Builder pattern). 생성 패턴의 하나. 클래스 설계에서 생성 부분을 분리하여, 객체를 깔끔하고 유연하게 생성 부분만 담당하는 빌더를 고안한 패턴이다.직접 구현할 일이 흔하지는 않지만, 프레임워크에서 제공해주면 생각보다 흔하게 쓴다.특히, 안드로이드 개발자들은 빌더 패턴을 반드시 본 적이 있을 것이다. ▶ 예시 여러 물건을 소유한 사람을 클래스로 표현한다고 쳤을 때 아래 예시처럼 표현할 수 있다.아래 예시는 C#을 기반으로 작성하였다. public class Human { private int _money; private string _name; private float _height; private float _weight; public Human (int money.. 2019. 3. 9.
[C#] 프로젝트에 DLL 추가하기 ▶ 주제 : 프로젝트에 DLL 추가하기. C# 프로젝트에서는 DLL 파일을 참조 추가함으로써 다른 사람이 만든 라이브러리를 사용할 수 있다. ▶ 관련 문서 ▷ DLL 추출하기 [C#] DLL 추출하기 ▶ 주제 : DLL 추출하기 DLL은 간단하게 생각해서 라이브러리 파일 같은 것인데 Visual studio는 직접 DLL를 만들어 추출할 수 있는 기능을 제공한다. 기본적으로 프로젝트 단위로 DLL이 추출된다. ▶ 작성 환경.. spiralmoon.tistory.com ▶ 작성 환경 ▷ Visual studio 2017 ▶ DLL 참조 추가 방법 우선 프로젝트에 추가할 DLL 파일을 확보한다. 예시로 저번 포스트에서 추출한 LibraryExample.dll을 사용해서 진행 프로젝트를 열고 참조(Refere.. 2019. 3. 8.
[C#] DLL 추출하기 ▶ 주제 : DLL 추출하기 DLL은 간단하게 생각해서 라이브러리 파일 같은 것인데 Visual studio는 직접 DLL를 만들어 추출할 수 있는 기능을 제공한다. 기본적으로 프로젝트 단위로 DLL이 추출된다. ▶ 작성 환경 ▷ Visual studio 2017 ▷ C# project (project type : Class Library) ▶ 관련 문서 ▷ 프로젝트에 DLL 추가하기 [C#] 프로젝트에 DLL 추가하기 ▶ 주제 : 프로젝트에 DLL 추가하기. C# 프로젝트에서는 DLL 파일을 참조 추가함으로써 다른 사람이 만든 라이브러리를 사용할 수 있다. ▶ 관련 문서 ▷ DLL 추출하기 [C#] DLL 추출하기 ▶ 주제 : DLL 추출하기.. spiralmoon.tistory.com ▶ 예시 우선 .. 2019. 2. 15.
[디자인 패턴] 추상 팩토리 패턴 (Abstract factory pattern) ▶ 주제 : 추상 팩토리 패턴 (Abstract factory pattern). 생성 패턴의 하나. 비슷한 속성의 제품(객체)들을 인터페이스로 규격화된 공정(팩토리)에서 일관된 방식으로 생성하고, 생성된 제품끼리는 쉽게 교체될 수 있도록 고안한 패턴이다. ▶ 구조 추상 팩토리 패턴의 구조는 크게 4가지로 분류된다.▷ 첫 번째, 추상 팩토리 인터페이스(추상클래스도 가능) : 추상 제품을 생산하는 인터페이스 제공▷ 두 번째, 구현 팩토리 클래스 : 구현된 제품을 생산하는 방법 구현▷ 세 번째, 추상 제품 인터페이스(추상클래스도 가능) : 제품에 대한 추상적 인터페이스 제공▷ 네 번째, 구현 제품 클래스 : 팩토리가 생성할 구체적인 제품 ▶ 예시 기타(Guitar) 공장에서 통기타, 일렉기타 등 여러 종류의 .. 2019. 2. 14.
[디자인 패턴] 싱글톤 패턴 (Singleton pattern) ▶ 주제 : 싱글톤 패턴 (Singleton pattern). 생성 패턴의 하나. 싱글톤 패턴이란, 객체지향 언어에서 프로그램 시작 후에 어떤 클래스가 단 한 번만 인스턴스를 생성하여 메모리에 할당하고, 이후에 이 클래스의 인스턴스가 필요하면 미리 만들어진 인스턴스를 전역 공간에서 불러와서 사용하는 패턴이다. ▶ 예시 아래 예시는 C#을 기반으로 작성하였다. class Program { static void Main(string[] args) { var singletonInstance = Example.GetInstance(); } public class Example { private static Example _instance; private Example() { } // 인스턴스화 하거나 이미 생성.. 2019. 2. 13.
[C#] Task란? ▶ 주제 : Task란?. Task는 "작업" 혹은 "작업의 단위"를 뜻하며, C#에서는 Task 클래스를 이용하여 여러개의 작업을 동시에 관리하거나 비동기식으로 처리가 가능하다. public class Task : IAsyncResult, IDisposable Task는 인스턴스 가능한 클래스이며 IAsyncResult와 IDisposable을 상속한다. ▶ 예시 아래의 예시들은 Task를 이용하는 가장 기초적인 실행 방법들이다. ▷ Task 객체 초기화 시 Action을 파라미터로 넣어주는 방법using System; using System.Threading.Task; class Program { static void Main(string[] args) { var task = new Task(Prin.. 2019. 2. 8.
[C 프로그래밍] 연산자 - 산술 연산자 프로그래밍 언어에는 여러가지 연산자가 종류합니다. +, -, =, >, & 등등... 이번 포스팅에서는 초등학생 때 배운 산술 연산자를 강의하겠습니다. 더하기빼기 곱하기 나누기 나머지 +- * / % ​​ ​ 이 코드로 진행해보겠습니다. +연산은 설명할 필요도 없습니다. A와 B의 값을 더하는 연산자 입니다. 여기서 A는 100 B는 200입니다. 다른 연산자들도 사용 방법은 같습니다만 몇 가지 유의사항이 있습니다. ​ ​나누기 연산은 연산후에 나머지 값을 버립니다. 일반 수학에서 20을 3으로 나누면 6.66666...이 나옵니다만 컴퓨터 연산에서는 최대로 나눌 수 있는 횟수(20 / 3에서는 6)를 구하고 나머지 값(20 / 3에서는 2)를 버립니다. ​​ ​그렇다면 과연 나머지 연산은 무엇일까요? .. 2017. 2. 10.
[C 프로그래밍] scanf()로 값을 입력하자 헤더 파일 : stdio.h함수의 원형 : int scanf(const char *format, … ); 함수의 사용 방법 : scanf("형식 지정자", &변수);함수의 기능 : 콘솔창에서 변수에 값을 입력하는 함수 printf()가 출력 함수라면 scanf()는 입력 함수입니다. 코드 내에서 정해진 값이 아닌프로그램이 진행중인 상태에서 사용자의 입력을 받아 변수에 값을 대입하려고 하는 경우scanf()를 사용합니다. 이 불쌍한 예제를 봅시다. a가 선언되었지만 초기화가 되지 않은 상태에서 출력을 하려고 합니다. 실행해봅시다. 초기화가 되지 않은 변수를 출력을 하려고 하다니 당연히 오류가 뜨거나 쓰레기값이 출력됩니다. 위 소스에 scanf() 함수를 추가해줍니다. scanf("%d", &a)의 뜻은 변.. 2017. 2. 10.
[C 프로그래밍] printf()와 이스케이프 시퀀스 printf()함수는 문자열, 변수의 내용 등을 출력할 수 있었습니다. 위 코드를 적고 실행을 해봅시다.​ Hello World! 가 출력 되었습니다. 그런데 왜 \n는 출력되지 않았을까요?​ 그 이유는 바로 \n는 문자로 인식하는 것이 아니라,어떠한 역할을 수행하는 명령으로 인식하기 때문입니다.​​​​뒤의 \n을 지우고 다시 한번 실행 해봅시다. ​ 처음 실행 화면과 달리Hello World! 를 출력한 후에 줄바꿈이 되지 않았습니다. \n은 줄바꿈을 수행하는 명령어라고 이해하시면 됩니다. 이 처럼 printf()함수의 문자열 내에서어떠한 역할을 수행하는 \으로 시작하는 명령어를 이스케이프 시퀀스라고 합니다. 이스케이프 시퀀스는 \n만 있는 것이 아니라 \t 등 여러가지가 있습니다. (출처 : http.. 2017. 2. 10.
[C 프로그래밍] printf()와 형식 지정자 헤더 파일 : stdio.h​​함수의 원형 : int printf( const char *format, ... ); 함수의 사용 방법 : printf("문자열 또는 형식 지정자", 변수);​​함수의 기능 : 콘솔창에 문자열이나 변수 등을 출력하는 함수 ​​ ​​​변수 시간에도 자주 등장했었던 printf() 함수를 배워봅시다. 위 코드는 문자열 Hello World!를 콘솔창에 출력하는 코드입니다. ​​​성공적으로 실행되었습니다. 이처럼 우리는 printf() 함수를 이용하여 콘솔창에 무언가를 출력할 수 있습니다. ​​printf()함수는 출력할 문자열을 ""에 감싸서 재료로 넣어줍니다. 또한, 변수의 내용을 출력할 수 도 있습니다. ​​​위의 printf() 코드는 a의 내용을 출력하는 코드입니다. 여.. 2017. 2. 10.
반응형