목록전체 글 (253)
bdfgdfg
Queue Class - 큐 자료구조는 온라인 게임 서버에서 자주 쓰이는 자료구조. - Queue Class도 기본적으로 큐 알고리즘을 바탕으로 Monitor클래스를 상속받아 둘 이상의 쓰레드들이 동시에 접근하지 못하도록 보호. 딱히 어려운게 없으므로 바로 소스코드. #pragma once #include "Monitor.h" template class Queue : public Monitor { public: Queue(int MaxSize = MAX_QUEUESIZE); ~Queue(); public: // 큐에 데이터 삽입 bool PushQueue(T queueItem); // 큐의 크기 감소 void PopQueue(); // 큐가 비었는지 확인 bool IsEmpty(); //데이터 가져오기 ..
캡슐화 및 은닉성 - 캡슐화는 간단히 말해 관련된 데이터와 함수를 묶는 것. - 실제 구현 내용을 외부에 감추어 은닉한다. 절차 지향 언어인 C에서는 이것이 불가능한데 C에서의 구조체는 단순히 관련된 데이터들을 묶어주는 데이터 덩어리. 그렇기에 특정 함수와 관련된 데이터를 추적하기가 어렵다. 객체지향 언어에서는 이러한 캡슐화가 지원되는데 관련된 데이터와 함수들을 클래스 안에서 사용이 가능해짐에 따라 클래스라는 캡슐 속에서 기능들을 캡슐화하는 게 가능해진 것. 리모컨을 생각해보자. 우리는 간단하게 TV를 향해 리모컨을 들고 채널을 바꾸거나 소리를 높이고 낮출 수 있다. 리모컨 내부를 몰라도(은닉) 우리는 버튼 하나만 누르면(캡슐화) 원하는 대로 리모컨의 기능을 사용할 수 있는 것이다. -> 리모컨의 동작원..
Thread Class - Thread 클래스는 사용자가 쉽게 틱(Tick) 쓰레드를 관리하기 위해 만든다. - 틱 쓰레드는 정해진 시간마다 특정 연산을 하기 원할 때 쓰이는데 온라인 게임 서버에서는 꼭 필요한 기능. -> 일반적으로 좀비상태의 클라이언트의 연결처리를 할때 많이 쓰인다고 한다. -> 좀비상태는 사용자가 연결만 있고 아무것도 하지 않는 상태를 의미. -> 이 상태는 클라이언트와 서버간의 연결 상태가 좋지않거나, 특정 사용자가 악의적인 목적으로 이런 상태를 만들 수 있다. -> 그래서 보통 클라이언트에서는 일정 시간마다 패킷을 보내고 서버에서는 일정 시간안에 그 패킷이 도착하지 않으면 클라이언트와의 연결을 끊어버린다. (좀비상태 방지 가능) - 틱 쓰레드는 위의 역할뿐만 아니라 온라인 게임 ..
객체지향 프로그래밍 언어에서는 상속이라는 키워드가 존재하는데 이름 그대로 부모 클래스의 멤버 함수와 멤버 변수를 그대로 물려받는것을 의미 한다. -> 이 떄 물려받은 클래스를 자식 클래스 혹은 파생 클래스라 한다. 장점은 공통되는 특징(멤버들)들을 다시 작성할 필요없이 필요한 기능이 담긴 클래스를 상속받으면 된다. -> 코드의 재사용성 UP 사용하는 방법은 간단하다 class 클래스 이름 : 접근지정자 부모 클래스명 { //내용. }; 즉 Human이라는 클래스가 존재하고, Student라는 클래스가 존재한다고 보자. 상속을 정하는 기준에서 유명한 방법인 IS-A, Has-A 방법이 있다. A와 B클래스가 있고 상속관계를 정하려고 해본다. IS-A : B는 ~A이다. (상속 관계) Has-A : B는 A..