"2008년 08월 23일"
BMP화일로 지형생성하기

by 만드는1人 | 2008/08/23 02:32 | 프로그래밍 | 트랙백 | 덧글(1)

"2008년 08월 16일"
RAW화일로 지형생성하기


........

by 만드는1人 | 2008/08/16 22:52 | 프로그래밍 | 트랙백 | 덧글(1)

"2008년 05월 15일"
현재 진도

C# : 40%
UML : 30%
디자인패턴 : 5%
프로그램기능분석 : 20%
기능리스트작성 : 0%
하드웨어기초 : 10%
--- 5월말까지 끝내야 함 ---

설계 : 0%
구현 : 0%
센서,시리얼통신 : 0%
하드웨어설계 : 0%
하드웨어제작 : 0%
--- 6~8월에 해야할 것들 ---

by 만드는1人 | 2008/05/15 01:43 | 프로그래밍 | 트랙백(3) | 덧글(1)

"2008년 05월 15일"
이것만은 기억하자, 업캐스팅

업캐스팅의 예 : 과자먹는꼬마

interface 과자
{    void 봉지뜯기();   }

class 새우깡 : 과자
{    public void 봉지뜯기() { ... } // 구현
      public void 먹기()                             }

class 바나나킥 : 과자 { ... }

class 과자먹는꼬마
{
    public 과자 g = new 새우깡();       // 업캐스팅
    public void 과자봉지뜯기(과자 g)
    {
        g.봉지뜯기();                          // override된 하위클래스의 메소드를 호출한다.
    }
    ///    public void 과자먹기(과자 g)
    ///    {
    ///        g.먹기();                       // 상위클래스에 선언되지 않은 메소드는 에러가 발생한다.
    ///    }
}

1. 꼬마는 '과자봉지뜯기'에서 새우깡봉지인지 바나나킥봉지인지 구별할 필요없이 '과자'의 봉지를 뜯는다.
2. 업캐스팅이 되면, virtual로 선언된 메소드를 override 한 경우, override 된 메소드가 호출된다.
3. 업캐스팅이 되면, 상위클래스에 선언되어 있지 않은 메소드는 하위클래스에 구현되어 있더라도 호출할 수 없다. 즉, 업캐스팅된 과자로 할 수 있는 것은 봉지뜯기밖에 없다.


관련 : 네이버지식인
http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10106&eid=3NMjicI7EDqWnfG4Esp/Hj+p0STfdLId&qb=wNq52SDEs726xsM

by 만드는1人 | 2008/05/15 01:29 | 프로그래밍 | 트랙백 | 덧글(0)

"2008년 05월 07일"
이것만은 기억하자 this, base

this는 미래에 객체가 생성될 시점에 스택의 객체변수가 갖게 될 해시코드를 값으로 갖는다.
this 는 객체 자신을 가리킨다. (클래스로부터 생성될 객체)

base는 미래에 하위객체가 생성되기 바로 직전 생성된 상위객체를 가리킨다.
base 는 상위 객체를 가리킨다.

상속이 발생하여 하위객체가 생성되면,
힙 영역에는 상위객체의 메모리가 먼저 생성되고, 그 다음에 하위객체의 메모리가 생성된다.
2단계 상속일 경우 최상위객체-상위객체-하위객체의 메모리 조각이 차례대로 생성된다.

상위클래스에 virtual, 하위클래스에 override로 메소드 재정의를 하면,
하위클래스는 상위클래스의 메소드에 접근할 수 없다.
이때 base를 이용하여 상위클래스의 (재정의되지 않은) 메소드를 사용할 수 있다.

상위클래스의 생성자에 매개변수가 필요한 경우, 하위클래스의 생성자에 base를 이용하여 상위클래스의 생성자에 매개변수를 전달해 줄 수 있다.

by 만드는1人 | 2008/05/07 19:56 | 프로그래밍 | 트랙백 | 덧글(1)

"2008년 05월 07일"
이것만은 기억하자 스태틱

정적멤버 : 스태틱 멤버변수와 스태틱 메소드가 있다.
스태틱은 다음과 같은 특징을 가진다.

인스턴스이름을 참조하여 액세스할 수 없고, 형식 이름을 사용하여 한정해야 한다.
클래스.정적멤버 (○) , 객체변수.정적멤버 (×)

여러대의 피씨(객체변수)에서 공유하는 공유프린터(정적멤버)와도 같다.
해당 클래스에서 아무리 많은 객체가 생성되더라도 스태틱 멤버는 오직 한 곳의 메모리에만 생성된다. 즉, 유일하다.

by 만드는1人 | 2008/05/07 00:43 | 프로그래밍 | 트랙백 | 덧글(0)

"2008년 05월 06일"
이것만은 기억하자 클래스

클래스는 데이터 타입이라고 할 수 있다. (사용자 정의 데이터 타입)
클래스의 객체변수라고 할 수 있다.

myClass mc = new myClass();  // 객체변수를 선언하고, 객체를 생성한다.

"객체변수를 선언한다"의 의미 :
스택영역에 해시코드를 담을 메모리를 생성한다.

"객체를 생성한다"의 의미 : (new와 동시에 생성자가 호출됨)
힙영역에 클래스 모양(형식)의 메모리조각을 생성하고 스택영역에 해시코드를 저장한다.


클래스(참조타입)는 int(값타입)와 달리,
스택메모리에 데이터 대신, 데이터가 들어갈 힙메모리를 가리키는 인덱스테이블의 해시코드가 들어있으며,
변수선언시 메모리가 생성되지 않고 new 연산자를 통해 별도로 생성해야 한다.
(변수선언과 메모리생성이 분리되어 있다)


<참조타입 변수의 선언과 할당>
  1. 스택영역에 객체변수 선언 (아직 해시코드는 생성되지 않았으나 곧 생성될 해시코드에 붙일 식별자)
  2. 힙영역(자유기억공간)에 메모리 생성(데이터가 저장되는 곳)
  3. 인덱스테이블에 힙영역의 메모리주소에 대한 해시코드 생성
  4. 객체 변수에 해시코드 할당 (식별자와 참조값의 연결)
  5. (객체 변수에는 해시코드가 저장되며 해시코드가 나타내는 메모리에 데이터가 저장된다)
클래스와 비슷한 사용자정의 데이터 타입인 구조체는
변수선언과 동시에 값타입 메모리가 자동으로 스택에 생성되며, 상속이 불가능하다.


참조타입은 포인터와는 전혀 다르다고 보면 된다.

by 만드는1人 | 2008/05/06 18:46 | 프로그래밍 | 트랙백 | 덧글(0)

"2008년 05월 02일"
이것만은 기억하자 자료 형식

데이터 타입(data type))이란 메모리 생성시 메모리의 모양을 어떤 형태(type)로 잡을 것인지(1만큼의 용량을 가진 상자 모양인지, 2만큼의 용량을 가진 상자 모양인지 등등)를 지정하는 것이다. 자료형에 따라 해당 자료가 담긴 메모리 조각의 형태도 달라진다.
C#에서 기본적인 데이터 타입을 미리 정의해 두고 있는 것을 값타입(value type)이라고 한다.

by 만드는1人 | 2008/05/02 22:04 | 프로그래밍 | 트랙백 | 덧글(0)

"2008년 04월 28일"
파일 관리자

메인폼은 TreeView 에서 드라이브와 하위디렉토리를 노드로 추가하여 내 컴퓨터의 디렉토리정보를 보여준다.
TreeView의 노드를 선택하면 ListView 에서 디렉토리의 파일목록을 보여주고 현재 노드를 1에 저장한다.
파일선택하고 복사,이동 누르면 다이얼로그 띄워서 타겟 노드를 2에 저장한 후, 1에서 2로 복사,이동 한다.
파일선택하고 삭제를 누르면 파일을 삭제하고 ListView에서 해당 아이템을 삭제한다.

보완할 부분 :
- 새 다이얼로그에서 노드확장 이벤트핸들러를 메인폼에서 가져다 쓰기(?)
메인폼 이벤트핸들러를 static 으로 해주고 새 다이얼로그에서 MainFrm.dirTreeViewExpand 로 연결해준다.
- ListView 에서 파일을 TreeView 노드로 드래그&드롭시 이동이 되는 기능
소스컨트롤 : MouseDown 이벤트 (리스트뷰의 경우 ItemDrag 이벤트 사용했음)
타겟컨트롤 : DragEnter, DragDrop 이벤트 (트리뷰의 경우 DragDrop 대신 MouseHover 이용)

5월 1일 추가된 부분 : 오른쪽의 파일을 왼쪽의 폴더로 드래그하여 갖다 놓으면 파일이 그 폴더로 이동된다.

MyFileManager.exe (저장해서 실행해야 됨)



이어지는 내용

by 만드는1人 | 2008/04/28 19:55 | 프로그래밍 | 트랙백 | 덧글(1)

"2008년 04월 24일"
로드맵

대망의..
프로젝트A 로드맵이 발표되었습니다. 타임리밋은 2008년 8월까지.


(클릭하면 원본 이미지를 볼 수 있음~)

by 만드는1人 | 2008/04/24 23:46 | 마인드맵 | 트랙백 | 덧글(0)

"2008년 04월 23일"
Simple Note

// (MainApp.Designer.cs) 폼에 컨트롤을 추가하고,
            ...
            this.Controls.Add(this.txMemo);
            this.Controls.Add(this.mnMain);
            ...

// (MainApp.Designer.cs) 이벤트와 이벤트핸들러를 연결
            ...
            this.새로만들기NToolStripMenuItem.Click += new System.EventHandler(this.새로만들기NToolStripMenuItem_Click);
            ...

// 메인폼 생성자... 유니코드체크값 초기화 ... {}
// '열기' 클릭시 호출할 메서드 ... {}
// 파일열기 처리용 메소드(직접 작성) - 오픈다이얼로그에서 파일이름을 매개변수로 받음 ... {}
// '저장하기' 클릭시 호출할 메서드 ... {]
// 파일저장 처리용 메소드(직접 작성) - 저장다이얼로그에서 파일이름을 매개변수로 받음 ...{}

SimpleNote.exe (저장해서 실행해야 됨)



이어지는 내용

by 만드는1人 | 2008/04/23 00:53 | 프로그래밍 | 트랙백 | 덧글(0)

"2008년 04월 17일"
[연습문제] 추상클래스, 배열, 인덱서, 델리게이트

추상클래스는 하나 이상의 구현된 메소드와 하나 이상의 구현되지 않은 추상메소드를 가진다.
자식클래스가 추상클래스를 상속받으면 추상클래스에 구현된 메소드를 물려받고, 추상클래스에 구현되지 않은 메소드는 자식클래스 자신이 구현해야 한다

weapon 추상클래스는 reload 메소드를 구현해두었으며, shot 추상메소드를 구현없이 선언만 해두었다.
gun과 machineGun 자식클래스는 reload 메소드를 상속받고, shot 추상메소드를 실제적으로 구현하였다.
또한 자식클래스는 추상클래스에서 protected로 선언된 bullets 와 MAXBULLETS 데이터를 상속받아
자신의 생성자에서 총알 갯수를 저장하였다.


abstract class weapon
{
    protected int bullets = 0;
    protected int MAXBULLETS;

    ...

class gun : weapon
{
    public gun()
    {
        MAXBULLETS = 15; 
    }
    ....

ConsoleApplication1.exe

이어지는 내용

by 만드는1人 | 2008/04/17 14:38 | 프로그래밍 | 트랙백 | 덧글(0)

"2008년 04월 10일"
형광펜

객체지향의 기초적인 개념 복습에 도움이 될 부분에 형광펜을 칠해보았다.

[내용추가]
필드 : 클래스의 범위로 선언된 변수
지역변수 : 하나의 함수 또는 메소드 안에서만 사용되는 변수



>> 내용 펼치기 <<

by 만드는1人 | 2008/04/10 18:36 | 프로그래밍 | 트랙백 | 덧글(1)

"2008년 03월 23일"
앞으로 공부할 책



프로그래밍 언어를 C#으로 결정한 주요 원인은 다음과 같다.

1. 빠른 생산성 = 개발시간 단축
2. 마이크로소프트가 인터넷시대의 차세대언어로 밀고 있다.
3. C++과 JAVA에 익숙해진 다음 C#을 공부하는 것은 비효율적. (C#이 이미 C++과 JAVA의 장점을 가지고 있다)

by 만드는1人 | 2008/03/23 13:45 | 프로그래밍 | 트랙백 | 덧글(0)

"2008년 03월 16일"
프로젝트와 함께 블로그를 시작하다


공무원을 그만두고 선택한 것은 애니메이션이다.
오늘부터 이곳에서 애니메이션 프로젝트 진행상황을 기록하고, 두서없는 생각들도 정리하고자 한다.
타임 리밋이 걸렸기 때문에 정말 분발해야 한다.

by 만드는1人 | 2008/03/16 22:53 | 애니메이션 | 트랙백 | 덧글(1)

◀ 이전 페이지          다음 페이지 ▶