일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- gpt
- 분류
- 회귀
- regression
- LLM
- 해커톤
- 오블완
- Machine Learning
- 머신러닝
- LG Aimers 4th
- AI
- LG Aimers
- PCA
- OpenAI
- 딥러닝
- 지도학습
- ChatGPT
- LG
- 티스토리챌린지
- GPT-4
- deep learning
- supervised learning
- Classification
Archives
- Today
- Total
SYDev
C++ Chapter 04-2 : 캡슐화(Encapsulation) 문제풀이 본문
문제
Chapter 03에서 제시한 과일장수 시뮬레이션 예제 FruitSaleSim1.cpp에서 정의한 두 클래스의 멤버변수는 private으로 선언이 되어있다. 그러나 다음 조건을 유지할 수 있는 장치는 아무것도 되어있지 않다.
- 사과의 구매를 목적으로 0보다 작은 수를 전달할 수 없다.
위의 제약사항을 항상 만족시킬 수 있도록 예제를 변경하고, 예제의 안정성을 높일 수 있도록 일부 함수를 const로 선언해보자.
문제풀이
파일명 : FruitSeller.h
#ifndef __FRUITSELLER_H_
#define __FRUITSELLER_H_
class FruSel
{
int APPLE_PRICE;
int numOfApples;
int myMoney;
public:
void InitMembers(int price, int num, int money);
int SalesApples(int money);
void ShowSalesResult() const;
};
#endif
파일명 : FruitSeller.cpp
#include <iostream>
#include "FruitSeller.h"
using namespace std;
void FruSel::InitMembers(int price, int num, int money)
{
APPLE_PRICE = price;
numOfApples = num;
myMoney = money;
}
int FruSel::SalesApples(int money)
{
int num = money / 1000;
numOfApples -= num;
myMoney += money;
return num;
}
void FruSel::ShowSalesResult() const
{
cout << "남은 사과 : " << numOfApples << endl;
cout << "판매 수익 : " << myMoney << endl;
}
파일명 : FruitBuyer.h
#ifndef __FRUITBUYER_H_
#define __FRUITBUYER_H_
#include "FruitSeller.h"
class FruBuy
{
int myMoney;
int numOfApples;
public:
void InitMembers(int money);
bool BuyApples(FruSel &seller, int money);
void ShowBuyResult() const;
};
#endif
파일명 : FruitBuyer.cpp
#include <iostream>
#include "FruitBuyer.h"
using namespace std;
void FruBuy::InitMembers(int money)
{
myMoney = money;
numOfApples = 0;
}
bool FruBuy::BuyApples(FruSel &seller, int money)
{
if(money<0)
{
cout<<"벗어난 범위의 값 전달"<<endl;
return false;
}
numOfApples += seller.SalesApples(money);
myMoney -= money;
return true;
}
void FruBuy::ShowBuyResult() const
{
cout << "현재 잔액 : " << myMoney << endl;
cout << "사과 개수 : " << numOfApples << endl;
}
파일명 : main.cpp
#include <iostream>
#include "FruitSeller.h"
#include "FruitBuyer.h"
using namespace std;
int main(void)
{
FruSel seller;
seller.InitMembers(1000, 20, 0);
FruBuy buyer;
buyer.InitMembers(5000);
buyer.BuyApples(seller, 2000);
cout<<"과일 판매자의 현황"<<endl;
seller.ShowSalesResult();
cout<<"과일 구매자의 현황"<<endl;
buyer.ShowBuyResult();
return 0;
}
출처 : 윤성우, <윤성우의 열혈 C++ 프로그래밍>, 오렌지미디어, 2010.05.12
'Programming Lang > C++' 카테고리의 다른 글
C++ Chapter 04-3 : 생성자(Constructor)와 소멸자(Destructor)(2) (0) | 2023.07.16 |
---|---|
C++ Chapter 04-3 : 생성자(Constructor)와 소멸자(Destructor)(1) (0) | 2023.07.16 |
C++ Chapter 04-2 : 캡슐화(Encapsulation) 문제풀이 (0) | 2023.07.15 |
C++ Chapter 04-2: 캡슐화(Encapsulation) (0) | 2023.07.15 |
C++ Chapter 04-1 : 정보은닉(Information Hiding) (0) | 2023.07.15 |