객체지향 프로그래밍
데이터와 기능으로 구성된 객체들을 실체화 시키는 프로그래밍
데이터와 기능으로 구분하여 사과를 팔고, 사과를 사는 클래스를 생성시켜 보자.
#include <iostream>
using namespace std;
class AppleSeller
{
// 변수에 대한 선언
private:
int APPLE_PRICE; // 사과의 개당 판매 가격은 변하지 않으므로 상수로 지정하고픔
// const int APPLE_PRICE = 1000 : 클래스의 멤버 변수 선언문에서 초기화까지 하는 것 X
int apple_cnt;
int now_money;
public:
// 사과 가격, 개수, 현재 수익 정보를 받아서 변수 초기화 함수
void InitMembers(int price, int cnt, int money){
// 그럼 객체를 생성한 후에 InitMembers의 호출로 초기화하면?
// const int APPLE_PRICE -> 상수는 선언과 동시에 초기화되어야 하므로 불가능
APPLE_PRICE = price;
apple_cnt = cnt;
now_money = money;
}
// 판매된 금액을 인수로 받는 사과팔이 함수
int SaleApple(int money){
int now_selling_cnt = money / APPLE_PRICE;
apple_cnt -= now_selling_cnt;
now_money += money;
return now_selling_cnt; // 판매된 사과의 개수 반환
}
// 얼마나 팔았는지 보여주는 함수
void ShowSaleResult(){
cout << "남은 사과 : " << apple_cnt << '\n';
cout << "판매 수익 : " << now_money << '\n';
}
};
class AppleBuyer{
// 접근 범위를 지정하지 않으면, class에서는 default : private
int now_money;
int apple_cnt;
public:
// 초기 갖고 있는 금액을 줘서 초기화해야 함
void InitMembers(int money){
now_money = money;
apple_cnt = 0; // 아직 구매하기 전이므로 0으로 초기화
}
// 어떤 셀러에게 얼만큼의 금액을 지불했는지를 인수로 받는 과일 구매 함수
void BuyApple(AppleSeller &seller, int money){
apple_cnt += seller.SaleApple(money);
now_money -= money;
}
void ShowBuyResult(){
cout << "현재 잔액 : " << now_money << '\n';
cout << "사과 개수 : " << apple_cnt << '\n';
}
};
객체를 생성해야만, 위 클래스들의 변수에 접근하거나 함수를 호출할 수 있다.
객체를 생성시키는 방법
Classname objname
Classname * ptrObj = new Classname
: 동적 할당 방식
위의 코드에서 클래스로 마련한 틀을 아래와 같이 이용할 수 있다.
int main(){
AppleSeller seller;
seller.InitMembers(1000, 20, 0);
AppleBuyer buyer;
buyer.InitMembers(5000);
buyer.BuyApple(seller, 2000);
cout << "과일 판매자의 현황\n";
seller.ShowSaleResult();
cout << "과일 구매자의 현황\n";
buyer.ShowBuyResult();
};
<출처 : 윤성우의 열혈 C++ 프로그래밍>
위 책을 공부하며 정리한 내용입니다.