◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
이전에 작성했던 커피 자판기 클래스에 밀크커피와 블랙커피라는 메뉴를 추가해보자.
실습 : 다음 규칙에 따라 코드를 수정하시오.
(1) CoffeeMachine클래스의 coffee멤버함수의 이름을 MilkCoffee로 수정하시오.
(2) CoffeeMachine클래스에 BlackCoffee멤버함수를 추가하고 한잔에 300원으로 단위로 계산하여 커피잔 수를 리턴하도록 작성하시오.
(3) CoffeeMachine클래스에 ShowMenu멤버함수를 추가하고 호출 시 아래와 같은 구문이 출력되도록 작성하시오.
1. 밀크커피 : 200원
2. 블랙커피 : 300원
(4) ShowMenu함수를 이용하여 화면에 메뉴가 출력되도록 하시오.
(5) 사용자로부터 메뉴번호와 금액을 입력받으시오.
(6) CoffeeMachine클래스를 이용하여 메뉴와 금액에 맞게 커피잔 수를 화면에 출력하시오.
실습 : 다음 규칙에 따라 코드를 수정하시오.
(1) CoffeeMachine클래스의 coffee멤버함수의 이름을 MilkCoffee로 수정하시오.
(2) CoffeeMachine클래스에 BlackCoffee멤버함수를 추가하고 한잔에 300원으로 단위로 계산하여 커피잔 수를 리턴하도록 작성하시오.
(3) CoffeeMachine클래스에 ShowMenu멤버함수를 추가하고 호출 시 아래와 같은 구문이 출력되도록 작성하시오.
1. 밀크커피 : 200원
2. 블랙커피 : 300원
(4) ShowMenu함수를 이용하여 화면에 메뉴가 출력되도록 하시오.
(5) 사용자로부터 메뉴번호와 금액을 입력받으시오.
(6) CoffeeMachine클래스를 이용하여 메뉴와 금액에 맞게 커피잔 수를 화면에 출력하시오.
예)
1. 밀크커피 : 200원
2. 블랙커피 : 300원
>>> 메뉴를 선택하세요 : 2
>>> 금액을 입력하세요 : 1000
블랙커피 3잔이 나왔습니다.
// #pragma once 에 대해서 설명한다.
// 생성자와 소멸자에 대해 이해한다.
// 초기화리스트에 대해 이해한다.
// 클래스는 비메모리, 객체는 메모리임을 알게된다.
// (즉, 데이터는 클래스가 아닌 객체에 저장한다.)
1. 밀크커피 : 200원
2. 블랙커피 : 300원
>>> 메뉴를 선택하세요 : 2
>>> 금액을 입력하세요 : 1000
블랙커피 3잔이 나왔습니다.
// #pragma once 에 대해서 설명한다.
// 생성자와 소멸자에 대해 이해한다.
// 초기화리스트에 대해 이해한다.
// 클래스는 비메모리, 객체는 메모리임을 알게된다.
// (즉, 데이터는 클래스가 아닌 객체에 저장한다.)
[CoffeeMachine.h] 파일
//-- CoffeeMachine.h ----------------------------------- #pragma once class CoffeeMachine { public: int _milkCost; int _blackCost; int _menu; int _coin; public: int MilkCoffee(int money); int BlackCoffee(int money); void ShowMenu(); void SelectMenu(); void InsertCoin(); void TakeCoffee(); public: CoffeeMachine(int milkCost, int blackCost); ~CoffeeMachine(); };
[CoffeeMachine.cpp] 파일
//-- CoffeeMachine.cpp --------------------------------- //#include "CoffeeMachine.h" #includeusing namespace std; // cout을 사용하기 위해 별도로 추가해야 한다. CoffeeMachine::CoffeeMachine( int milkCost, int blackCost ) // : _milkCost(milkCost), _blackCost(blackCost) // 초기화 리스트 설명. { _milkCost = milkCost; // 멤버변수와 파라미터 변수의 이름 중복 문제 설명. _blackCost = blackCost; _menu = _coin = 0; } CoffeeMachine::~CoffeeMachine() { // do nothing... } int CoffeeMachine::MilkCoffee(int money) { return money/_milkCost; } int CoffeeMachine::BlackCoffee( int money ) { return money/_blackCost; } void CoffeeMachine::ShowMenu() { cout << "1. 밀크커피 : " << _milkCost << "원" << endl; cout << "2. 블랙커피 : " << _blackCost << "원" << endl; } void CoffeeMachine::SelectMenu() { cout << ">>> 메뉴를 선택하세요 : "; cin >> _menu; } void CoffeeMachine::InsertCoin() { cout << ">>> 금액을 입력하세요 : "; cin >> _coin; } void CoffeeMachine::TakeCoffee() { if(_menu == 1) { cout << "밀크커피 " << MilkCoffee(_coin) << "잔이 나왔습니다." << endl; } else if(_menu == 2) { cout << "블랙커피 " << BlackCoffee(_coin) << "잔이 나왔습니다." << endl; } _menu = _coin = 0; }
[main.cpp] 파일
//-- main.cpp----------------------------------- #include//#include "coffee.h" using namespace std; void main( ) { CoffeeMachine machine(200, 300); //CoffeeMachine machine2(400, 500); // 악덕업자. machine.ShowMenu(); // 아래와 같이 클래스를 통해서 직접 멤버에 접근하는 우를 범해선 안된다. // 클래스 자체는 메모리를 소유하지 않기때문에 우리가 할 수 있는 건 아무것도 없다. // 우리가 수행하는 모든 작업은 메모리를 필요로 하기 때문이다. //CoffeeMachine.ShowMenu(); machine.SelectMenu(); machine.InsertCoin(); machine.TakeCoffee(); }