C++ 24.상속과 다형성 실습2(상품, 할인상품)
- C++/설명
- 2016. 4. 20. 12:36
-상속과 다형성 실습2(상품, 할인상품)
시나리오
1. 상품
상품 이름과 가격을 멤버 필드로 갖습니다.
생성할 때 이름과 가격을 입력 인자로 받습니다.
가격과 이름의 접근자를 제공하며 가격 접근자는 가상 메서드 입니다.
상품 정보를 출력하는 가상 메서드를 제공합니다.
형식 내부에서만 접근 가능한 가격 설정자와 이름 절정자가 있습니다.
2. 할인상품
할인율을 멤버 필드로 갖습니다.
상품 이름과 가격, 할인율을 입력 인자로 받습니다.
가격 접근자와 상품 정보 출력하는 메소드를 재정의 합니다.
할인율의 접근자 메서드를 제공합니다.
형식 내부에서만 접근할 수 있는 할인율 설정자가 있습니다.
//DiscountProduct.h
#pragma once
#include "Product.h"
class DiscountProduct :public Product
{
int discount;
public:
DiscountProduct(string name, int price, int discount);
int GetDiscount();
int GetPrice();
void Print();
private:
void SetDiscount(int discount);
};
//DiscountProduct.cpp
#include "DiscountProduct.h"
#include "Product.h"
DiscountProduct::DiscountProduct(string name, int price, int discount) : Product(name,price)
{
SetDiscount(discount);
}
int DiscountProduct::GetDiscount()
{
return discount;
}
int DiscountProduct::GetPrice()
{
int original = Product::GetPrice();
int discountGoods = original * discount/100;
return original-discountGoods;
}
void DiscountProduct::Print()
{
cout<<"상품 이름:"<<Product::GetName()<<endl;
cout<<"상품 가격:"<<Product::GetPrice()<<"원"<<endl;
cout<<"할인 율:"<<GetDiscount()<<"%"<<endl;
Product::Print();
cout<<endl;
}
void DiscountProduct::SetDiscount(int discount)
{
this->discount = discount;
}
//Product.h
#pragma once
#include <iostream>
#include <string>
using namespace std;
class Product
{
string name;
int price;
public:
Product(string name, int price);
virtual int GetPrice();
string GetName();
virtual void Print();
private:
void SetPrice(int price);
void SetName(string name);
};
//Product.cpp
#include "Product.h"
Product::Product(string name, int price)
{
SetPrice(price);
SetName(name);
}
int Product::GetPrice()
{
return this->price;
}
string Product::GetName()
{
return this->name;
}
void Product::Print()
{
cout<<name<<" 판매가격: "<<GetPrice()<<"원"<<endl;
}
void Product::SetPrice(int price)
{
this->price = price;
}
void Product::SetName(string name)
{
this->name = name;
}
//Program.cpp
#include "Product.h"
#include "DiscountProduct.h"
int main(void)
{
Product *p1 = new Product("치약",3000);
Product *p2 = new DiscountProduct("칫솔",3000,15);
Product *p3 = new Product("콘푸로스트",12900);
Product *p4 = new DiscountProduct("우유",5000,20);
Product *p5 = new Product("컴퓨터",200000);
Product *p6 = new DiscountProduct("마우스",50000,23);
p1->Print();
p2->Print();
p3->Print();
p4->Print();
p5->Print();
p6->Print();
delete p1;
delete p2;
delete p3;
delete p4;
delete p5;
delete p6;
return 0;
}
'C++ > 설명' 카테고리의 다른 글
[C++] strcat_s 함수를 이용하여 문자열 결합하기 (0) | 2018.08.06 |
---|---|
C++ 25. 상속과 다형성 최종실습(학생 프로그램) (0) | 2016.04.20 |
C++ 23. 상속과 다형성 실습(도형) (0) | 2016.04.20 |
C++ 22. 파생 개체의 생성과 소멸 과정 (0) | 2016.04.19 |
C++ 21.추상 클래스 (0) | 2016.04.19 |
이 글을 공유하기