본문 바로가기

C# 개인 공부 기록용/어소트락 게임아카데미 - C# 무료강의[2019] 총48강

[C# 강의 7화]맴버함수, 지역변수의 기본개념 & 클래스 접근제한 지정자

출처 : https://www.youtube.com/watch?v=-JD5ry7P1iU&list=PL4SIC1d_ab-Y-bBKojxhtFWwNpawMM1h5&index=7 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// ex) RPG
// 행동에 대한 내용


// 지형에서 움직인다.
// 몬스터를 공격한다.
// NPC와 대화한다.
// 스킬을 사용한다.

class Player
{
    // 명사만으로는 부족!
    int Att;
    int Hp;

    // 행동 = 멤버함수(method)

    // ex)
    // 리턴값 : void (return -> X)
    // 식별자 : Move
    // 인자값 : ()
    
    void Move()
    {// <- 함수의 시작

    }// 함수의 끝

    void Fight()
    {

    }

    void Talk()
    {

    }

    void SkillUse()
    {

    }

}

// RPG를 만든다. -> 프로젝트
// 주인공이 있다. -> 클래스
// 주인공이 공격력이 있다. -> 멤버변수
// 주인공이 공격력으로 때린다. -> 멤버함수

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

class Player
{
    // 멤버변수 -> 클래스 내부
    int Att;
    int Hp;

    void Fight()
    {
        // 선언되는 순간 지역변수는 메모리화 됨
        int Damage = 0;
        
        Console.WriteLine("Fight!");
    }
} // 게임에서 사용하기 위해서 여기까지 설계했다.

namespace LocalVar
{
    // C#은 고지식한 객체지향 언어 = 클래스밖에 모르는 바보!!!
    // 프로그램의 시작조차도 클래스안에 묶어놔야 한다.
    class Program
    {
        // 시작용 함수
        static void Main(string[] args)
        {
            // instantiation(인스턴스화 || 객체화)
            // 클래스 = 설계도
            
            // 객체화라고 하는 굉장히 중요한 작업.
            // 클래스를 뭐라고 말씀드렸나요?
            // 설계도.

            // Player의 설계대로 플레이어를 만드는데
            // 그 이름을 NP라고 해라
            // Player NP1 = new Player();
            // Player NP2 = new Player();


            // 클래스 안에 있으면 멤버변수
            // 함수안에 있다면 지역변수
            // * 지역변수의 규칙 = 내부에서만 사용 가능 *


            // 함수안에 있는 녀석들을 지역변수라고 한다.
            int Att = 0;
            Att = 50;

            // Console.WriteLine("Local Variable");
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

class Player
{
    // 객체 지향의 캡슐화 (은닉화를 대표하는 문법)

    public int HP; // 외부에도 공개
    protected int ATT; // 자식에게만 공개
    private int DEF; // 내부에만 공개

    public void Fight() // 함수도 적용된다
    {
        Console.WriteLine("Fight!");
    }
}

namespace ClassAccess
{
    class Program
    {
        static void Main(string[] args)
        {
            Player np = new Player();

            // 만들어진 객체의 내용을 사용하려면
            // 객체의      이름.     을 사용한다.
            // * 나오지 않는 이유 = 접근 한정자 문법을 사용하지 않아서 외부에 공개되지 않음. *

            np.HP = 0;
            np.Fight();
        }
    }
}