토끼와 거북이의 경주 프로그램으로 예로 들겠다. ( 글쓴이가 거북이를 좋아해서 딱히 다른 예제가 떠오르지 않는다... )
간단한 프로그램이기에 코드도 별거 없다. 그냥 이해를 위한 예제라고 생각하자.. ㅎㅎ
거북이 클래스
class Turtle
{
public:
int vel; // 속도
int x; // 위치
public:
Turtle(int v) : vel(v), x(0)
{ }
void Run()
{
x+=vel;
cout<<"엉금 엉금"<<endl;
}
};
토끼 클래스
class Rabbit
{
public:
int vel; // 속도
int x; // 위치
public:
Rabbit(int v) : vel(v), x(0)
{ }
void Run()
{
x+=vel;
cout<<"깡총 깡총"<<endl;
}
};
그리고 경기를 위한 클래스
class RacingHandler
{
public:
Turtle tur;
Rabbit rab;
public:
RacingHandler(Turtle &t, Rabbit &r) : tur(t), rab(r)
{ }
void Racing()
{
for (int i=0; i<50; i++)
{
tur.Run();
rab.Run();
}
}
};
그럼 실행 예제를 보자.
속도가 10인 거북이와 속도가 50인 토끼가 경주하는 예제이다.
이 프로그램에는 총 3개의 클래스가 있다.
거북이, 토끼, 경주를 위한 클래스
이 클래스를
- 거북이, 토끼 ( 기록의 보전을 위해서 파일에 저장할 데이터를 가지고 있는 것 )
- 경주를 위한 클래스 ( 프로그램을 구성하는 대표적인 기능들을 처리하는 클래스 )
이렇게 두개로 나눌 수 있다.
즉, 거북이, 토끼 클래스만 보면 이 프로그램이 정확히 어떤 기능이 있는지 파악이 안 되지만,
경주를 위한 클래스를 보면 대강 파악이 가능하다.
우리는 이렇게 프로그램을 구성하는 대표적인 기능들을 처리하는 클래스를
'컨트롤(Control) 클래스' 또는 '핸들러(Handler) 클래스'라고 한다.
'스터디 > C++' 카테고리의 다른 글
[ C++ ] 클래스 상속을 위한 조건 ( IS-A, HAS-A ) (0) | 2019.09.26 |
---|---|
[ C++ ] public 상속, protected 상속, private 상속 (0) | 2019.09.26 |
[ C++ ] static 멤버변수( 클래스 변수 )와 static 멤버함수, mutable (0) | 2019.09.26 |
[ C++ ] 클래스의 friend 선언, 함수의 friend 선언 (0) | 2019.09.26 |
[ C++ ] 깊은 복사( deep copy )와 얕은 복사 ( shallow copy ) (0) | 2019.09.26 |