분류 전체보기 548

디자인페턴 강좌중 4/6

State패턴을 하기 전에 함수 포인터의 대안으로서 가상함수를 소개해 드리겠습니다. State패턴이 사실 함수포인터랑 비슷하기 때문에... 가끔 너무 많은 if문 때문에 함수 포인터를 쓰는 경우가 있을 것입니다. 이 가상함수는 함수 포인터와 비슷하다고 할 수 있습니다. 차이점이라면 더 유연하고 직관적이며... 암튼 더 좋습니다. void HandleCommand( int CommandID ) { switch( CommandID ) { case 1: case 2: case 3: default: } } 이것을 함수 포인터로 바꾸면... void Command1() { //구현.... } void Command2() { } void Command3() { } typedef ..

디자인페턴 강좌중 5/6

http://www.uml.co.kr/ 디자인 패턴과 UML을 위한 좋은 홈페이지입니다. 한 번 들려보세요 한글로 된 강좌도 읽을 수 있고, 객체 지향에 대한 생소한 분야들을 알게 될 것입니다. 으흑~ 이번엔 데코레이터 패턴입니다. 이 패턴에 대한 예를 찾기가 힘들더군요. 스타를 하다가 우연히 예를 발견해서 강좌를 씁니다. 제가 첨에 패턴 배울 때 이 데코레이터 패턴이 이해하기가 가장 힘들었었는데 그 때문인지 강좌 쓰기도 힘드는군요 -_-;;;; [[ Decorator ]] 동적으로 (실행시간중에) 객체에 부가적인 기능을 붙여주고 싶다. 이 패턴은 기능을 확장하기 위해 서브클래싱(상속)을 하는 것에 대한 유연한 대안을 제시해준다. ..이번에도 스타크래프트 개발 현장.. 유닛의 렌..

디자인페턴 강좌중 1/6

[[객체지향의 기본 개념]] 객체 지향에 대한 체계적인 설명은 못 드리겠고, 생각나는 대로 간략하게 설명을 하겠습니다. 객체 지향에서는 인터페이스와 구현의 분리를 아주 중요하게 여깁니다. 인터페이스와구현이 뭔지는 아시겠죠? 모르시면 메일을.. 왜!! 분리하느냐? 라는 것은 이것이 주는 이점을 알면 이해할 수 있겠죠. 눈 앞의 컴퓨터를 예로 들겠습니다. 컴퓨터 본체의 인터페이스를 살펴보면 전원, 리 셋버튼, 시디롬 버튼 등의 버튼들과 모니터 연결 케이블, 전원 케이블 등의 케이블이있습니다.. 그럼 이제 컴퓨터의 구현을 살펴보죠. ... ... ... 헉!! 구현은 너무 복잡해서 생략 했습니다. 암튼 컴퓨터의 내부 동작은 무쟈게 복잡하다는 것을 아실껍니다. 내부 부품도 무쟈게..

디자인페턴 강좌중 2/6

가장 쉬운 싱글턴 패턴부터 하겠습니다. 싱글턴(Singleton) 클래스의 인스턴스를 오직 하나만 만들고 그것에 쉽게 접근을 하고 싶다. 가끔 클래스의 인스턴스가 오직 하나만 존재해야 경우가 있을 것 입니다. DirectX의 DirectDraw, DirectSound등의 컴포넌트들이 이런 경우에 해당 하겠지요. 특히나 이런 컴포넌트 들은 자주 사용하기 때문에 컴포넌트 변수를 쉽게 얻어올 수 있어야 할 것 입니다. 그래서 대부분의 라이브러리를 보면 LPDIRECTDRAW7 g_pDDraw; 이런 식으로 전역 변수를 만드는 경우가 많습니다. 전역 변수로 만들면 사용하기 편하기 때문이지요. 그러나 역시 클래스화를 하는 것이 사용하기에 더 편하므로 클래스화를 할 것입니다. class cDirectDraw { ...

네트워크 개념을 이해하자

1. Network Orientation 1) 네트워크란? 네트워크란 무었일까요? 몇몇 사람들이 저에게 가끔씩 이렇게 물어보는데 저는 그러면 바로 다시 질문을 합니다. "컴퓨터란 뭐죠?" 상대방: ".....-.-" 컴퓨터란 무엇일까요? 당연히 컴퓨터는 컴퓨터 입니다. 국어사전을 찾아보면 뭐 어떻게 어떻게 하는 이상한 기계정도로 나와있겠지만 컴퓨터를 굳이 정의하고 해석한다는건 어렵고 복잡하고 어리석은 일 일 것입니다. 네트워크도 마찬가지 입니다. 네트워크하면 바로 여러분들의 머리속에 떠오르는 것 (뉘앙스정도로 고도 할수잇겠네요..^^) 바로 그것입니다. 근데 강좌에서 이러고 넘어가면 욕듣겠죠? MS의 네트워크교재에선 이렇게 나와있습니다.(영어라서 대충 해석을 햇습니다..^^) '가장 기본적인 레벨에서 네..

IT/네트워크 2005.07.05

TCP/IP를 기반으로한 온라인 게임 제작

MULTI-6684.zip 좋은 자료는 서로 공유되어야 한다고 봅니다. 그래서 제가 활동하고 있는 곳의 자료를 공유코자 이 곳에 이렇게 좋은 자료를 게재합니다. 프로그램의 세계라는 잡지책의 1999년 12월에 특집으로 게제 되었던 글입니다. 글쓴이는 NC소프트의 리니즈 개발팀의 배재현(goldbat@ncsoft.co.kr)님이 쓰셨 습니다. 최근들어 온라인 게임들이 점점 대중화되며 인기를 끌고 있다. 특히 수천 명이 하나의 서버에서 게 임 내 가상스페이스를 공유하며 플레이하는 그래픽 머드의 개발과 동작원리는 게임 개발을 시작하려 는 사람들에게 많은 관심의 대상이 되고 있다. 3부에서는 간단한 그래픽 머드의 서버와 클라이언트 프로그램을 구현하고 이를 통해 그 구조를 살펴본다. 온라인 게임과 싱글유저 게임은..

IT/네트워크 2005.07.05

함수 포인터.

우선, 글을 시작하기 전에, 내가 알고 있는 "지식"이라는 것은, 결과론적으로 얻어진 것으로, 그 내부적 상황을 자세히 알 수 없는 것임을 밝힌다. 나의 목표 중 하나는, 그 내부적 상황을 자 세히 아는 것이지만, 우선 그것을 모르더라도 프로그래밍이 가능하긴 하니, 글을 쓰려 한다. 결 과론적이라는 말은, 직접 코딩을 해보았다는 말이니, 그 결과는 확실히 보장할 수 있다(에러까 지 >..

IT/C and C++ 2005.07.03

함수 포인터란?

1. 함수 포인터란?- 프로그램에서함수의 이름은 메모리에 로드된 그 함수의 실행코드 영역의 시작주소를 의미한다.- 함수에 대한 포인터는 바로 함수의 시작주소값을 갖는 포인터이다. 함수 포인터라는 것 역시 32비트 체제하에서 4바이트의 메모리를 갖는 포인터 변수 입니다. 일반 포인터 변수와 다른 점은 일반 포인터 변수가 변수들의 주소값을 저장하는 반면에 함수 포인터는 함수의 주소값을 갖는다는 것입니다. 함수는 code 부분입니다. 즉 프로그래머가 짠 코드가 컴파일 되어서 기계 코드로 변화된 것, 그것이 바로 code 입니다. 프로그램이 실행되기 위해서는 이 code가 메모리에 올라가 있어야 하는 것입니다. 여기서 어떤 함수의 호출은 이 code중에서 그 함수 부분으로 jump(이동) 하는 것이지요. 바로 ..

IT/C and C++ 2005.07.03

건강과 행복에 관한 좋은글

장수비결 10가지 1. 小食多齒(소식다치) 음식은 적게 먹고 과식함이 없이 적게 먹고 많이 씹는다. 2. 小肉多菜(소육다채) 고기를 적게 먹고 생선과 야채를 많이 먹는다. 3. 小鹽多醋(소염다초) 음식을 싱겁게 먹고 식초를 많이 먹는다. 4. 小酒多果(소주다과) 술은 적게 마시고 과일은 많이 먹는다. 5. 小車多步(소차다보) 차를 적게 타고 많이 걷는다. 6. 小衣多浴(소의다욕) 옷을 적게 입고 목욕을 자주 한다. 7. 小言多行(소언다행) 말수는 적게하고 실행을 많이 한다. 8. 小浴多施(소욕다시) 욕심을 적게갖고 선행을 많이 베푼다. 9. 小憤多笑(소분다소) 분한 것은 참고 많이 웃고 명랑하라. 10. 小煩多眠(소번다면) 번민을 작게하고 잠을 충분히 잔다. 건강 "돈을 잃어버리는 것은 인생의 적은 것을..