๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech Log ๐Ÿ› ๏ธ

์ผ„ํŠธ๋ฐฑ์˜ ๊ตฌํ˜„ ํŒจํ„ด 3์žฅ - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด๋ก  ๋ณธ๋ฌธ

๊ฐœ๋ฐœ ์„œ์ /์ผ„ํŠธ๋ฐฑ ๊ตฌํ˜„ ํŒจํ„ด

์ผ„ํŠธ๋ฐฑ์˜ ๊ตฌํ˜„ ํŒจํ„ด 3์žฅ - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด๋ก 

sehaan 2023. 9. 3. 21:12

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด๋ก 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด๋ก ์€ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

 

์‹ค์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๋™๋ ฅ์ด ์กด์žฌํ•œ๋‹ค.

 

1. ๊ฐ€์น˜

- ๊ฐ€์น˜๋Š” ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ ์šฉ๋œ๋‹ค. 

- ์ปค๋ฎค๋‹ˆํ…Œ์ด์…˜ , ์œ ์—ฐ์„ฑ ๋“ฑ ๋ชจ๋“  ์˜์‚ฌ ๊ฒฐ์ •์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

 

2. ์›์น™

- ์ง์ ‘ ์ ์šฉํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฐ€์น˜์™€ , ์ง€์—ฝ ์ ์ธ ํŒจํ„ด ์‚ฌ์ด์— ๊ฐ€๊ต ์—ญํ• ์„ ํ•œ๋‹ค.

- ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•  ๋•Œ ์›์น™์„ ๋”ฐ๋ฅธ๋‹ค. 

 

ํŒจํ„ด์€ ์ง€๊ธˆ ๋‹น์žฅ ๋ฌด์—‡์„ ํ•ด์•ผํ• ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๊ณ , ๊ฐ€์น˜๋Š” ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋™๊ธฐ๋ฅผ ์•Œ๋ ค์ฃผ๋ฉฐ, ์›์น™์€ ๋™๊ธฐ๋ฅผ ํ–‰๋™์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ€์ง€๋ฅผ ์•Œ๋ ค์ค€๋‹ค.

 

๊ฐ€์น˜

์„ธ๊ฐ€์ง€ ๊ฐ€์น˜๋Š” ์„œ๋กœ ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ ์ƒํ˜ธ ๋ณด์™„์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

 

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ดค์„ ๋•Œ์˜ ๊ด€์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ

์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ , ์ˆ˜์ •ํ•˜๊ณ , ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ์ถ”ํ›„ ์ฝ”๋“œ ์ˆ˜์ • ์‹œ์— ๋‚ด๊ฐ€ ์“ด ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฐœ๋ฐœ ๋น„์šฉ์ด ๊ฐ์†Œํ•œ๋‹ค.

๋˜ํ•œ ํƒ€์ธ์˜ ์‹œ์„ ์—์„œ ์ƒ๊ฐํ•˜๋‹ค๋ณด๋ฉด ๋” ๋งŽ์€ ์ƒ๊ฐ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ์งˆ์ด ์ข‹์•„์ง„๋‹ค.

 

๋‹จ์ˆœ์„ฑ

๋ถˆํ•„์š”ํ•œ ๋ณต์žก๋„๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ˆ˜์ •์„ ์–ด๋ ต๊ฒŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ€์น˜๊ฐ€ ๋–จ์–ด์ง„๋‹ค.

์ฝ”๋“œ์—์„œ ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ•˜๋ผ. 

๊ณผ๋„ํ•œ ์š”์†Œ์™€ ์˜๋ฏธ์—†๋Š” ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹จ์ˆœ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜๊ณผ ๋‹จ์ˆœ์„ฑ์€ ํ˜‘์—… ๊ด€๊ณ„์— ์žˆ๋‹ค.

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ์‹ ๊ฒฝ์„ ์“ธ์ˆ˜๋ก ์–ด๋–ค ๋ถ€๋ถ„์ด ๊ณผ๋„ํ•˜๊ฒŒ ๋ณต์žกํ•œ ์ง€ ์•Œ๊ธฐ ์‰ฌ์šฐ๋ฉฐ, ๋‹จ์ˆœํ• ์ˆ˜๋ก ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.

 

์œ ์—ฐ์„ฑ

์œ ์—ฐ์„ฑ์„ ์œ„ํ•ด์„œ ๋ณต์žกํ•œ ์„ค๊ณ„๋ฅผ ์ •๋‹นํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ณต์žก๋„๊ฐ€ ์•„๋ฌด๋Ÿฐ ์ด๋“์„ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‹จ์ˆœ์„ฑ์„ ์„ ํƒํ•ด์•ผํ•œ๋‹ค.

 

์„ค๊ณ„ ์ดˆ๊ธฐ ์œ ์—ฐ์„ฑ์ด ํ•„์š”ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋„, ์ดํ›„ ํ•„์š”ํ•œ ์ƒํ™ฉ์ด ์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ์„ค๊ณ„ ๋น„์šฉ์„ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ๋ณด๋‹ค ๋‹น์žฅ์˜ ์ด๋“์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

์ถ”์ธก์— ์˜๊ฑฐํ•ด ์„ค๊ณ„์— ์œ ์—ฐ์„ฑ์„ ๋ถ€์—ฌํ•˜๊ธฐ ๋ณด๋‹จ ๋‹จ์ˆœ์„ฑ์„ ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉํ•œํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ์ฒ ์ €ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด๋‹ค.

 

๋‹จ์ˆœ์„ฑ์€ ์œ ์—ฐ์„ฑ์„ ์ด‰์ง„์‹œํ‚จ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ต์…˜์„ ์ œ๊ฑฐํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜์ •์€ ๋”์šฑ ๊ฐ„๋‹จํ•ด์ง„๋‹ค.

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ค‘์‹œํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์ง€๋ฏ€๋กœ ์ˆ˜์ •์ด ์‰ฌ์›Œ์ง„๋‹ค. ์ด๋กœ์จ ์œ ์—ฐ์„ฑ์ด ์ฆ๋Œ€๋œ๋‹ค.

 

์›์น™ 

๊ฐ ํŒจํ„ด์€ ๊ฐ€์น˜ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ๋‚ดํ‘œํ•˜๊ณ  ์žˆ๋‹ค.

์›์น™์€ ์ผ๋ฐ˜์ ์ธ ์ƒ๊ฐ์„ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ, ํŒจํ„ด์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃฌ๋‹ค.

 

์›์น™์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ํŒจํ„ด๋“ค์„ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ทผ๋ณธ์ ์ธ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

์ง€์—ญ์  ๋ณ€ํ™”

์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ํ•จ๊ป˜ ๋ฐ”๊ฟ”์•ผํ•˜๋Š” ๋ถ€๋ถ„์„ ์ตœ์†Œํ™”ํ•˜๋ผ

์ง€์—ญ์  ๋ณ€ํ™”๋งŒ์„ ์ผ์œผํ‚ค๋Š” ์ฝ”๋“œ๋Š” ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ์‰ฝ๋‹ค.

 

์ตœ์†Œ ์ค‘๋ณต

์ค‘๋ณต๋œ ์ฝ”๋“œ๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก ์ฝ”๋“œ์˜ ์ˆ˜์ •์ด ์–ด๋ ค์›Œ์ง„๋‹ค.

์–ด๋–ค ๊ฐœ๋…์„ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ ํด๋ž˜์Šค๋ฅผ 2๊ฐœ ์ด์ƒ ์ˆ˜์ •ํ•ด์•ผํ•œ๋‹ค๋ฉด, ์ด๋Š” ์ง€์—ญ์  ๋ณ€ํ™”์˜ ์›์น™์„ ์œ„๋ฐฐํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ฝ”๋“œ์˜ ์ค‘๋ณต์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ถˆ๊ฐ€ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ ˆ๋Œ€์ ์œผ๋กœ ํ”ผํ•˜๊ธฐ ๋ณด๋‹จ ์œ„ํ—˜ ์š”์†Œ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ์˜ ๊ฒฐํ•ฉ

๋ฐ์ดํ„ฐ์™€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์„ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ , ๊ฐ™์€ ๊ฐ์ฒด , ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์— ๋ฐฐ์น˜ํ•˜๋ผ

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ๊ทธ ์˜ํ–ฅ์ด ์ผ์ • ์˜์—ญ์— ๋จธ๋ฌผ๊ฒŒ ๋œ๋‹ค.

 

๋Œ€์นญ์„ฑ

๋Œ€์นญ์„ฑ์— ๋”ฐ๋ผ ์•„์ด๋””์–ด๋ฅผ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ํ•˜์ž

๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ๊ตฌํ˜„์œผ๋กœ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

void process() {
	input();
    	tally(); // ์ผ์น˜์‹œํ‚ค๋‹ค
   	output();
}

 

์„ ์–ธ์  ํ‘œํ˜„

์ˆ˜ํ–‰ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ตฌ๋ฌธ์ด๋‚˜ ์กฐ๊ฑด๋ถ€ ๊ตฌ๋ฌธ์ด ์—†๋Š” ๊ฒฝ์šฐ, ์„ ์–ธ์  ํ‘œํ˜„์„ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

(์•„๋งˆ ์–ด๋…ธํ…Œ์ด์…˜์ธ ๋“ฏ)

 

@RunWith(Suite.class)
@TestClasses({
	SimpleTest.class,
    ComplicatedTest.class
}
)
class AllTests {
}

์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๋‚ด๋ถ€๋ฅผ ๋ณผ ํ•„์š”์—†์ด ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ณ€ํ™”์œจ

๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณ€ํ™”์œจ์ด ๋‹ค๋ฅธ ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ผ

๋ณ€ํ™”์œจ์€ ์‹œ๊ฐ„์  ๋Œ€์นญ์„ฑ์— ํ•ด๋‹นํ•œ๋‹ค.

 

ํ•˜๋‚˜์˜ ๊ฐ์ฒด์— ์žˆ๋Š” ๋ชจ๋“  ํ•„๋“œ๋Š” ๊ฐ€๊ธ‰์  ํ•จ๊ป˜ ๋ณ€ํ•ด์•ผํ•œ๋‹ค.

ํŠน์ • ๋ฉ”์†Œ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋  ๋•Œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ํ•„๋“œ๋Š” ๊ทธ ๋ฉ”์†Œ๋“œ์˜ ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋˜์–ด์•ผํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ํ•จ๊ป˜ ๋ณ€ํ™”ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ํ•„๋“œ(value, currency)๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๋„์šฐ๋ฏธ ๊ฐ์ฒด(Money)์— ๋„ฃ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

setAmount(Money value) {
	this.money = money;
}