[C++7] 객체지향 프로그래밍

모옹·2023년 12월 21일
0

C++

목록 보기
7/10
post-thumbnail

7. 객체지향의 C++


객체지향 프로그래밍
데이터와 기능으로 구성된 객체들을 실체화 시키는 프로그래밍

데이터와 기능으로 구분하여 사과를 팔고, 사과를 사는 클래스를 생성시켜 보자.

#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++ 프로그래밍>
위 책을 공부하며 정리한 내용입니다.

0개의 댓글