STUDY/C++ & MFC
문제 04-2 [다양한 클래스의 정의]
쑥말고인절미
2022. 4. 4. 16:05
다음의 Point 클래스를 기반으로 하여(활용하여) 원을 의미하는 Circle 클래스를 정의하자.
Circle 객체에는 좌표상의 위치 정보(원의 중심좌표)와 반지름의 길이 정보를 저장 및 출력할 수 있어야 한다. 그리고 여러분이 정의한 Circle 클래스를 기반으로 Ring 클래스도 정의하자. 링은 두 개의 원으로 표현 가능하므로(바깥쪽 원과 안쪽 원), 두 개의 Circle 객체를 기반으로 정의가 가능하다. 참고로 안쪽 원과 바깥쪽 원의 중심좌표가 동일하다면 두께가 일정한 링을 표현하는 셈이 되며, 중심좌표가 동일하지 않다면 두께가 일정하지 않은 링을 표현하는 셈이 된다. 이렇게 해서 클래스가 정의가 완료되었다면, 다음 main 함수를 기반으로 실행을 시키자.
#include <iostream>
using namespace std;
class Point{
int xpos, ypos;
public:
void Init(int x, int y){
xpos = x;
ypos = y;
}
void ShowPointInfo() const{
cout<<"["<<xpos<<", "<<ypos<<"]"<<endl;
}
};
//원의 중심좌표와 반지름의 길이정보를 저장 및 출력할 수 있어야한다.
class Circle{
int radius;
Point point;
public :
void Init(int x, int y, int r){
point.Init(x, y);
radius = r;
}
void ShowPointInfo() const{
cout<<"radius : "<<radius<<endl;
point.ShowPointInfo();
}
};
class Ring{
Circle in_circle;
Circle out_circle;
public :
void Init(int in_x, int in_y, int in_r, int out_x, int out_y, int out_r){
in_circle.Init(in_x, in_y, in_r);
out_circle.Init(out_x, out_y, out_r);
}
void ShowPointInfo() const{
cout<<"Inner Circle Info..."<<endl;
in_circle.ShowPointInfo();
cout<<"Outter Circle Info..."<<endl;
out_circle.ShowPointInfo();
}
};
int main(void){
Ring ring;
ring.Init(1, 1, 4, 2, 2, 9);
ring.ShowPointInfo();
return 0;
}