코딩공부

[깅깅의 C# 독학] 1.C# 기본 - Main(), 구문, 주석, 폼, 문자, 이미지

깅깅710 2023. 8. 7. 01:00

-Main()

이전 글(링크-https://dubleging.tistory.com/9)의 마지막 부분, 코드를 작성한 걸 보면 Main()이라 적힌 걸 볼 수 있다. 

"C# 프로그램은 원칙적으로 이 Main()이라고 기술되어 있는 부분부터 실행이 시작됩니다. ....(중략).... 중괄호({ })로 감싸져 있는 부분은 블록(block)이라고 합니다. 이 블록은 Main() 메서드(main method)라는 이름이 붙어 있습니다. 「메서드」라는 단어의 의미에 대해서는 제5장에서 자세히 설명합니다."
- 그림으로 배우는 C# Programming Basic 中 42p

이 Main()에 대해 도저히 책보다 더 명쾌하게 설명할 수가 없어서 문구를 가져왔다.

메서드를 자세히 설명하는 책의 5장은 '클래스'를 다루는 장인데, 메서드가 클래스와 함께 다뤄지는 부분이라 5장에서 자세히 설명하는 것 같다. 참고로 네이버 사전에선 다음과 같이 설명한다.

객체지향 프로그래밍(OOP:object-oriented programming)에서의 클래스는 같은 종류의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의하는 것인데, 클래스에 의해 만들어지며 프로그램 런타임에 실제 메모리 상에 할당되는 객체를 인스턴스라고 한다. 메소드란 클래스 내부에 정의되어 있으며, 인스턴스가 클래스와 관련하여 어떻게 행동하는지의 동작을 정의하는 것이다.
- [네이버 지식백과] 메소드 [method] (두산백과 두피디아, 두산백과)

어쨌든! 중요한 건, Main()부터 프로그램이 실행된다! 이다.

 

 

-구문(Statement)

밑줄 친 부분과 같이 하나의 일을 처리하는 작은 단위의 코드를 C#에선 구문이라 한다. 구문은 하나씩 차례대로 처리된다. 구문의 마지막엔 항상 세미콜론(;)을 붙인다.

< 세미콜론을 붙여야 되는데 안붙이는 경우 빨간 밑줄이 생긴다.

 

 

-주석(Comment)

주석은 프로그램을 실행할 때 처리되지 않는 내용이다. 주석을 넣기 위해서는 //와 /* */를 쓴다. 코드는 컴퓨터를 위한 언어이기 때문에 사람이 보면 한 번에 이해하기 힘들다. 그래서 주석을 넣어 어떤 동작을 하는 코드를 썼는지 미래의 나와 협업하는 사람에게 알려주는게 중요하다.

 

 

[창을 띄워보자 - 폼(Form)]

이제 새로운 코드를 작성할 때가 되었다. 써놓은 걸 다 지우고 다음과 같은 코드를 작성했다.

이렇게 작성하고 '디버그하지 않고 시작(Ctrl+F5)'를 누르면 다음과 같이 프로그램이 실행된다.

짜잔! 새로운 창이 열렸다! 코드를 보면 알겠지만 이 창을 띄우기 위해 사용하는 참조가 'System.Windows.Forms' 이다. 이제 이 안에 문자, 그림, 버튼 등을 넣고 여러 동작을 시키면서 다양한 프로그램을 만들 수 있는 것이다!

 

-클래스와 오브젝트(class & object)

박스 부분을 잘 보자. 이 부분이 창을 띄우는 핵심인데, 여기서 Form은 클래스의 이름, fm은 오브젝트의 이름이다.

 

그림을 그린다고 하자. 무슨 그림을 그릴까~ 고민하다가 사람을 그리기로 했다. 그리고 내가 그릴 사람의 이름을 '깅깅깅' 이라고 할 것이다. 이걸 코드로 표현하면 "사람 깅깅깅;" 이 될 것이다.

 

사람은 여러 형태가 있지만 얼굴, 목, 가슴, 배, 팔, 다리의 기본 뼈대는 비슷하다. 깅깅깅을 그리기 위해 사람의 뼈대를 그린 걸 코드로 표현하면 "깅깅깅 = new 사람( );" 이렇게 표현할 수 있겠다.

 

여기서 사람은 클래스명, 깅깅깅은 오브젝트명으로 볼 수 있다. 깅깅깅이란 이름은 내가 아무렇게나 붙인 것처럼 오브젝트명은 내가 알아서 잘 정하면 된다. 이렇게 오브젝트의 이름을 정하는 걸 '오브젝트명을 선언(declaration)한다'라고 표현한다.

 

참고로 이 두 줄은 아래처럼 한 줄로 표현할 수도 있다.

Form fm = new Form();

 

-프로퍼티(property)

표시된 창을 보면 타이틀이 '깅깅'으로 되어있다. 그리고 코드를 보면 이는 fm.Text 와 관련되어있는 걸 알 수 있다. 여기서 .Text는 프로퍼티의 이름이다. 타이틀을 설정하는 Text 외에도 색, 크기 등을 변경할 수 있는 여러 프로퍼티가 있다.

 

 

 

[문자를 넣어보자 - 라벨(Label)]

 창에 자주 표시하는 문자, 이미지, 버튼 등과 같은 기능들도 클래스로 준비되어있는데, 이 창을 구성하는 부품들을 컨트롤(Control)이라고 한다. 그 중 문자를 표시하는 컨트롤은 바로 라벨(Label)이다.

        Label lb = new Label(); //라벨 생성
        lb.Width = 100; //라벨의 가로길이
        lb.Text = "나는 깅깅이요"; //내용

        lb.Parent = fm; //라벨이 어디에 표시될건지?

라벨에도 당연 여러 프로퍼티가 있다. 여기서 내가 중요하게 생각하는 건 "Parent"라는 프로퍼티이다. 라벨을 어느 폼에 표시할 건지 꼭 정해줘야하는데, 난 자꾸 까먹는다. 그래서 바보같이 매번 문자가 안뜬다고 당황하다 추가한다. ㅠㅠ

 

 

[이미지를 넣어보자 - PictureBox]

이미지를 넣을 땐 PictureBox 를 쓰면 된다. 또 참조 중에 System.Drawing을 추가로 사용한다. 필수적으로 Image 프로퍼티를 통해 이미지 파일 경로와 파일 이름.확장자명을 넣어주어야한다. 또 요놈도 폼의 부품이기 때문에 Parent를 통해 표시할 폼을 정해줘야한다. 여기서 중요한 점은 경로에 원화 기호(\)가 2개씩 들어가야한다는 점이다.

 

경로를 복사하면 "C:\Users\user\Pictures" 와 같이 기호가 하나밖에 안들어가있는데, C#에서는 이 기호를 그대로 인식하지 않지 않기 때문에 하나 더 붙여주는 것이다. 이처럼 원화 기호를 붙여서 표현해야하는 특수 문자가 있다. 이를 이스케이프 시퀀스(escape sequence)라고 한다. 대표적으로 엔터 "\n" 과 백 스페이스 "\b" 가 있다.

이미지는 예전에 찍은 도트. 캐릭터 이름은 깅!

참고로 이미지의 가로(Width) , 세로(Height)를 설정안해주면 기본크기에 따라 잘린다. (기본크기가 몇인지 확실히는 모르지만 대략 100x50 인 것 같다.)

 

 

요약


1.프로그램은 Main() 부터 실행

2.하나의 일처리를 하는 작은 단위의 코드를 구문이라 함. 세미콜론(;) 필수!

3.주석 한 줄은 // , 여러 줄은 /* */

4.창을 띄우려면 Form 클래스 사용.

5.기본적으로 클래스명 오브젝트명 = new 클래스명(); 형식을 띔

6.프로퍼티(property) 로 오브젝트 상태 변경.

7.문자 표시는 Label, 이미지는 PictureBox.