C++/C++ 예제

상품과 할인 상품 – 상속 실습 [C++]

언제나휴일 2020. 7. 17. 19:27
반응형

상품과 할인 상품 클래스 다이어그램

 

/* https://ehpub.co.kr
   C++ 예제 - 언제나 휴일
   상속 실습 - 상품과 할인 상품 클래스 정의하기
*/
#include <string>
#include <iostream>
using namespace std;
class Product
{
    string name;
    int price;
public:
    Product(string name, int price)
    {
        SetName(name);
        SetPrice(price);
    }
    virtual int GetPrice()const
    {
        return price;
    }
    string GetName()const
    {
        return name;
    }
    virtual void Print()const
    {
        cout << name << " 판매 가격:" << GetPrice() << endl;
    }
private:
    void SetPrice(int price)
    {
        this->price = price;
    }
    void SetName(string name)
    {
        this-> name = name;
    }
};

class DiscountProduct :public Product
{
    int discount;
public:
    DiscountProduct(string name, int price, int discount):Product(name,price)
    {
        SetDiscount(discount);
    }
    int GetDiscount()const
    {
        return discount;
    }
    virtual int GetPrice()const
    {
        int origin_price = Product::GetPrice();
        int dc = origin_price * discount / 100;
        return origin_price - dc;
    }
    virtual void Print()const
    {
        cout << "상품 가격:" << Product::GetPrice() << " 할인율:" << discount << " ";
        Product::Print();
    }
private:
    void SetDiscount(int discount)
    {
        this->discount = discount;
    }
};
int main()
{
    Product* p1 = new Product("치약", 3000);
    Product* p2 = new DiscountProduct("칫솔", 3000, 15);
    p1->Print();
    p2->Print();
    delete p1;
    delete p2;
    return 0;
}
반응형