본문 바로가기

강의자료/C/C++

036. 클래스를 별도의 파일에 작성하자.

◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!


클래스로 표현하려는 대상이 복잡하면 복잡할수록 상대적으로 코드도 길어지게 되어있다.
이처럼 코드가 길어질때는 별도의 파일에 작성하는게 여러모로 좋다.
이전에 작성했던 커피 자판기 클래스를 대상으로 파일을 분할하는 연습을 해보자.

클래스 하나를 표현하기 위해서는 2개의 파일이 필요하다.
우선 CoffeeMachine.h라는 파일과 CoffeeMachine.cpp라는 파일을 생성하자.
(파일이름은 클래스와 같을 필요는 없지만 같게 하는게 좋다.)

그리고 아래와 같이 작성한다.


[CoffeeMachine.h] 파일
//----------------------------------------------------------------
// CoffeeMachine.h
//----------------------------------------------------------------
#pragma once

// #ifndef __COFFEE_MACHINE_H__
// #define __COFFEE_MACHINE_H__

#define COFFEE_COST 200

class CoffeeMachine
{
public:
	int coffee(int money);
};

// #endif

[CoffeeMachine.cpp] 파일
//----------------------------------------------------------------
// CoffeeMachine.cpp
//----------------------------------------------------------------
#include "CoffeeMachine.h"

int CoffeeMachine::coffee(int money)
{
	return money/COFFEE_COST;
}

[main.cpp] 파일
//----------------------------------------------------------------
// main.cpp
//----------------------------------------------------------------

#include  
#include "CoffeeMachine.h"
using namespace std;

int main( )
{
	CoffeeMachine machine;
	CoffeeMachine* pmachine = &machine;
	int inputMoney=0;
	int cups=0;

	cout << "커피자판기 [한잔에 " << COFFEE_COST << "원]" << endl;
	cout << "동전을 넣으시오 : ";
	cin >> inputMoney;
	cout << "커피 한잔이 " << COFFEE_COST << "원일 때 " << inputMoney << "원을 자판기에 넣으면 ";

	//	cups = (*pmachine).coffee(inputMoney);
	cups = pmachine->coffee(inputMoney);

	cout << cups << "잔이 나온다." << endl;
	cout << endl; 

	return 0;
}