본문 바로가기

프로그래밍

C# 난수(Random) 숫자 맞추기 응용 02. 윈도우 폼

 

본격적으로 Windows Froms를 이용해 프로그램을 만들어 보겠습니다. 설루션을 만들어도 좋지만 처음 만들어 놓은 설루션을 이용해서 프로젝트를 또 추가할 수 있습니다.

 

 

<솔루션에서 프로젝트 추가하기>

 

솔루션을 오른쪽 마우스 버튼 클릭

 

 

검색창에 Windows Forms 검색

 

 

 

프로젝트 이름을 정해주고 만들기 클릭

 

 

 

Windows Forms 생성이 된 것을 볼 수 있습니다.

 

 

 

폼 꾸미기

 

이제 폼을 꾸며보겠습니다. Windows Forms은 간단하게 UI, 인터페이스 등을 꾸밀 수 있도록 다양하게 제공하고 있습니다. 그중에 오늘은 Label, TextBox, Button을 사용하도록 하겠습니다.

도구상자가 보이지 않을 때

맨 위 보기 탭 클릭 → 도구상자를 찾아서 클릭합니다. 또는 도구상자 단축키 : 'Ctrl + Alt + X'를 누르면 됩니다.

 

 

<예제 살펴보기>

바로 보고 싶다면 맨 밑으로 이동

 

몇 줄 안되는 간단한 예제입니다. 하지만 저번에 배웠던 랜덤 클래스와 함수의 개념이 있습니다.

 

접근 한정자에 대해서 살펴보기

이름이 'RandomPick'이라는 함수를 보면 맨 앞에 public이라고 쓰여 있습니다. 그리고 StartBtn_Click의 이름을 가진 함수는 맨 앞에 private라고 쓰여 있습니다. 이것과 관련된 몇 가지의 키워드들이 더 있습니다. 바로 'protected, internal, protected internal'입니다.

 

방금 위에서 언급한 키워드들은 '접근 한정자'라고 합니다. 접근 한정하는 객체지향 프로그래밍에서 중요한 역할을 합니다. 감추고 싶은 것을 감추고, 보여주고 싶은 것은 보여주고 싶은 은닉성을 가질 수 있기 때문입니다. 이해가 어려우시다면 보안이라고 생각하면 됩니다. 예를 들어 설명해보겠습니다. 커피를 판매하는 카페가 있습니다. 카페에는 손님이 커피를 주문하고 테이블에 앉고 카운터 안에 들어가지는 않습니다. 하지만 직원은 카운터에 안에 있을 수 있습니다. 그리고 테이블까지 자유롭게 이동할 수 있습니다. 이런 식으로 접근 한 종자도 접근할 수 있는 제한이 있습니다.

 

접근 한 종자

기능

public

액세스에 대한 제한은 없습니다. 클래스의 내부, 외부 모든 곳에서 접근 가능합니다.

protected

클래스 외부에서 접근할 수 없습니다. 자식 클래스에서는 접근이 가능합니다.

private

자신의 클래스 내부에서만 접근 가능

internal

같은 어셈블리에 있는 코드에 대해서 접근 가능합니다. 하지만 다른 어셈블리에 있는 코드는 private 수준의 접근성을 가집니다.

protected internal

같은 어셈블리에 있는 코드에 대해서 protected 수준으로 접근이 가능하지만 다른 어셈블리에 있는 코드는 private 수준의 접근성을 가집니다.

만약 이러한 접근한 정자를 정해주지 않으면 기본값으로 private로 설정됩니다.

 

enum 열거형

C#에서 의미 있는 단어를 열거하기 위해 enum을 사용합니다. 상수 같은 숫자보다 더 의미 있는 것을 쓸 수 있습니다. 예제로 예시를 보여드리겠습니다

 

public 다음 enum을 써서 날씨의 종류 3가지를 문자로 썼습니다. 확실히 보기가 깔끔합니다. 이제 enum의 요소에 대해서 알아보겠습니다. 실생활에서 숫자를 처음 셀 때는 1부터 숫자를 세게 됩니다. 하지만 코딩에서는 다릅니다. 0부터 시작합니다. enum을 쓸 때도 배열이라는 것을 쓸 때도 마찬가지입니다. 그래서 enum의 요소는 0부터 시작합니다. " 0, 1, 2, 3, 4, 5, ··· " 이런 식으로 시작합니다.

 

또한 제가 보여준 예제 말고도 숫자와 호환이 가능합니다. 숫자와 호환이 가능하다는 뜻은 'sunny'라는 문자에 숫자 값을 대입할 수 있다는 의미입니다. 이것을 '캐스팅'한다고 말합니다. 사실 enum에 숫자를 바로 호환하는 방법은 많이 이용하는 방법은 아닙니다. 정확한 선언이 되지 않을 때도 있기 때문입니다. 이 정도만 알아두면 나중에 필요할 때 검색해서 사용해도 좋습니다.

 

윈도 폼에서 버튼 기능 코딩하기

 

 아까 만든 윈도우 폼으로 돌아옵니다. 여기서 시작이라는 버튼을 더블클릭하게 되면 바로 코딩할 수 있는 창으로 넘어가게 되고 버튼의 함수가 만들어집니다. 여기에 대해서 다음에 추가 설명을 하도록 할 테니 지금 코딩하는데 이 정도만 알고 계서도 무방합니다.

 

 

이제 버튼 함수에다가 코드를 구성할 겁니다. 그전에 먼저 사용자가 윈도 폼을 실행시켰을 때를 생각해 봅시다. 그렇다면 시작 버튼을 눌렀을 때 날씨가 textbox에 무작위로 나오게 만들어야 합니다. 이러한 동작을 생각해보고 하는 단계를 순서도를 만드는 단계입니다. 지금은 간단한 동작이라서 알고리즘을 만들 정도는 아닙니다. 하지만 앞으로 계속 만들어볼 프로그램에서는 필요하기 때문에 다음에 알고리즘에 대해 다루겠습니다.

 

 

사용자가 시작 버튼을 누른다 → RandomPick {snow, sunny, rainy}중 3가지 난수 생성 

→ if로 3가지 경우를 texbox에 표현

 

 

예제

 

<조건문 : if (만약 ~일 경우 ~ 해라)>

영어를 배우다 보면 if라는 단어를 참 많이 보게 됩니다. 코딩에서도 마찬가지입니다. if라는 단어를 엄청 많이 보게 되실 겁니다. if는 조건문입니다. 말 그대로 조건이 충족한다면 안에 있는 동작을 실행하는 것입니다. 이번에도 예를 들어 설명하겠습니다. 달리기 대회가 있습니다. 선수들은 출발하라는 신호가 있기 전까지 대기를 하고 있다가 출발 신호를 주면 앞으로 뛰어나갑니다. 이걸 if 문으로 보겠습니다. "만약 출발신호가 있을 경우 선수들은 출발해라"라고 표현할 수 있습니다. 그렇다면 반대도 있을 수 있습니다. 출발신호가 없으면 대기를 해야 합니다. 그럴 땐 if 밑에 else를 써서 표현할 수 있습니다. 쉽게 설명하기 위해 구조를 코드가 아닌 아닌 한글로 적어보겠습니다. 한번 비교해보시길 바랍니다.

 

한글로 표현

코드로 표현

출발신호 = 참; // 참, 거짓으로 나눌 수 있습니다.

if(출발신호가 참이다)

{

선수들이 출발한다;

}

else

{

선수들이 대기한다;

}


bool start = true;

// bool 변수는 참 거짓으로만 표현이 가능합니다.

if(start == true)

{

Console.WritLine("선수들이 출발한다.");

}

else

{

Console.WritLine("선수들이 대기한다.");

}

 

<else if>

 

if문과 비슷합니다. 다만 처음 if문의 조건에 맞지 않을때 다른 조건을 확인하는데 용이합니다. else안에 또 if를 쓰는거보다 else if를 바로 쓰는게 가독성과 효율이 뛰어나기 때문입니다. 항상 말했듯이 코딩은 효율성이 중요합니다.

 

추가 코드 설명

코드

설명

■ RandomPick.sunny

 

■ RandomPick.snow

 

■ RandomPick.rainy

RandomPick 함수에 있는 열거형 문자를 사용하기 위한 코드

textBox1.text

우리가 만든 textBox에 날씨를 표현하기 위한 코드

 

 

 

COX 교체축 레인보우 LED 게이밍 기계식 키보드 적축

COUPANG

www.coupang.com

 

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

반응형