명품C++프로그래밍
명품 C++ Programming 실습문제 9장 2번
anycoding
2021. 6. 1. 19:11
반응형
1~2번에 쓰이는 단위변환 추상 클래스 Converter입니다.
#include<iostream>
using namespace std;
class Converter {
protected:
double ratio;
virtual double convert(double src) = 0; //src를 다른 단위로 변환한다.
virtual string getSourceString() = 0; //src 단위 명칭
virtual string getDestString() = 0; //dest 단위 명칭
public:
Converter(double ratio) { this->ratio = ratio; }
void run() {
double src;
cout << getSourceString() << "을 " << getDestString() << "로 바꿉니다. ";
cout << getSourceString() << "을 입력하세요>> ";
cin >> src;
cout << "변환 결과 : " << convert(src) << getDestString() << endl;
}
};
문제
Converter 클래스를 상속받아 km를 mile(마일)로 변환하는 KmToMile 클래스를 작성하라. main() 함수와 실행 결과는 다음과 같다.
int main()
{
KmToMile toMile(1.609344); //1mile은 1.609344km
toMile.run();
}
결과
Km을 Mile로 바꿉니다. Km을 입력하세요>> 25
반환 결과 : 15.5343Mile
소스코드
#include<iostream>
using namespace std;
class Converter {
protected:
double ratio;
virtual double convert(double src) = 0; //src를 다른 단위로 변환한다.
virtual string getSourceString() = 0; //src 단위 명칭
virtual string getDestString() = 0; //dest 단위 명칭
public:
Converter(double ratio) { this->ratio = ratio; }
void run() {
double src;
cout << getSourceString() << "을 " << getDestString() << "로 바꿉니다. ";
cout << getSourceString() << "을 입력하세요>> ";
cin >> src;
cout << "변환 결과 : " << convert(src) << getDestString() << endl;
}
};
class KmToMile : public Converter {
double mile;
public:
KmToMile(double mile) : Converter(mile) { this->mile = mile; }
virtual double convert(double src) { return src / mile; }
virtual string getSourceString() { return "Km"; }
virtual string getDestString() { return "Mile"; }
};
int main()
{
KmToMile toMile(1.609344); //1mile은 1.609344km
toMile.run();
}
반응형