[C++] 가상함수 상속을 이용하여 값을 변환해주는 클래스 작성

2020. 5. 24. 03:23·🖥️ 컴퓨터공학 🖥️/C | C++
반응형

1. 문제

2. 요구사항 분석

1.     가상 함수를 가지는 부모 클래스를 생성

2.     단위를 나타내는 string형식의 문자 선언

3.     반환하려는 값 double형으로 선언

4.     원을 달러로 바꾸어주는 클래스인 WonToDollar클래스 선언(Converter 클래스 상속)

5.     Km를 mile로 바꾸어주는 클래스인 KmtoMile클래스 선언(Converter클래스 상속)

6.     환율 입력

7.     환율을 바탕으로 원을 입력하면 이를 달러로 변환하여 출력

8.     Km를 입력하면 이를 mile로 변환하여 출력

 

3. 클래스 설계도

 

4. 프로그램 설계도

 

5. 소스코드

#include<iostream>

using namespace std;

 

class Converter {

protected:

        double ratio;
        //비율, 여기서는 1달러당 ratio원, 1km당 ratio Mile

        virtual double convert(double srt) = 0;
        //가상함수

        virtual string getSourceString() = 0;
        //가상함수, src 단위 명칭

        virtual string getDestString() = 0;
        //가상함수, dest 단위 명칭

public://어느 곳에서든 사용할 수 있음

        Converter(double ratio) { this->ratio = ratio;}//생성자

        void run() {//반환의 결과를 출력하는 메소드

                double src;//바꾸려고 하는 값

                cout << getSourceString() << "을" << getDestString() << "로 바꿉니다" << endl;
                //원->달러 혹은 km->Mile

                cout << getSourceString() << "을 입력하세요" << endl;
                //반환하고 싶은 값의 단위를 입력

                cin >> src;//반환하고 싶은 값을 입력

                cout << "반환 결과" << convert(src) << getDestString() << endl;
                //바꾸려는 값+단위 꼴로 출력됨

//반환하고 싶은 값을 convert 메소드에 넣음.

        }

};

 

class WonToDollar : public Converter {//원을 달러로 바꾸어 주는 클래스

        string src, dest;//string 형식의 src와 dest 선언, (단위)

protected://선언된 클래스나 상속을 하는 클래스에서만 사용될 수 있음

        string getSourceString() { return src; }//원

        string getDestString() { return dest; }//달러

        double convert(double srt) { return srt / Converter::ratio; }
        //Converter클래스의 ratio 사용 가능(protected이므로)

//convert(double srt)이 메소드를 사용하면 반환된 값을 구할 수 있음.

public://모든 곳에서 WonToDollar메소드르 사용할 수 있음.

        WonToDollar(double ratio) :Converter(ratio) {

                src = "원";     dest = "달러";

        }

};

 

 

class KmToMile :public Converter {

        string src, dest;

protected://선언된 클래스나 상속하는 클래스 내에서 사용가능

        double convert(double srt) { return srt / Converter::ratio; }

        string getSourceString() { return src; }//km

        string getDestString() { return dest; }//Mile

public:

        KmToMile(double ratio) :Converter(ratio) {

                src = "km";     dest = "Mile";

        }

};

 

void main() {

        cout << "환율은 어떻게 되나요?" << endl;

        int n;//환율

        cin >> n;//환율을 입력(1달러는 n원이다)

        WonToDollar wd(n);
        //입력한 n이 ratio가 되어서 반환하고 싶은 값인 src를 입력하면 이를 ratio로 나누어서 출력

        wd.run();//결과를 알려주는 메소드

 

        KmToMile toMile(1.609334);
        //ratio는 1.609334가 되어 입력하는 km를 ratio로 나누어줌

        toMile.run();//결과를 알려주는 메소드

}

 

6. 실행 결과

7. 의견

처음에 코딩을 할 때 반환하려는 값과 단위를 헷갈려서 헤맸던 것 같다. 클래스에서는 단순히 어떤식으로 출력을 할지만 상속을 받을 것이기 때문에 똑같은 클래스를 상속받는 WonToDollar클래스와 KmToMile클래스에서 단위를 표시할 때 에매할 수 있다. 그래서 각 클래스마다 따로 단위를 저장해두고 getSourceString메소드의 src와 getDestString클래스의 dest만 상속받아 사용을 한다. 정말 괜찮은 아이디어인 것 같아 앞으로 자주 써야겠다는 생각을 했다.

 

 

728x90
반응형

'🖥️ 컴퓨터공학 🖥️ > C | C++' 카테고리의 다른 글

[C++] vector Container  (0) 2020.06.10
[C++] C++에서의 배열 선언  (0) 2020.06.08
[C++] 다중상속을 이용한 연산 프로그램(feat. public 다중상속)  (0) 2020.05.20
[C++] 멤버함수와 외부 함수를 이용한 OOP(feat. friend, operator)  (0) 2020.05.02
[C++] 객체 배열화를 이용하여 정사각형 넓이 구하기  (0) 2020.04.19
'🖥️ 컴퓨터공학 🖥️/C | C++' 카테고리의 다른 글
  • [C++] vector Container
  • [C++] C++에서의 배열 선언
  • [C++] 다중상속을 이용한 연산 프로그램(feat. public 다중상속)
  • [C++] 멤버함수와 외부 함수를 이용한 OOP(feat. friend, operator)
공대생 배기웅
공대생 배기웅
군노답 미필 공대생 배기웅의 대학생활을 갈아 넣은 블로그
    반응형
  • 공대생 배기웅
    글쓰는공대생의 IT블로그
    공대생 배기웅
  • 전체
    오늘
    어제
    • 분류 전체보기 (166)
      • 🖊️ 공대생 글쓰기 🖊️ (17)
        • 공대생 회고록 (4)
        • 공대생의 끄적끄적 (4)
        • 슬기로운 공대생활 (9)
        • 무한도전 대학원생 (0)
      • 📈 산업공학 📈 (14)
        • 금융, 파생상품 (13)
        • 통계 (0)
        • 선형대수 (0)
        • 보험, 리스크관리 (0)
        • 재무회계 (1)
      • 🖥️ 컴퓨터공학 🖥️ (92)
        • 머신러닝, 딥러닝 (12)
        • 텐서플로우, 케라스 (1)
        • 알고리즘 (24)
        • 웹 (5)
        • Python (3)
        • C | C++ (23)
        • Java (15)
        • 코드 에러 모음집 (9)
      • 😙 취미, 교양 😙 (2)
        • 영어공부 (1)
        • 일본어회화 공부 (1)
      • 🔍 정보 공유 🔍 (38)
        • 대학생 외부활동 정보 (2)
        • 개발자관련 정보 (3)
        • 대입 논술 입시자료 정보 (22)
        • 프로그램 세팅 (11)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • [공지] 글쓰는 공대생입니다 😃
  • 인기 글

  • 태그

    C++
    equals프레임워크
    프로그래머스
    재귀함수
    백준
    OOP
    무작위 변수
    조작자
    알고리즘
    Operator
    경제성공학
    프랜드함수
    이클립스
    예외
    객체지향
    acmicpc
    데이터베이스
    Java
    스캐너
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
공대생 배기웅
[C++] 가상함수 상속을 이용하여 값을 변환해주는 클래스 작성
상단으로

티스토리툴바