-
명품 C++ 9장 1번 2번C++ 2018. 11. 6. 17:21
1~2 다음은 단위를 변환하는 추상 클래스 Converter 이다.
class Converter {protected:double ratio;virtual double convert(double srt) = 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;}};1. Converter 클래스를 상속받아 달러를 원화로 환산하는 WonToDollar 클래스를 작성하라.
소스코드
#include <iostream>#include <string>using namespace std;class Converter {protected:double ratio;virtual double convert(double srt) = 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 WonToDollar : public Converter {string src, dest;protected:string getSourceString() { return src; }string getDestString() { return dest; }double convert(double srt) { return srt/ Converter::ratio; }public:WonToDollar(double ratio) : Converter(ratio) {src = "원"; dest = "달러";}};int main() {WonToDollar wd(1010); // 1 달러에 1010원wd.run();}실행결과
Converter 의 protected 함수들은 순수 가상 함수이기 때문에 WonToDollar 에서 구현해줍니다.
ratio에 접근하기위해 접근 지정자 :: 을 사용합니다.
2. Converter 클래스를 상속받아 km를 mile(마일)로 변환하는 KmToMile 클래스를 작성하라.
소스코드
#include <iostream>#include <string>using namespace std;class Converter {protected:double ratio;virtual double convert(double srt) = 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 {string src, dest;protected:double convert(double srt) { return srt / Converter::ratio; }string getSourceString() { return src; }string getDestString() { return dest; }public:KmToMile(double ratio) : Converter(ratio) {src = "km"; dest = "Mile";}};int main() {KmToMile toMile(1.609344); // 1 mile은 1.609344 kmtoMile.run();}실행결과
1번과 무엇을 무엇으로 바꾸는지만 달라진 문제입니다.
'C++' 카테고리의 다른 글
명품 C++ 9장 5번 (0) 2018.11.06 명품 C++ 9장 3번 4번 (0) 2018.11.06 명품 C++ 8장 Open Challenge (0) 2018.11.04 명품 C++ 8장 9번 (5) 2018.11.04 명품 C++ 8장 8번 (0) 2018.11.04