STUDY/C++ & MFC
문제 04-1 [정보은닉과 const]
쑥말고인절미
2022. 4. 4. 15:04
Chapter 03에서 제시한 과일장수 시뮬레이션 예제 FruitSaleSim1.cpp에서 정의한 두 클래스의 멤버변수는 private으로 선언이 되어있다. 그러나 다음 조건을 유지할 수 있는 장치는 아무것도 되어있지 않다.
- 사과의 구매를 목적으로 0보다 작은 수를 전달할 수 없다.
위의 제약사항을 항상 만족시킬 수 있도록 예제를 변경하고, 예제의 안전성을 높일 수 있도록 일부 함수를 const로 선언해보자.
#include <iostream>
//사과의 구매를 목적으로 0보다 작은 수를 전달할 수 없다. 일부 함수는 const로 구현하자.
using namespace std;
class FruitSeller{
int APPLE_PRICE;
int numOfApples;
int myMoney;
public :
void InitMembers(const int price, const int num, const int money){
APPLE_PRICE = price;
numOfApples = num;
myMoney = money;
}
int SaleApples(const int money){
int num = money / APPLE_PRICE;
if(num<0){
cout<<"0보다 작은 수를 입력하셨습니다."<<endl<<endl;
return 0;
}
numOfApples -= num;
myMoney += money;
return num;
}
void ShowSalesResult() const{
cout<<"남은 사과 : "<<numOfApples<<endl;
cout<<"판매 수익 : "<<myMoney<<endl<<endl;
}
};
class FruitBuyer{
int myMoney;
int numOfApples;
public :
void InitMembers(const int money){
myMoney = money;
numOfApples = 0;
}
void BuyApples(FruitSeller &seller, const int money){
numOfApples += seller.SaleApples(money);
if(money<0){
myMoney += money;
cout<<"0보다 작은 수를 입력하셨습니다."<<endl<<endl;
}else{
myMoney -= money;
}
}
void ShowSalesResult() const{
cout<<"현재 잔액 : "<<myMoney<<endl;
cout<<"사과 개수 : "<<numOfApples<<endl;
}
};
int main(void){
FruitSeller seller;
seller.InitMembers(1000, 20, 0);
FruitBuyer buyer;
buyer.InitMembers(5000);
buyer.BuyApples(seller, -2000);
cout<<"과일 판매자의 현황"<<endl;
seller.ShowSalesResult();
cout<<"과일 구매자의 현황"<<endl;
buyer.ShowSalesResult();
return 0;
}