Study/์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค

[์šฐํ…Œ์ฝ”] 2์ฃผ์ฐจ ํ”„๋ฆฌ์ฝ”์Šค ํšŒ๊ณ ๋ก

๊ฐœ๋ฐœํ•˜๋Š” ์ฃผ๋””์”จ 2023. 11. 2. 00:38

 

 

์„œ๋ก 

์ง€๋‚œ 1์ฃผ์ฐจ์˜ ์—„์ฒญ๋‚œ ๋ฐ˜์„ฑ๊ณผ ๊นŠ์€ ๊นจ๋‹ฌ์Œ์„ ํ† ๋Œ€๋กœ 2์ฃผ์ฐจ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. 2์ฃผ์ฐจ ๋ฏธ์…˜์— ์•ž์„œ ์šฐํ…Œ์ฝ”์—์„œ 2์ฃผ์ฐจ๋ฅผ ์„ค๊ณ„ํ•˜๋ฉฐ ์šฐํ…Œ์ฝ” ์ฝ”์น˜์™€ ํฌ๋น„๊ฐ€ ์‹œ์‚ฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝํ—˜๊ณผ ๋ชฉํ‘œ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์— ์ค‘์ ์„ ๋‘์—ˆ๋‹ค.

 

2์ฃผ์ฐจ ๋ชฉํ‘œ

  • 1์ฃผ์ฐจ์—์„œ ํ•™์Šตํ•œ ๊ฒƒ์— ๋”ํ•ด ํ•จ์ˆ˜๋ฅผ ๋ถ„๋ฆฌํ•  ๊ฒƒ
  • ๊ฐ ํ•จ์ˆ˜๋ณ„๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ
    • ํ…Œ์ŠคํŠธ๊ฐ€ ์ฒ˜์Œ์ด๋ผ๋ฉด, ์–ธ์–ด๋ณ„ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋ฅผ ํ•™์Šตํ•ด๋ณด๊ธฐ
    • ์ž‘์€ ๋‹จ์œ„์˜ ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ์ž‘์„ฑํ•ด๋ณด๊ธฐ
    • ๋‹จ์ˆœํ•˜๊ณ , ์žˆ์–ด๋ณด์ด์ง€ ์•Š์•„๋„ ๊ธฐ๋ณธ์— ์ถฉ์‹คํ•œ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ๋งŒ๋“ค๊ธฐ
  • ์š”๊ตฌ์‚ฌํ•ญ์„ ์ž˜ ํŒŒ์•…ํ•˜๊ธฐ
    • ์ตœ๋Œ€ํ•œ ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•ด๋ณผ ๊ฒƒ
    • ๋ฌด์ž‘์ • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋„์›€์„ ๋ฐ›๋Š” ๊ฒƒ์€ ์ง€์–‘ํ•˜๊ธฐ(์ปค๋ฎค๋‹ˆํ‹ฐ๋„ ๋˜๋„๋ก ํ”ผํ•˜๊ธฐ)
  • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „ ๊ธฐ๋Šฅ๋ชฉ๋ก์„ ๋งŒ๋“ค๊ณ , ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ commit ํ•˜๊ธฐ
  • commit ์ปจ๋ฒค์…˜ ์ง€ํ‚ค๊ธฐ

 

ํ”„๋ฆฌ์ฝ”์Šค, ๋„ˆ๋Š” ์ด๋Ÿฐ๋…€์„์ด์—ˆ๊ตฌ๋‚˜(?)

1์ฃผ์ฐจ ํ”ผ๋“œ๋ฐฑ๊ณผ ํ•จ๊ป˜ ์ „๋‹ฌํ•ด์ฃผ์‹  ๋‚ด์šฉ์„ ํ†ตํ•ด.. ๋น„๋กœ์†Œ ํ”„๋ฆฌ์ฝ”์Šค ๋ฏธ์…˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์–ด๋–ค ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์š”๊ตฌ์‚ฌํ•ญ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ๋ชฉ๋ก์„ ๋„์ถœํ•˜๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์–ด๋ ต๊ณ  ์ต์ˆ™ํ•˜์ง€ ์•Š์•˜์ง€๋งŒใ…œใ…œ ์ด๋ฒˆ ์ฃผ์ฐจ์—์„œ๋Š” ์ตœ๋Œ€ํ•œ ์ฃผ์–ด์ง„ ์š”๊ตฌ์‚ฌํ•ญ์—์„œ ๊ธฐ๋Šฅ๋ชฉ๋ก์„ ๋„์ถœํ•˜๋„๋ก ์ƒ๊ฐํ•˜๋Š” ์—ฐ์Šต์— ๋งŽ์€ ์‹œ๊ฐ„์„ ํˆฌ์žํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ผ๋‹ค ์ง€์› ๋‹ค๋ฅผ ๊ฑฐ์˜ 100๋ฒˆ์ด์ƒ ๋ฐ˜๋ณตํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐใ…‹ใ…‹ใ…‹์ง„์งœ.. ์ด๋ ‡๊ฒŒ ํž˜๋“ค ์ค„์€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.. (๋„ˆ๋ฌด ๋งŒ๋งŒํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋„ค์š”๐Ÿคง)

 

๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ๋„์ถœํ•˜๊ธฐ๊นŒ์ง€

์–ด๋Š์ •๋„ ๊ณ ๋ฏผ์„ ๋๋‚ด๊ณ  ๋‚œ ํ›„ ์ฃผ์–ด์ง„ ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ •๋ฆฌํ•˜๋ฉฐ ํ๋ฆ„์„ ์ƒ๊ฐํ•˜๊ณ , ๊ทธ ๊ณผ์ •์—์„œ ๋ฌถ์„ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์ด ๋ณด์ด๋ฉด ๋ฌถ์–ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ชฉ๋ก์„ ์ž‘์„ฑํ–ˆ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ํŠน์ • ํŒจํ„ด์— ์ง‘์ฐฉํ•˜์ง€ ์•Š์•„๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฐ์ฒด ๋‹จ์œ„์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™€์„œ ๋†€๋ผ์šด ๊ฒฝํ—˜์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋งŽ์€ ๋ถ„๋“ค์ด ํŒจํ„ด ์ค‘์‹ฌ์ ์œผ๋กœ ํ•ด์•ผํ•˜๋Š”์ง€ ๊ณ ๋ฏผ์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™์€๋ฐ ์ฒ˜์Œ๋ถ€ํ„ฐ ํŒจํ„ด์ด๋ผ๋Š” ์ด๋ก  ์ž์ฒด์— ์ง‘์ค‘ํ•˜๋ฉด ๋งˆ์Œ์„ ์šธ๋ฆฌ๋Š” ๊ฒฝํ—˜์„ ํ•˜๊ธด ์–ด๋ ต๋‹ค. ํ˜น์‹œ๋ผ๋„ ์ด ๊ธ€์„ ๋ณด๋Š” ๋™๋ฃŒ๊ฐ€ ํŒจํ„ด์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•œ๋‹ค๋ฉด, ๊ณผ๊ฐํžˆ ๋งํ•ด์ฃผ๊ณ  ์‹ถ๋‹ค. "ํŒจํ„ด์€ ๋‚˜์ค‘์— ๊นจ๋‹ซ๋Š” ๊ฒƒ๐Ÿ˜„๋ฏธ๋ฆฌ ์•Œ๋ฉด ์žฌ๋ฏธ์—†์Šต๋‹ˆ๋‹ค"

 

๋ฉ”์†Œ๋“œ ๋„ค์ด๋ฐ, ์ฐฝ์ž‘์˜ ๊ณ ํ†ต

๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ๋„์ถœํ•˜๊ณ  ๋‚œ ํ›„ ๋‹ค์Œ์œผ๋กœ ๋„ค์ด๋ฐ์—๋„ ๋งŽ์€ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. '๋‚˜'๋งŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ด ์•„๋‹ˆ๋ผ, ์ด๋ฆ„๋งŒ ๋ณด๊ณ ๋„ ๋‚ด์šฉ์„ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฃผ์„์ด ํ•„์š”์—†๋Š” ์ง๊ด€์ ์ธ ์ด๋ฆ„์„ ์ง“๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•ด๋ณด๊ณ  ์ด๋ฆฌ์ €๋ฆฌ ์ƒ๊ฐํ•˜๋Š๋ผ ํ•˜๋ฃจ๋ฅผ ๊ผฌ๋ฐ• ๋ณด๋ƒˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์ž ๊น ์ฐธ๊ณ ํ•˜๋‹ˆ ๋‹ค๋ฅธ ๋ถ„๋“ค๋„ ์ฐฝ์ž‘์˜ ๊ณ ํ†ต์„ ํ•จ๊ป˜ ๊ฒช๊ณ  ๊ณ„์‹  ๊ฒƒ ๊ฐ™์•„์„œ ๋‚ด์  ์นœ๋ฐ€๊ฐ์ด ์ƒ๊ฒจ๋ฒ„๋ ธ๋‹คใ…Ž (์†”์งํžˆ ์ด๋•Œ ๋„ˆ๋ฌด ํ—ˆ๋ฌดํ•˜๊ณ , ์ด์ •๋„๋„ ๋ชปํ•˜๋‚˜?๋ผ๋Š” ์ƒ๊ฐ์ด ๋งŽ์ด๋“ค์–ด์„œ.. ์ €๋Š” ๋งˆ์Œ๊ณ ์ƒ์„ ์‚ด์ง ํ•˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค)

 

 


 

 

TDD๋ฅผ ์•Œ์•„๊ฐ€๋‹ค.

 

์š”์ฆ˜ ํ•œ์ฐธ ํ•ซํ•œ TDD, ํ…Œ์ŠคํŠธ ์ค‘์‹ฌ ์„ค๊ณ„. ์ด๋ฒˆ ์ฃผ์ฐจ๋ฅผ ํ†ตํ•ด ์ฐ๋จน ํ•ด๋ดค๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ •ํ™•ํ•˜๊ฒŒ๋Š” ์™œ ์จ์•ผํ•˜๋Š”์ง€ ๊ทธ ์ด์œ  ์ •๋„๋Š” ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. TDD ๊ด€๋ จ ๋‚ด์šฉ์€ ์–˜๊ธฐ๊ฐ€ ๊ธธ์–ด์งˆ ๊ฒƒ ๊ฐ™์•„ ์ถ”ํ›„์— ํฌ์ŠคํŒ…์œผ๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•œ๋‹ค. (์ฝ์–ด์ฃผ์‹ค๊ฑฐ์ฃ ?๐Ÿ˜‰)

 

 

๋ฏธ์…˜ <์ž๋™์ฐจ ๊ฒฝ์ฃผ> ์…€ํ”„๋ฆฌ๋ทฐ

1) ๋ฌธ์ž์—ด ์ƒ์ˆ˜๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ

1์ฃผ์ฐจ์—์„œ ๋ฌธ์ž์—ด์„ ๊ทธ๋Œ€๋กœ ์†Œ์Šค ๋‚ด๋ถ€์— ํฌํ•จ์‹œ์ผฐ๋”๋‹ˆ, ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒŒ ์–ด๋– ๋ƒ๋Š” ํ”ผ์–ด๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์•˜๋‹ค. ๋˜ํ•œ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐํ•˜๋ฉฐ ๋ฌธ์ž์—ด๋ผ๋ฆฌ ๋ฌถ์–ด์ฃผ๋‹ˆ ํ›จ์”ฌ ๋” ๊ฐ€๋…์„ฑ์ด ์ข‹์Œ์„ ๋Š๊ผˆ๋‹ค. ๋ชจ๋ฅด๊ณ  ์žˆ๋˜ ๋‚ด์šฉ์€ ์•„๋‹ˆ์ง€๋งŒ, ๋‚ด๊ฐ€ ๋†“์ณค๋˜ ๋ถ€๋ถ„์ด๋ผ ์•„์ฐจ! ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์ฃผ์ฐจ๋ถ€ํ„ฐ๋Š” ํ•ด๋‹น ๋ถ€๋ถ„์„ ์žŠ์ง€์•Š๊ณ  ๋ฐ”๋กœ ์ ์šฉํ•ด๋ณด์•˜๋‹ค.

 

์ด ๋ฌธ์ž์—ด์€ ์ฝ˜์†”์—์„œ ์ถœ๋ ฅ๋˜๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์ด๋‹ค. ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์˜ ๊ฒฝ์šฐ ํฐ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ค‘์š”ํ•˜๊ฒŒ ๊ด€๋ฆฌ๋˜๋Š” ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด, ์ƒ์ˆ˜ ๋“ฑ ๊ณตํ†ต์œผ๋กœ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๋…€์„๋“ค์€ ๋ฌถ์–ด์ฃผ๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

package racingcar.constant;

public class StringError {
    public static final String REQUIRED_CAR_NAME = "์ž๋™์ฐจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.";
    public static final String REQUIRED_NUMBER = "์ˆซ์ž๋งŒ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.";
    public static final String CAR_NAME_TOO_LONG = "์ž๋™์ฐจ ์ด๋ฆ„์€ 5์ž ์ดํ•˜๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.";
}

 

 

2) ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋“  ํ๋ฆ„์„ ์ปจํŠธ๋กคํ•˜์ž

์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ํŒจํ‚ค์ง€๋ฅผ ๋‚˜๋ˆ„๋ฉฐ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋˜ ๋ถ€๋ถ„์€ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์—ญํ• ์ด์—ˆ๋‹ค. ์ •๋ง ๋ง๊ทธ๋Œ€๋กœ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ์ปจํŠธ๋กค ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ „๋ฐ˜์ ์ธ ํ๋ฆ„์„ ์ฃผ๋„ํ•ด์•ผํ•œ๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๋‹ค. ์ง€๋‚œ ๊ณผ์ œ์™€๋Š” ๋‹ฌ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ปจํŠธ๋กคํ•  ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ run()์„ ๋‘๊ณ  ๊ทธ ์•ˆ์—์„œ ์ฃผ์„์ด ์—†์–ด๋„ ํ๋ฆ„์„ ์‰ฝ๊ฒŒ ์ฝ์–ด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ–ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‹ค์Œ์œผ๋กœ๋Š” ๋‚ญ๋น„ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ฒ ๋‹ค๊ณ  ๋‹ค์งํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•˜๋ฉฐ ๋‹จ ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ–ˆ๊ณ , ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ตฌํ˜„ํ•ด์ฃผ์—ˆ๋‹ค. ์ด ์‹ฑ๊ธ€ํ†ค ๋•Œ๋ฌธ์—.. ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž ์‹œ ๋ฐฉํ™ฉํ–ˆ์ง€๋งŒ, ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ปจํŠธ๋กค๋Ÿฌ์ผ ๋•Œ๊ฐ€ ๊ฐ€์žฅ ์ž˜์–ด์šธ๋ฆฐ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค..!

(ํ˜น์‹œ ๋‹ค๋ฅธ ์˜๊ฒฌ์ด๋‚˜ ์ž˜๋ชป์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ์ฝ”๋ฉ˜ํŠธ ๋‚จ๊ฒจ์ฃผ์„ธ์š”๐Ÿ˜‰)

package racingcar.controller;

import camp.nextstep.edu.missionutils.Console;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import racingcar.domain.Car;
import racingcar.domain.NumberGenerator;
import racingcar.view.UserInput;
import racingcar.view.UserOutput;

public class RacingGame {
    private static RacingGame instance; // ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•  ์‹ฑ๊ธ€ํ†ค ์ธ์Šคํ„ด์Šค
    private final List<Car> cars;

    private RacingGame() {
        cars = new ArrayList<>();
    }

    private static RacingGame getInstance() {
        if (instance == null) {
            instance = new RacingGame();
        }
        return instance;
    }

    public static void run() {

        UserOutput.askForCarNames();
        String[] carNames = UserInput.readCarName();

        RacingGame game = RacingGame.getInstance();
        game.addCar(carNames);

        UserOutput.askForTryCount();
        int rounds = UserInput.readRound();
        game.play(rounds);

        List<String> result = game.getWinners();
        UserOutput.showWinners(result);

        Console.close();
    }
    ...

}

 

run() ๋ฉ”์„œ๋“œ๋ฅผ ์ž ์‹œ๋ณด๋ฉด, ์ฃผ์„์ด ์—†๋”๋ผ๋„ ์„ธ๋ถ€ ์ฝ”๋“œ๋ฅผ ๋ณด์ง€ ์•Š๋”๋ผ๋„ ์ผ๋‹จ ํ•œ์ค„์”ฉ ์ฝ์–ด๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. 

 

//์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์•„ ์ž๋™์ฐจ ์ด๋ฆ„์„ ๋ฌผ์–ด๋ณธ๋‹ค.
UserOutput.askForCarNames();

//์‚ฌ์šฉ์ž์—๊ฒŒ ์ž…๋ ฅ๋ฐ›์€ ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ฝ์–ด String[]์— ์ €์žฅํ•œ๋‹ค.
String[] carNames = UserInput.readCarName();

//๋ ˆ์ด์‹ฑ๊ฒŒ์ž„์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค.
RacingGame game = RacingGame.getInstance();

//๊ฒŒ์ž„ ๊ฐ์ฒด์— ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฒŒ์ž„ํ•  ์ž๋™์ฐจ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
game.addCar(carNames);

//์‹œ๋„ํšŸ์ˆ˜๋ฅผ ๋ฌป๋Š” ์ถœ๋ ฅ๋ฌธ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ถœ๋ ฅํ•ด์ค€๋‹ค.
UserOutput.askForTryCount();

//์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒŒ์ž„ ๋ผ์šด๋“œ ํšŸ์ˆ˜๋ฅผ ์ฝ์–ด int์— ์ €์žฅํ•œ๋‹ค.
int rounds = UserInput.readRound();

//ํšŸ์ˆ˜๋งŒํผ ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•œ๋‹ค.
game.play(rounds);

//๊ฒŒ์ž„์˜ ์šฐ์Šน์ž ๋ชฉ๋ก์„ ๊ฐ€์ ธ์™€ result์— ์ €์žฅํ•œ๋‹ค.
List<String> result = game.getWinners();

//์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒŒ์ž„ ์šฐ์Šน์ž ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
UserOutput.showWinners(result);

//์‚ฌ์šฉํ•œ Console ๊ฐ์ฒด๋ฅผ ๋‹ซ๋Š”๋‹ค.
Console.close();

 

 

3) Main()์˜ ์—ญํ• 

์ž๋ฐ” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ main์€ ์•„์ฃผ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ์‚ฌ์‹ค ์œ„์—์„œ ๋งํ•œ ์ปจํŠธ๋กค๋Ÿฌ ์ฝ”๋“œ๋ฅผ main()์— ์ ์–ด๋‘์–ด๋„ ์ถฉ๋ถ„ํžˆ ์ข‹์€ ์ฝ”๋“œ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋‚ด๊ฐ€ ๊ตณ์ด ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  Main()์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์“ด ์ด์œ ๋Š” main()์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์—ญํ• ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ฆ‰, ๊ฐ์ฒด๋Š” ๊ฐ์ž์˜ ์—ญํ• ์ด ์žˆ๊ณ  ๊ทธ ์—ญํ• ์€ ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ๋‚˜๋ˆ„์–ด 1๊ฐœ์˜ ์ฑ…์ž„๋งŒ ์ง€๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ main()์€ ์ด๋ฏธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ๋Š” ์‹คํ–‰์˜ ์—ญํ• ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์˜ ํ๋ฆ„์„ ๋‹ด๋Š” ๊ฒƒ์ด ๋ถ€๋‹ด์Šค๋Ÿฌ์› ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋‚ด ์ทจํ–ฅ์ด๊ธฐ๋„ ํ•˜๋‹ค๐Ÿค”ใ…Žใ…Ž

 

package racingcar;

import racingcar.controller.RacingGame;

public class Application {
    public static void main(String[] args) {
        RacingGame.run();
    }
}

 

 

 

 

์ด๋ฒˆ ์ฃผ์ฐจ๋„ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ๊ฐœ๋ฐœ์ž์˜ ๊ธธ์„ ๋ฉ€๊ณ ๋„ ํ—˜ํ•˜๋„ค์š”...

 

๊ทธ๋ž˜๋„ ๋‹ค๋“ค ๊ณ ์ƒ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค :)

 

๋.