C#

    객체지향

    절차 지향 - 객체 지향 절차 지향이란? 절차(procedure) : 여기서 절차란 절차를 걸친다는 것이 아닌, 함수를 기반으로 만들겠다는 의미이다. 작은 프로젝트를 진행할때 큰 문제는 없지만 규모가 큰 프로젝트가 진행될때 유지보수가 어렵다는 단점이 있다. 함수 기반으로 만들어졌을 경우 진행 중 일부를 수정하기 위해선 함수 자체의 일부를 바꿔야 하기 때문에 제작한 함수를 복기하고 개선해야 하는 등의 번거로움이 있다. 객체 지향이란 OOP(Object Oriented Programming) : 프로젝트 내의 모든 객체(플레이어, 몬스터, NPC, 무기 등) 객체는 크게 "속성"과 "기능"으로 구분이 가능하다. 1. 속성 : HP, 공격력, 좌표(position) 2. 기능 : 이동(Move), 공격(Att..

    추상클래스, 인터페이스

    추상 클래스 ex) abstract class Monster //abstract를 추가할 경우 'Monster'는 추상화된다. { public abstract void Shout() // 추상 클래스 내의 함수 또한 추상적으로 만들 수 있다, 추상적으로 만든 함수는 해당 함수 내에서 정의를 해줄 수 없다.(개념적으로만 존재한다.) } class Orc : Monster // 추상 클래스를 상속받은 class들은 반드시 추상적으로 생성된 함수를 추가해야한다. { public override void Shout() {} } class Skeleton : Monster { public override void Shout() {} } 프로젝트를 진행 중 여러개의 class를 상속받고 싶은 경우가 생길 수 있다...

    Generic(일반화)

    프로젝트를 진행하는데 있어 필요한 형식(int, float형)마다 class를 만들어서 사용해야 할 경우가 있다. 하지만 필요에 따라 각 형식의 class를 만드는 것은 코드가 길어지고 이후 변경하기 번거로운 단점이 있다. 이 상황을 대비헤 다른 방법이 무엇이 있는지 알아본다. 1. 모든 타입을 사용할 수 있는 object 타입을 사용하는 것이다. => object obj = 3; object obj2 = "Hello"; int num = (int)obj; // 결과 '3' string str = (string)obj2; //결과 'Hello' object 타입은 어느 타입이든 사용할 수 있다는 장점이 있다. * 이와 비슷한 var를 사용할 수도 있다, 단 var의 경우 object와는 전혀 다른 성질은..

    Dictionary

    Dictionary 사용 시 대용량 데이터를 처리하는 시간이 List보다 효율적이다. RPG 게임의 경우 다양한 몬스터와 이벤트를 처리할 떄 각각 key값을 부여해 클라이언트와 서버간의 연동을 통해 게임이 진행된다. 위처럼 RPG게임과 같이 빠른 데이터 처리를 필요로 할때 C#에서 지원하는 Dictionary를 사용할 수 있다. 사용 방법 => Dictionary ex) class Player { public int id; public Player(int id) { this.id = id; } } static void Main(string[] args) { Dictionary dic = new Dictionary(); } 키(int)를 통해 Value(Player)를 매우 빠르게 찾을 수 있다, 이와 반..

    다차원 배열

    다차원 배열 선언 방식 : 기존 배열 선언과 크게 다르지 않고 ","와 배열의 크기를 구분 시켜준다. => int[,] a = new int[ 3 , 4 ]; 배열 선언의 []에 '콤마(,)'를 추가하고, 배열의 크기를 지정한다. new int[ 3, 4 ]에서 지정한 배열의 크기는 오른쪽에서 부터 왼쪽으로 보면된다. '4' => 하나의 배열마다 지정된 크기 '3' => 총 배열의 갯수 ex) 위의 다차원 배열을 서랍으로 예시 총 3개의 배열이 있고, 각 배열마다 4개의 칸이 구분되어 있다. ------------------------------- 3번 서랍 [ @ , @ , @ , @ ] 2번 서랍 [ @ , @ , @ , @ ] 1번 서랍 [ @ , @ , @ , @ ] ----------------..

    배열

    기본 데이터형 : int a ; int b = 5; 배열 데이터형 : int [] a = new int[5] ; 배열 생성 시 자신이 생성할 배열의 데이터 타입과 "[ ]", 배열의 이름을 선언한다. => int[] a 해당 배열에 바로 배열의 크기를 지정할 수 있는데 한번 생성한 배열의 크기는 재지정이 불가능하니 충분한 크기로 배정한다. * 배열의 크기를 지정하지 않고 비워놓을 경우 자신이 해당 배열에 값을 지정할때마다 배열의 크기가 유동적으로 변화한다. => int[] a = new int[]; 배열의 크기를 지정할 때는, "new" 와 데이터 타입 + ["배열의 크기"]를 선언해 준다. => new int[5] 선언된 배열의 각 번호에 각각 값을 배정할 수 있다. a[0] = 1; a[1] = 2;..