<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=VendingMachine%2F%EC%84%B8%EC%97%B0</id>
	<title>VendingMachine/세연 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=VendingMachine%2F%EC%84%B8%EC%97%B0"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=VendingMachine/%EC%84%B8%EC%97%B0&amp;action=history"/>
	<updated>2026-05-14T16:22:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=VendingMachine/%EC%84%B8%EC%97%B0&amp;diff=39999&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=VendingMachine/%EC%84%B8%EC%97%B0&amp;diff=39999&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= 소스 =&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 #include &amp;amp;lt;string&amp;amp;gt; &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 //자판기 클래스 &lt;br /&gt;
 class VendingMachine &lt;br /&gt;
 { &lt;br /&gt;
 private: &lt;br /&gt;
         int _money; &lt;br /&gt;
         int _temp_money; &lt;br /&gt;
         int _select_money, _select_drink, _insert_amount; &lt;br /&gt;
         struct drink &lt;br /&gt;
         { &lt;br /&gt;
                 char * name; &lt;br /&gt;
                 int price, amount; &lt;br /&gt;
         }; &lt;br /&gt;
         drink s_drink[5]; &lt;br /&gt;
         int _max_num; &lt;br /&gt;
          &lt;br /&gt;
 public: &lt;br /&gt;
         VendingMachine(); &lt;br /&gt;
         int showMenu();&lt;br /&gt;
 		void get_money(); &lt;br /&gt;
         void buy(); &lt;br /&gt;
         void takeBack_money(); &lt;br /&gt;
         void insertDrink(); 		&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 int VendingMachine::showMenu()&lt;br /&gt;
 {&lt;br /&gt;
 	int choice;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;\n자판기 입니다\n&amp;quot;; &lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;1.돈을 넣는디\n&amp;quot;; &lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;2.물건을 산다\n&amp;quot;; &lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;3.돈을 거술러 받는다\n&amp;quot;; &lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;4.음료수를 채운다\n&amp;quot;; &lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;0.종료한다\n&amp;quot;;  &lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;메뉴를 선택하세요 : &amp;quot;; &lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; choice; &lt;br /&gt;
 	return choice;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 //자판기의 메뉴를 초기화한다 &lt;br /&gt;
 VendingMachine::VendingMachine() &lt;br /&gt;
 { &lt;br /&gt;
     _money = _temp_money = 0; &lt;br /&gt;
     _max_num = 5; &lt;br /&gt;
 &lt;br /&gt;
 	char * drink_name[] = {&amp;quot;coke&amp;quot;, &amp;quot;juice&amp;quot;, &amp;quot;tea&amp;quot; , &amp;quot;cofee&amp;quot;, &amp;quot;milk&amp;quot;};&lt;br /&gt;
 	int price[] = {400, 600, 500, 450, 350};&lt;br /&gt;
 &lt;br /&gt;
 	for(int i = 0 ; i &amp;amp;lt; _max_num ; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		s_drink[i].name = drink_name[i];&lt;br /&gt;
 		s_drink[i].price = price[i];&lt;br /&gt;
 		s_drink[i].amount = 10;&lt;br /&gt;
 	}&lt;br /&gt;
 } &lt;br /&gt;
          &lt;br /&gt;
  &lt;br /&gt;
 //손님이 돈을 자판기에 넣는다 &lt;br /&gt;
 void VendingMachine::get_money() &lt;br /&gt;
 { &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; &amp;quot;돈을 넣으세요. 10, 50, 100, 500, 1000만 가능 : &amp;quot;; &lt;br /&gt;
     cin &amp;amp;gt;&amp;amp;gt; _temp_money; &lt;br /&gt;
     if(_temp_money == 10 || _temp_money == 50 || _temp_money == 100 || _temp_money == 500 || _temp_money == 1000) &lt;br /&gt;
             _money = _money + _temp_money; &lt;br /&gt;
     else &lt;br /&gt;
             cout &amp;amp;lt;&amp;amp;lt; &amp;quot;10, 50, 100, 500, 1000만 가능합니다. 다시 시작해주세요\n&amp;quot;; &lt;br /&gt;
                      &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; _money &amp;amp;lt;&amp;amp;lt; &amp;quot;원을 넣었습니다\n&amp;quot;; &lt;br /&gt;
 } &lt;br /&gt;
  &lt;br /&gt;
 //손님이 물건을 산다 &lt;br /&gt;
 void VendingMachine::buy() &lt;br /&gt;
 {       &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; &amp;quot;음료수\t\t가격\t수량\n&amp;quot;; &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; &amp;quot;------------------------------------\n&amp;quot;; &lt;br /&gt;
     for(int i = 0 ; i &amp;amp;lt; _max_num ; i++) &lt;br /&gt;
             cout &amp;amp;lt;&amp;amp;lt; i + 1 &amp;amp;lt;&amp;amp;lt; &amp;quot;.&amp;quot;  &amp;amp;lt;&amp;amp;lt; s_drink[i].name &amp;amp;lt;&amp;amp;lt; &amp;quot;\t\t&amp;quot; &amp;amp;lt;&amp;amp;lt; s_drink[i].price &amp;amp;lt;&amp;amp;lt; &amp;quot;\t&amp;quot; &amp;amp;lt;&amp;amp;lt; s_drink[i].amount &amp;amp;lt;&amp;amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
      &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; &amp;quot;\n현재 &amp;quot; &amp;amp;lt;&amp;amp;lt; _money &amp;amp;lt;&amp;amp;lt; &amp;quot;원이 있어요\n&amp;quot;; &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; &amp;quot;원하는 음료수를 선택하세요 : &amp;quot;; &lt;br /&gt;
     cin &amp;amp;gt;&amp;amp;gt; _select_drink; &lt;br /&gt;
     if((_money - s_drink[_select_drink - 1].price) &amp;amp;gt;= 0 &amp;amp;amp;&amp;amp;amp; s_drink[_select_drink - 1].amount &amp;amp;gt;= 1) &lt;br /&gt;
     { &lt;br /&gt;
             s_drink[_select_drink - 1].amount--; &lt;br /&gt;
             _money = _money - s_drink[_select_drink - 1].price; &lt;br /&gt;
     } &lt;br /&gt;
     else&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;잔액이 부족하거나 수량이 부족해요\n&amp;quot;;&lt;br /&gt;
 	&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; _money &amp;amp;lt;&amp;amp;lt; &amp;quot;원이 남았어요\n&amp;quot;; &lt;br /&gt;
 } &lt;br /&gt;
  &lt;br /&gt;
 //손님의 거스름돈을 내어준다 &lt;br /&gt;
 void VendingMachine::takeBack_money() &lt;br /&gt;
 {&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;거스름돈&amp;quot; &amp;amp;lt;&amp;amp;lt; _money &amp;amp;lt;&amp;amp;lt; &amp;quot;원을 돌려드립니다\n&amp;quot;; &lt;br /&gt;
     _money = 0; &lt;br /&gt;
 } &lt;br /&gt;
  &lt;br /&gt;
 //음료수를 채운다 &lt;br /&gt;
 void VendingMachine::insertDrink() &lt;br /&gt;
 { &lt;br /&gt;
     for(int i = 0 ; i &amp;amp;lt; _max_num ; i++) &lt;br /&gt;
             cout &amp;amp;lt;&amp;amp;lt; i + 1 &amp;amp;lt;&amp;amp;lt; &amp;quot;.&amp;quot; &amp;amp;lt;&amp;amp;lt; s_drink[i].name &amp;amp;lt;&amp;amp;lt; &amp;quot;\t&amp;quot; &amp;amp;lt;&amp;amp;lt; s_drink[i].amount &amp;amp;lt;&amp;amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; &amp;quot;채우길 원하는 음료수를 선택하세요 : &amp;quot;; &lt;br /&gt;
     cin &amp;amp;gt;&amp;amp;gt; _select_drink; &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; &amp;quot;채우길 원하는 음료수 수량을 입력해주세요 : &amp;quot;; &lt;br /&gt;
     cin &amp;amp;gt;&amp;amp;gt; _insert_amount; &lt;br /&gt;
 	s_drink[_select_drink - 1].amount += _insert_amount; &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; &amp;quot;음료수를 채웠습니다\n&amp;quot;; &lt;br /&gt;
     for(i = 0 ; i &amp;amp;lt; _max_num ; i++) &lt;br /&gt;
             cout &amp;amp;lt;&amp;amp;lt; i + 1 &amp;amp;lt;&amp;amp;lt; &amp;quot;.&amp;quot; &amp;amp;lt;&amp;amp;lt; s_drink[i].name &amp;amp;lt;&amp;amp;lt; &amp;quot;\t&amp;quot; &amp;amp;lt;&amp;amp;lt; s_drink[i].amount &amp;amp;lt;&amp;amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
 } &lt;br /&gt;
  &lt;br /&gt;
 int main() &lt;br /&gt;
 { &lt;br /&gt;
 &lt;br /&gt;
     VendingMachine VendingMachine; &lt;br /&gt;
 &lt;br /&gt;
     int choice = VendingMachine.showMenu();&lt;br /&gt;
 &lt;br /&gt;
 	while(choice != 0)&lt;br /&gt;
 	{&lt;br /&gt;
 		if( choice &amp;amp;gt;= 0 || choice &amp;amp;lt;= 4)&lt;br /&gt;
 		{&lt;br /&gt;
 			switch(choice) &lt;br /&gt;
 			{ &lt;br /&gt;
 			case 1: &lt;br /&gt;
 					VendingMachine.get_money(); &lt;br /&gt;
 					break; &lt;br /&gt;
 			case 2: &lt;br /&gt;
 					VendingMachine.buy(); &lt;br /&gt;
 					break; &lt;br /&gt;
 			case 3: &lt;br /&gt;
 					VendingMachine.takeBack_money(); &lt;br /&gt;
 					break; &lt;br /&gt;
 			case 4: &lt;br /&gt;
 					VendingMachine.insertDrink(); &lt;br /&gt;
 					break; &lt;br /&gt;
 			case 0: &lt;br /&gt;
 					cout &amp;amp;lt;&amp;amp;lt; &amp;quot;자판기를 종료합니다!!\n\n&amp;quot;;  &lt;br /&gt;
 					break; &lt;br /&gt;
 			}&lt;br /&gt;
 		}			&lt;br /&gt;
 		else&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;잘못된 입력입니다. 다시 입력해주세요 : &amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 		choice = VendingMachine.showMenu();	&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	return 0; &lt;br /&gt;
 } &lt;br /&gt;
코드의 경우 가장 간단한 평가 기준으로 두가지를 둔다면,&lt;br /&gt;
* 코드를 읽기 편한가. - 외부로 보이는 public 메소드의 이름에 대해 &amp;#039;how&amp;#039; 가 아닌 &amp;#039;what&amp;#039; 이 표현되어야 할겁니다. 클래스는 보통 &amp;#039;이용되어지는 모습&amp;#039; 으로 이용되므로, 어떤 알고리즘을 쓰느냐가 메소드로 표현되는게 아니라 &amp;#039;무엇을 할것인가&amp;#039; 가 표현되어야 겠죠.&lt;br /&gt;
* 코드의 중복이 얼마나 적은가 - 코드 중복이 많을 수록, 코드 하나가 잘못되면, 나머지 중복코드들도 다 고쳐줘야 합니다. Copy &amp;amp; Paste 를 하는 것과 함수/메소드로 추출한 것의 차이가 되겠죠. &lt;br /&gt;
&lt;br /&gt;
* 두가지 기준 하에 코드를 수정해보면, 더 좋은 디자인의 코드를 작성할 수 있습니다. --[[1002]]&lt;br /&gt;
* 제가 대충 고쳐보았습니다 -- 재동&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
See Also [[CppStudy_2002_2]] , [[VendingMachine/세연/재동]] , [[VendingMachine/세연/1002]]&lt;br /&gt;
----&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>