1) 한글 문자 생성기

먼저 한글 문자 생성기를 정적 클래스 KoreanCharMaker로 정의합시다.

먼저 한글 문자가 시작하는 BASE CODE(0xAC00), 초성 시작점(0x1100), 중성 시작점(0x1161)을 상수로 선언합니다.

한글과 관련있는 자판 문자를 초성, 중성, 종성과 쉬프트 키를 정적 문자열로 선언합니다.

중성과 종성은 이중 문자로 구성하는 것들이 있어 문자열 목록을 정의해야 합니다. 이 부분은 정적 생성자에서 초기화합시다.

 

정적 생성자에서 중성과 종성에 사용하는 문자열 목록을 생성및 초기화합시다.

 

초성의 자판 문자를 입력인자로 받아 초성 코드를 반환하는 메서드를 정의합시다.

입력 인자로 들어온 문자가 초성 문자열의 몇 번째 문자인지 반환합니다. 입력 인자가 한글 초성 문자가 올 수도 있고 한글 초정과 매핑하는 영어 알파벳이 올 수 있습니다. 먼저 한글 초성 목록에서의 index를 계산합니다.

만약 index가 -1이 아니면 한글 초성이 입력 인자로 온 것이므로 index를 반환합니다.

index가 -1이면 한글 초성과 매핑하는 영어 알파벳 목록에서의 index를 반환합니다.

 

같은 방법으로 중성 문자열을 입력인자로 받아 중성 코드를 반환하는 메서드를 만듭시다. 중성은 이중 모음으로 만들 수도 있기 때문에 문자열을 입력인자로 받게 합시다.

입력 인자로 한글 중성 문자나 한글 중성 문자와 매핑하는 영어 알파벳을 입력인자로 받을 때도 처리할 수 있는 메서드를 정의합시다. 여기서는 앞에서 만든 메서드를 이용합니다. 이처럼 같은 일을 하는 메서드를 중복 정의하는 이유는 사용하는 개발자의 편의성을 높이기 위해서입니다.

 

같은 방법으로 종성 문자열을 입력인자로 받아 중성 코드를 반환하는 메서드를 만듭시다.

자음 하나로 만들어진 한글 문자를 만드는 메서드를 정의합시다.

모음 하나로 만들어진 한글 문자를 만드는 메서드를 정의합시다.

초성, 중성, 종성으로 만들어진 한글 문자를 만드는 메서드를 정의합시다.

이제 Program 클래스의 진입점 Main 메서드에서 테스트하는 코드를 작성합시다.

 

여기에서는 언제나휴일을 만들는 테스트를 합시다. 언제나는 한글 자모로 구성하기로 하고 휴일은 영어 알파벳 문자로 구성하기로 합시다. 그리고 테스트 하기 쉽게 초성, 중성, 종성을 입력 인자로 전달하면 한 개의 한글을 만드는 메서드를 정의하여 이용하기로 합시다.

 

입력 인자로 받은 초성과 중성, 종성의 코드 값을 구합니다.

그리고 총성과 중성, 종성의 코드 값을 입력 인자로 한글 문자를 만듭니다.

만든 한글 문자를 콘솔에 출력합니다.

 

언제나 부분은 한글 자음과 모음을 이용해서 만들고 휴일 부분은 한글 자음, 모음과 매핑하는 영어 알파벳 문자를 이용해서 만들기로 합시다.

 

[소스 8.5] KoreanCharMaker.cs

 

[소스 8.6] Program.cs

 

[그림 8.04] 실행화면
[그림 8.04] 실행화면