<?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%9E%AC%EB%8B%88</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%9E%AC%EB%8B%88"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=VendingMachine/%EC%9E%AC%EB%8B%88&amp;action=history"/>
	<updated>2026-05-14T16:20:21Z</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%9E%AC%EB%8B%88&amp;diff=83529&amp;oldid=prev</id>
		<title>Maintenance script: Repair MoniWiki formatting after migration</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=VendingMachine/%EC%9E%AC%EB%8B%88&amp;diff=83529&amp;oldid=prev"/>
		<updated>2026-03-26T14:01:43Z</updated>

		<summary type="html">&lt;p&gt;Repair MoniWiki formatting after migration&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:01, 26 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l14&quot;&gt;Line 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 먼저 자판기의 역할을 보자..... 자판기는 먼저 메뉴를 사람에게 보여줄 수 있어야 될꺼얌...&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 먼저 자판기의 역할을 보자..... 자판기는 먼저 메뉴를 사람에게 보여줄 수 있어야 될꺼얌...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 그리고 사람은 메뉴를 보고 각 메뉴에 알맞은 명령을 내릴 수 있어야 할것이고...&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 그리고 사람은 메뉴를 보고 각 메뉴에 알맞은 명령을 내릴 수 있어야 할것이고...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 음료가 해야할 일은 뭐가 있을까?&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 음료가 해야할 일은 뭐가 있을까?&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  먼저 자신의 상태(품목,가격,수량)을 기억하고 사람에게 보여줄 수 있어야겠지...&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  먼저 자신의 상태(품목,가격,수량)을 기억하고 사람에게 보여줄 수 있어야겠지...&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  그리고 사람이 주문을 했을 때 주문받은 상품의 가격에 비해 잔액이 충분한지 확인 하는 것 하구..... / 계수기&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  그리고 사람이 주문을 했을 때 주문받은 상품의 가격에 비해 잔액이 충분한지 확인 하는 것 하구..... / 계수기&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  또 주문받은 상품이 남아있는지도 체크해야 될꺼야!!^^&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  또 주문받은 상품이 남아있는지도 체크해야 될꺼야!!^^&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  이 두가지 조건에 만족할 때에는 주문한 상품을 내줄 수 있어야 하겠고, 이 때 상품의 수량을 갱신해야겠지!^^&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  이 두가지 조건에 만족할 때에는 주문한 상품을 내줄 수 있어야 하겠고, 이 때 상품의 수량을 갱신해야겠지!^^&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 흠.. 그리고 계수기의 역할을 한번 볼까? 이녀석은 먼저 잔액을 기억해서 보여주어야 할 것이고..&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 흠.. 그리고 계수기의 역할을 한번 볼까? 이녀석은 먼저 잔액을 기억해서 보여주어야 할 것이고..&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  사람이 투입한 돈이 형식에 맞는지(10,50,100,500,1000원) 확인해서 잔액을 늘려주어야 할 것이고,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  사람이 투입한 돈이 형식에 맞는지(10,50,100,500,1000원) 확인해서 잔액을 늘려주어야 할 것이고,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  사람이 돈의 반환을 요구하면 돈을 꺼내주고 잔액을 초기화 할 수 있어야 하겠지?^^&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  사람이 돈의 반환을 요구하면 돈을 꺼내주고 잔액을 초기화 할 수 있어야 하겠지?^^&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  아!! 그리고 주문한 음료의 가격에 따라 금액을 지불해주는 역할도 있어야겠군!^^&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  아!! 그리고 주문한 음료의 가격에 따라 금액을 지불해주는 역할도 있어야겠군!^^&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;가만있자.. 이거면 역할 분담은 대충 끝난 셈인가?^^ 그럼 한번 코딩을 해볼까?^^*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;가만있자.. 이거면 역할 분담은 대충 끝난 셈인가?^^ 그럼 한번 코딩을 해볼까?^^*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l154&quot;&gt;Line 154:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 154:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= 만들고나서.. =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= 만들고나서.. =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 클래스를 너무 많이 만들어서 괜히 복잡해졌다는 재동이 형의 지적을 받았습니다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 클래스를 너무 많이 만들어서 괜히 복잡해졌다는 재동이 형의 지적을 받았습니다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  아직 클래스 사용법도 제대로 모르는지라 서툴기도 하고.. 결론은 역시 공부해야할 것이 많다는 것...^^&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  아직 클래스 사용법도 제대로 모르는지라 서툴기도 하고.. 결론은 역시 공부해야할 것이 많다는 것...^^&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 지금까지는 안했었지만 대충의 구조는 말해두는 게 좋을 것 같습니다...^^&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 지금까지는 안했었지만 대충의 구조는 말해두는 게 좋을 것 같습니다...^^&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  배우는 게 많아질수록 코드가 조금씩 복잡해져서 나중에는 못 알아볼지도 모르는 생각이 드는군요..^^&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  배우는 게 많아질수록 코드가 조금씩 복잡해져서 나중에는 못 알아볼지도 모르는 생각이 드는군요..^^&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 이번엔 프로그램 설계를 한글로 했지만 영어로 해보고 싶은 욕심이 생기네엽..^^&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 이번엔 프로그램 설계를 한글로 했지만 영어로 해보고 싶은 욕심이 생기네엽..^^&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  (그럼 공부할 영역이 하나 더 늘어나는건가...^^∂)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  (그럼 공부할 영역이 하나 더 늘어나는건가...^^∂)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l166&quot;&gt;Line 166:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 166:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[CppStudy_2002_2]]  [[vending machine|&amp;quot;VendingMachine&amp;quot;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[CppStudy_2002_2]]  [[vending machine|&amp;quot;VendingMachine&amp;quot;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=VendingMachine/%EC%9E%AC%EB%8B%88&amp;diff=40002&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%9E%AC%EB%8B%88&amp;diff=40002&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;
02 장재니 [[Genie]]&lt;br /&gt;
&lt;br /&gt;
= 프로그램 설계 =&lt;br /&gt;
&lt;br /&gt;
== 클래스 나누기 ==&lt;br /&gt;
* 먼저 자판기(VendingMachine)이 필요할 것이고,&lt;br /&gt;
* 주문하는 사람(Man)도 있어야 할 것이다..&lt;br /&gt;
* 자판기는 사용자 인터페이스를 구현하는데 사용하고, 사람이 주문할 음료(Drink)를 따로 분류하자..&lt;br /&gt;
* 그러면 주문을 할 때 돈이 필요하니까 돈을 세는 계수기 비슷한 것(CoinCounter)도 필요할 것 같다..^^&lt;br /&gt;
이정도면 클래스를 나누는 것은 끝난 것 같으니깐 각각의 객체(클래스)에 필요한 역할을 나누어보자..^^&lt;br /&gt;
&lt;br /&gt;
== 역할 분담하기 ==&lt;br /&gt;
* 먼저 자판기의 역할을 보자..... 자판기는 먼저 메뉴를 사람에게 보여줄 수 있어야 될꺼얌...&lt;br /&gt;
* 그리고 사람은 메뉴를 보고 각 메뉴에 알맞은 명령을 내릴 수 있어야 할것이고...&lt;br /&gt;
* 음료가 해야할 일은 뭐가 있을까?&lt;br /&gt;
 먼저 자신의 상태(품목,가격,수량)을 기억하고 사람에게 보여줄 수 있어야겠지...&lt;br /&gt;
 그리고 사람이 주문을 했을 때 주문받은 상품의 가격에 비해 잔액이 충분한지 확인 하는 것 하구..... / 계수기&lt;br /&gt;
 또 주문받은 상품이 남아있는지도 체크해야 될꺼야!!^^&lt;br /&gt;
 이 두가지 조건에 만족할 때에는 주문한 상품을 내줄 수 있어야 하겠고, 이 때 상품의 수량을 갱신해야겠지!^^&lt;br /&gt;
* 흠.. 그리고 계수기의 역할을 한번 볼까? 이녀석은 먼저 잔액을 기억해서 보여주어야 할 것이고..&lt;br /&gt;
 사람이 투입한 돈이 형식에 맞는지(10,50,100,500,1000원) 확인해서 잔액을 늘려주어야 할 것이고,&lt;br /&gt;
 사람이 돈의 반환을 요구하면 돈을 꺼내주고 잔액을 초기화 할 수 있어야 하겠지?^^&lt;br /&gt;
 아!! 그리고 주문한 음료의 가격에 따라 금액을 지불해주는 역할도 있어야겠군!^^&lt;br /&gt;
가만있자.. 이거면 역할 분담은 대충 끝난 셈인가?^^ 그럼 한번 코딩을 해볼까?^^*&lt;br /&gt;
&lt;br /&gt;
= 소스 =&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cstring&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 int selection, num;&lt;br /&gt;
 &lt;br /&gt;
 class Man{&lt;br /&gt;
 public:&lt;br /&gt;
 	void select(){&lt;br /&gt;
 		selection = 0;&lt;br /&gt;
 		while (selection &amp;amp;lt; 1 || selection &amp;amp;gt; num){&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;&amp;amp;gt;&amp;amp;gt; &amp;quot;;&lt;br /&gt;
 			cin &amp;amp;gt;&amp;amp;gt; selection;&lt;br /&gt;
 			if (selection &amp;amp;lt; 1 || selection &amp;amp;gt; num)&lt;br /&gt;
 				cout &amp;amp;lt;&amp;amp;lt; &amp;quot;잘못 입력하셨습니다. n&amp;quot;;&lt;br /&gt;
 		}&lt;br /&gt;
 	};&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class CoinCounter{&lt;br /&gt;
 public:&lt;br /&gt;
 	int remainders, coin;&lt;br /&gt;
 	void resetCoins(){&lt;br /&gt;
 		remainders = 0;&lt;br /&gt;
 	};&lt;br /&gt;
 	void showRemainders(){&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;REMAINDERS : &amp;quot; &amp;amp;lt;&amp;amp;lt; remainders &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 	};&lt;br /&gt;
 	void insertCoins(){&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;돈을 넣으세요.n 1. 10원 n 2. 50원 n 3. 100원 n 4. 500원 n 5. 1000원 n&amp;amp;gt;&amp;amp;gt; &amp;quot;;&lt;br /&gt;
 		cin &amp;amp;gt;&amp;amp;gt; coin;&lt;br /&gt;
 		if (coin == 1)			coin = 10;&lt;br /&gt;
 		else if (coin == 2)		coin = 50;&lt;br /&gt;
 		else if (coin == 3)		coin = 100;&lt;br /&gt;
 		else if (coin == 4)		coin = 500;&lt;br /&gt;
 		else if (coin == 5)		coin = 1000;&lt;br /&gt;
 		else coin = 0;&lt;br /&gt;
 		remainders += coin;&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; coin &amp;amp;lt;&amp;amp;lt;&amp;quot;원을 넣으셨습니다. n잔액은 &amp;quot; &amp;amp;lt;&amp;amp;lt; remainders &amp;amp;lt;&amp;amp;lt; &amp;quot;입니다.n&amp;quot;;&lt;br /&gt;
 	};&lt;br /&gt;
 	void pay(int used){&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; used &amp;amp;lt;&amp;amp;lt; &amp;quot;원을 사용하셨습니다.n&amp;quot;;&lt;br /&gt;
 		remainders -= used;&lt;br /&gt;
 	};&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class VendingMachine{&lt;br /&gt;
 public:&lt;br /&gt;
 	void showMenu(){&lt;br /&gt;
 	num = 4;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;MAIN MENU n 1. INSERT COIN n 2. BUY n 3. RETURN THE REMAINDERS n 4. EXIT n&amp;quot;;&lt;br /&gt;
 	};&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Drink{&lt;br /&gt;
 public:&lt;br /&gt;
 	struct drinks{&lt;br /&gt;
 		char name[10];&lt;br /&gt;
 		int price;&lt;br /&gt;
 		int quantity;&lt;br /&gt;
 	};&lt;br /&gt;
 	drinks detail[3];&lt;br /&gt;
 	Drink(){&lt;br /&gt;
 		strcpy(detail[0].name, &amp;quot;사이다&amp;quot;);&lt;br /&gt;
 		strcpy(detail[1].name, &amp;quot;콜라&amp;quot;);&lt;br /&gt;
 		strcpy(detail[2].name, &amp;quot;2% 부족&amp;quot;);&lt;br /&gt;
 		detail[0].price = 500;&lt;br /&gt;
 		detail[1].price = 400;&lt;br /&gt;
 		detail[2].price = 600;&lt;br /&gt;
 		for (int i = 0 ; i &amp;amp;lt; 3 ; i++)&lt;br /&gt;
 			detail[i].quantity = 10;&lt;br /&gt;
 	};&lt;br /&gt;
 	void showDetails(){&lt;br /&gt;
 		num = 3;&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot; 상품명t 가격t 수량n&amp;quot;;&lt;br /&gt;
 		for (int i = 0 ; i &amp;amp;lt; 3; 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; detail[i].name &amp;amp;lt;&amp;amp;lt; &amp;quot;t&amp;quot;&lt;br /&gt;
 				&amp;amp;lt;&amp;amp;lt; detail[i].price &amp;amp;lt;&amp;amp;lt; &amp;quot;t&amp;quot;&lt;br /&gt;
 				&amp;amp;lt;&amp;amp;lt; detail[i].quantity &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 	};&lt;br /&gt;
 	int buy(int remainders){&lt;br /&gt;
 		if (remainders &amp;amp;gt;= detail[selection - 1].price &amp;amp;amp;&amp;amp;amp; detail[selection - 1].quantity != 0){&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; detail[selection - 1].name &amp;amp;lt;&amp;amp;lt; &amp;quot;을 선택하셨습니다.n&amp;quot;;&lt;br /&gt;
 			detail[selection - 1].quantity--;&lt;br /&gt;
 			return detail[selection - 1].price;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (detail[selection - 1].price &amp;amp;gt; remainders)&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;잔액이 부족합니다.n&amp;quot;;&lt;br /&gt;
 		else if (detail[selection - 1].quantity == 0)&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;매진되었습니다. 다른 상품을 골라주십시오.n&amp;quot;;&lt;br /&gt;
 		return 0;&lt;br /&gt;
 	};&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 int main(){&lt;br /&gt;
 	Man man;&lt;br /&gt;
 	CoinCounter coin_counter;&lt;br /&gt;
 	VendingMachine vending_machine;&lt;br /&gt;
 	Drink drink;&lt;br /&gt;
 	int usedmoney;&lt;br /&gt;
 	coin_counter.resetCoins();&lt;br /&gt;
 	while(selection != 4)&lt;br /&gt;
 	{&lt;br /&gt;
 		vending_machine.showMenu();&lt;br /&gt;
 		coin_counter.showRemainders();&lt;br /&gt;
 		man.select();&lt;br /&gt;
 		if (selection == 1)&lt;br /&gt;
 			coin_counter.insertCoins();&lt;br /&gt;
 		else if (selection == 2){&lt;br /&gt;
 			drink.showDetails();&lt;br /&gt;
 			man.select();&lt;br /&gt;
 			usedmoney = drink.buy(coin_counter.remainders);&lt;br /&gt;
 			coin_counter.pay(usedmoney);&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (selection == 3){&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;잔액을 반환합니다.n&amp;quot;;&lt;br /&gt;
 			coin_counter.resetCoins();&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (selection == 4)&lt;br /&gt;
 			break;&lt;br /&gt;
 		else cout &amp;amp;lt;&amp;amp;lt; &amp;quot;잘못 입력하셨습니다.n&amp;quot;;&lt;br /&gt;
 		system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
 		system(&amp;quot;cls&amp;quot;);&lt;br /&gt;
 	};&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 만들고나서.. =&lt;br /&gt;
* 클래스를 너무 많이 만들어서 괜히 복잡해졌다는 재동이 형의 지적을 받았습니다.&lt;br /&gt;
 아직 클래스 사용법도 제대로 모르는지라 서툴기도 하고.. 결론은 역시 공부해야할 것이 많다는 것...^^&lt;br /&gt;
* 지금까지는 안했었지만 대충의 구조는 말해두는 게 좋을 것 같습니다...^^&lt;br /&gt;
 배우는 게 많아질수록 코드가 조금씩 복잡해져서 나중에는 못 알아볼지도 모르는 생각이 드는군요..^^&lt;br /&gt;
* 이번엔 프로그램 설계를 한글로 했지만 영어로 해보고 싶은 욕심이 생기네엽..^^&lt;br /&gt;
 (그럼 공부할 영역이 하나 더 늘어나는건가...^^∂)&lt;br /&gt;
&lt;br /&gt;
  &amp;#039;&amp;#039;클래스 수가 많아서 복잡해진건 아닌듯(모 VendingMachine 의 경우 Requirement 변경에 따라 클래스갯수가 10개 이상이 되기도 함; 클래스 수가 중요하다기보다도 최종 완료된 소스가 얼마나 명료해졌느냐가 복잡도를 결정하리라 생각). 단, 역할 분담할때 각 클래스별 역할이 명료한지 신경을 쓰는것이 좋겠다. CoinCounter 의 경우 VendingMachine 안에 멤버로 있어도 좋을듯. CRC 세션을 할때 클래스들이 각각 따로 존재하는 것 같지만, 실제론 그 클래스들이 서로를 포함하고 있기도 하거든. 또는 해당 기능을 구현하기 위해 다른 클래스들과 협동하기도 하고 (Collaboration. 실제 구현시엔 다른 클래스의 메소드들을 호출해서 구현한다던지 식임). 역할분담을 하고 난 다음 모의 시나리오를 만든뒤 코딩해나갔다면 어떠했을까 하는 생각도 해본다. 이 경우에는 UnitTest 를 작성하는게 좋겠지. UnitTest 작성 &amp;amp; 진행에 대해선 [[ScheduledWalk/석천]] 의 중반부분이랑 UnitTest 참조.--[[1002]]&amp;#039;&amp;#039;&lt;br /&gt;
----&lt;br /&gt;
see also FifteenSecondsRule&lt;br /&gt;
----&lt;br /&gt;
[[CppStudy_2002_2]]  [[vending machine|&amp;quot;VendingMachine&amp;quot;]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>