내가 게임개발 하는 법 3강

자 그럼 오늘은 클래스의 초입과 자료형(DATA TYPE)에 대해서 공부해 보도록 하겠습니다.

클래스란 객체지향 프로그래밍의 객체를 만들기 위한 설계도에 해당하는 것입니다.

처음 객체지향 프로그래밍 언어를 배우고 이해하는 부분에서 가장 잘못된 이해가

클래스 = 객체 즉 클래스와 객체를 동일한 것으로 생각하는 것입니다.

분명히 말씀드릴 수 있는 것은 클래스는 객체가 아니며 객체란 클래스를 통해서 생성된 프로그램 상에서 사용되는 실체라고 생각하시면 됩니다.

SF적으로 비유해서 로봇만으로 이루어진 세상이 존재한다고 생각해보면 클래스는 로봇을 생산하기 위한 공장과 설계도역할을 한다고 생각하시면 될 듯 합니다.

로봇을 생산하는 공장 및 설계도 -> 클래스

로봇 -> 객체

객체는 내부에 멤버변수멤버함수라는 요소들을 가질 수 있습니다.

위의 내용을 그냥 이론대로 설명하는 것은 굉장히 재미 없는 일이라고 생각합니다. 즉 우리 프로젝트에 맞는 필요에 의한 클래스 설계를 알아보도록 하겠습니다.

자 RPG를 생각하면 일반적으로 플레이어라고 불리는 녀석이 존재합니다. 주인공이죠. 내가 조종하는 RPG의 주인공이라는 녀석의 설계도를 클래스를 이용하여 만들어 보도록 하겠습니다.

주인공을 설계하기 위한 클래스를 만들기 위해서는

다음과 같이 솔루션 내부에 존재하는 프로젝트에서 오른쪽 버튼을 누르면 ADD 항복이 있고 그 다음 -> Class라고 불리는 항목을 선택하면 클래스를 만들 수가 있습니다. 선택을 하게 되면 클래스와 클래스 파일이 만들어지게 됩니다. 이때 클래스의 이름은 CPlayer이라고 정하겠습니다.

즉 다음과 같이 클래스가 만들어지며 CPlayer이라는 클래스의 선언이 존재하게 됩니다. 이 플레이어의 클래스선언이 바로 플레이어의 설계도의 첫 부분이 됩니다.

이때 지금 만든 방법 때문에 오해하실 수 있는 부분이 클래스를 만들려면 파일도 같이 생성해야 하는 건가? 라는 점일 수 있습니다. 실제 하나의 파일에서는 여러 개의 클래스가 존재할 수 있습니다.

다음과 같이 말이죠.

물론 저 Monster이라는 클래스도 만들 겁니다. 하지만 이것은 하나의 파일에 2개의 클래스를 선언해도 문제 없다는 것을 보여드리기 위해서 작성해본 예제입니다. 실제로 하나의 파일에 하나의 클래스를 생성하는 것이 좋습니다.

하지만 위와 같이 선언할 수 있음에도 굳이 파일 별로 클래스를 분할하는 이유는 다음과 같습니다. 클래스 안에 담아야 하는 내용이 너무나도 많아서 하나의 파일의 코드량(하나의 파일에 코드량이 많아지면 클래스의 내용을 파악하기가 힘들어 집니다.)이 비대해 질 가능성이 있기 때문입니다.

자 그럼 클래스의 생성과 선언에 대해서 알아 보았고 다음은 멤버변수에 대해서 알아보도록 하겠습니다.

멤버변수란 다음과 같이 선언이 가능합니다. 멤버변수를 선언하기 위한 필수요소로는 자료형(DATA TYPE)과 이름이 존재합니다. 자료형(DATA TYPE)이란 이 변수가 가지는 변수의 형태와 크기를 의미하며 이름은 변수의 위치를 의미한다고 할 수 있습니다.

자 저의 설명이 너무 이론적이었다면 좀더 풀어서 설명해 보도록 하겠습니다.

  1. 컴퓨터는 0과 1의 데이터로 이루어진 집합체 입니다.(컴퓨터는 실제로 0과 1밖에 저장하지 못합니다.)
  2. 하지만 0과 1로 이루어진 데이터는 사람이 이해하기에는 난해할 수밖에 없습니다.

    Ex) 00010001 이게 숫자 17을 나타낸다고 일반사람은 이해하기 힘들 것입니다.

  3. 그래서 사람이 이해하기 쉽게 만들어진 것이 고급언어인데. C#은 그런 고급언어 중 하나입니다.
  4. 하지만 결국 고급언어도 최종적으로는 000111010101010101과 같은 0과 1로 변환되게 됩니다.
  5. 자 그럼 여기서 RAM이라는 녀석이 나옵니다.
  6. 자 램에도 000101010101010과 같이 데이터가 있을 것입니다. 컴퓨터에서 모든 것은 0과 1로밖에 표현하지 못하고 램도 결국 0과 1을 저장하고 있으니까요.
  7. 그리고 결국 우리의 프로그램도 RAM이라는 곳에 010101010101010로 이진화 되어 데이터로 올라가 있습니다.

이 0이냐 1이냐를 1비트라고 부릅니다.

자 그럼 우리의 프로그램이 실행되면 다음과 같이 이루어져 있다고 생각해 보겠습니다.

자 그럼 위에 우리가 선언한 2가지 변수 중 int m_iLv가 저 RAM의 메모리의 어느 곳에 얼마만큼 위치에 존재한다고 어떻게 특정할 수 있을까요? 바로 다음과 같이 설명할 수 있습니다.

와 같은 내용입니다.

위와 같은 내용 때문에 변수를 선언할 때는 꼭 자료형 그 다음 이름이 필요한 것입니다. 자료형이 없다면 RAM안에 얼마만큼의 크기로 이 데이터가 존재할지 특정할 수 없으며 이름이 없다면 이 데이터가 어디에 위치하는지 특정 지을 수 없는 것입니다.

여기서 이름은 우리가 마음대로 지을 수 있지만 자료형은 이미 C#에서 여러가지 자료형을 지원하고 있습니다. 이를 기본 자료형이라고 부르며 다음과 같은 종류가 존재합니다.

자 그럼 기본 자료형에 대해서 알아보았고 다음 강의에서는 클래스 설계에 있어서 멤버변수와 자료형이 어떤 의미를 가지는가를 알아보도록 하겠습니다.

Posted by JJOREG