스토리지

[3.11] Class 생성 및 객체 생성 본문

Unity/수업내용(C#)

[3.11] Class 생성 및 객체 생성

ljw4104 2021. 3. 11. 11:01

클래스는 간단하게 설계서이다.

공장에서 물품을 만들려고 하면 설계서를 바탕으로 물품을 찍어낸다.

모든 설계서는 아래와 같은 형식을 따른다.

public class 클래스이름
{
  멤버변수 선언공간

  생성자

  멤버함수
}

 

아래는 배럭이라는 공장에서 마린(객체)이라는 찍어내기 위해 있는 설계서이다.

public class Marine
    {
        //멤버변수
        private int xPos;
        private int yPos;
        private int hp;
        private int attack;
        private const int sight = 5;

        //생성자
        public Marine()
        {
            hp = 50;
            attack = 5;
            Console.WriteLine("마린이 생성되었습니다.");
            Console.WriteLine("체력 : {0}, 공격력 : {1}", hp, attack);
        }

        //외부에 공개된(public) 멤버함수
        public void Damaged(int damage)
        {
            hp -= damage;
            Console.WriteLine("{0}만큼의 데미지를 입음, 남은 체력 : {1}", damage, hp);
        }

        public void AttackEnemy(int eXPos, int eYPos)
        {
            int distance = (int)(Math.Sqrt(Math.Pow(eXPos - xPos, 2) + Math.Pow(eYPos - yPos, 2)));
            if(distance <= sight)
            {
                Console.WriteLine("마린이 적을 {0}만큼 공격하기 시작함.", attack);
            }
        }

        public void SetPos(int x, int y)
        {
            xPos = x;
            yPos = y;
        }
    }

이 공장에서 만들어지는 마린은 모두 이러한 기능과 정보를 담고 만들어진다.

 

 

공장에서 만들어진 마린을 전장에 투입시키고 싶으면 다음과 같은 코드로 투입시킨다.

class Program
    {
        static void Main(string[] args)
        {
            Marine m = new Marine();
        }
    }

마린 한마리(객체)가 Main이라는 전장(메모리)에 투입되었다.

이 마린이 전장에 투입되었을 때, 객체는 클래스에 있는 '생성자'라는 함수를 실행한다.

 

*생성자 

  생성자는 객체가 메모리에 탑재되었을 때, 무조건 실행되는 함수이다.

  생성자의 역할은 대개 멤버변수 초기화 및 객체가 메모리에 할당되자마자 어떤 기능을 수행할 때 사용된다.

  생략이 가능하다. 오버라이딩이 가능하다. (함수를 여러개 만들 수 있다. 매개변수 달라야함)

 

  Syntax : public 클래스이름(매개변수){ }   //public이 아니면 외부에서 접근자체가 불가능하다.

 

//생성자
        public Marine()
        {
            hp = 50;
            attack = 5;
            Console.WriteLine("마린이 생성되었습니다.");
            Console.WriteLine("체력 : {0}, 공격력 : {1}", hp, attack);
        }

  이 생성자는 마린이 전장에 투입되었을 때, 가장 먼저 해야할 일을 정의해놓았다.

  체력을 지정, 공격력을 지정 후 메세지를 출력한다.

 

class Program
    {
        static void Main(string[] args)
        {
            Marine m = new Marine();
        }
    }

이제 이 것을 실행하면 m이라는 이름을 가진 마린 하나가 전장에 떨어졌다.

생성자가 정상적으로 실행되었다.

Comments