//////////////////////////////////////////////////
//////////////////////////////////////////////////
// 2006년
5월 2일 여섯시 즈음.~
이제 C++과 MFC로 들어가야지. 따라와~~ 빨리와~~.. ~ -_- ㅎ
왜안와~~ ㅋ
" C 와 C++ " 의 개념적 차이..;
C에서는 함수가 프로그램을 이루는 기본단위..
함수는 어떤 ''기능''을 수행함.
=> C스타일로 프로그램을 작성할 때는 먼저
전체 프로그램을 기능적인 측면에서 작은 단위로
나누고,
각각의 세분된 기능을 < 함수 > 로 구현하면된다~!
소형, 중형 프로그램 작성에
적합.
C++에서는 ''클래스''가 프로그램을 이루는 기본단위다.
=> 함수를 이용하여 프로그램이 수행해야 할 기능을 만들듯이,
클래스를 이용하면 오브젝트를 표현할 수
있다..( 무슨말 ? ㅎㅎ)
=> 객체 지향적으로 프로그램을 작성할때는,
기능적인 측면에서 세분하는것이
아니라,
프로그램을 구성하는 오브젝트 단위로 세분함.
( 프로그램이 어떤 오브젝트로 구성되어있는지..
)
그다음, 각각의 오브젝트를 < 클래스 > 로 구현.
대형 프로그램 작성에 적합.
캡슐화:
C에선?
=> 관련있는 변수들을 한데 묶어 줌으로써
변수들을 보다 일괄적으로 관리한다는것.. ( 구조체.
)
외부의 함수에 의해 수동적으로 제어된다..
C++ 에선?
=> 처리, 및 관리하는 함수까지 한데 묶어버림으로,
관련된 모든 기능을 한 클래스 내에서 일괄적으로
수행하도록 해줌.
내부의 함수를 통해 능동적으로 동작한다.
클래스 사용하기위해.
1. 클래스의 선언
2. 클래스 구현
3. 클래스 사용
=> 클래스 선언 : *.h파일에 따로 저장
class Point {
public :
// 멤버 변수
int m_nX;
int m_nY;
// 멤버 함수
void SetPosition( int nX , int nY );
void
Move( int nX , int nY );
void Show();
};
=> 클래스의 구현 ( =클래스의 멤버함수를 기술해주는것. ) : *.cpp 파일로 저장
->
void Point::SetPosition( int nX , int nY )
{
m_nX =
nX;
m_nY = nY;
}
->
void Point::Move( int nX , int nY )
{
m_nX +=
nX;
m_nX += nY;
}
->
void Point::Show()
{
cout << "X=" << m_nX
<< " Y=" << m_nY << "\n";
}
클래스의 사용
=> 인스턴스( = 메모리에 생성된 클래스의 실체 -_- )를 생성하여 사용.
우리가 사용하는 메모장
프로그램은, 엄밀히 말하면 '메모장 프로그램'이 아니라
'메모장 프로그램의 인스턴스'라고해야 정확한것이다..
Point a, b; 후에
a.m_nX = 30;
a.Move( 20 , 30 ); 등으로 사용... 흠..
// Point.h: interface for the Point
class.
//
//////////////////////////////////////////////////////////////////////
#if
!defined(AFX_POINT_H__64866C55_77C9_42D6_BA0C_BB060051C363__INCLUDED_)
#define
AFX_POINT_H__64866C55_77C9_42D6_BA0C_BB060051C363__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class Point
{
public:
// 멤버 함수
void
SetPosition(int nX, int nY);
void Move(int nX, int
nY);
virtual void Show();
// 멤버 변수
int m_nX, m_nY;
};
#endif // !defined(AFX_POINT_H__64866C55_77C9_42D6_BA0C_BB060051C363__INCLUDED_)
///////////////////////////
// Point.cpp 파일..
#include "Point.h"
void main()
{
// 인스턴스 생성
Point myPosition,
yourPosition;
// 변수 값 초기화
myPosition.SetPosition(10,
30);
yourPosition.SetPosition(50, 30);
// 좌표 변경 (점의 위치 이동)
myPosition.Move(20,
50);
yourPosition.Move(30, 40);
// 현재 좌표 출력
myPosition.Show( );
yourPosition.Show(
);
}
=> 두개의 인스턴스( myPosition, yourPosition ) 선언.
각각의 인스턴스에대해 '멤버
변수'를 저장하기위한 공간이 만들어짐
따라서 각 인스턴스엔 서로 다른 데이터를 저장할 수 있게 된다.
but, '멤버 함수'는 인스턴스마다 각각 생성되는게 아니라
한 클래스의 모든 인스턴스가 같은 멤버함수를
공유하게된다.
-> myPosition.m_nX 와 yourPosition.m_nX는 서로 독립적으로존재하는변수이다.
캡슐화 된 데이터 감추기
public: protected: private:
=> public으로 선언된 변수는 외부에서 보이는 변수
protected나 private로 선언된 변수는
내부적으로만 사용할 수 있음.
( 클래스 내부에서만 사용되는 변수다. )
class Point
{
public:
// 멤버 함수
void
SetPosition(int nX, int nY);
void Move(int nX, int
nY);
virtual void Show();
protected:
// 멤버 변수
int m_nX, m_nY;
};
라고 해놓고,
void main()
{
Point myPosition;
myPosition.SetPosition(
10, 20 ); // 문법적으로 이상이 없음.
myPosition.m_nX += 20;
}
..
'- 음악과 나 - > 『 짬 통 』' 카테고리의 다른 글
About, Dr. Mac (0) | 2006.05.05 |
---|---|
배낭 채우기 알고리즘... (0) | 2006.05.05 |
치코치코v1완성 - 쌤쌤블록버스터! (0) | 2006.05.02 |
치코치코 v1 (0) | 2006.04.28 |
전체화면 만들기. (0) | 2006.04.21 |