CodeGym /Java Course /๋ชจ๋“ˆ 2: ์ž๋ฐ” ์ฝ”์–ด /์ธํ„ฐํŽ˜์ด์Šค๋Š” ํŠน์ • ๋™์ž‘์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค๋Š” ํŠน์ • ๋™์ž‘์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ 2: ์ž๋ฐ” ์ฝ”์–ด
๋ ˆ๋ฒจ 4 , ๋ ˆ์Šจ 2
์‚ฌ์šฉ ๊ฐ€๋Šฅ

"์•ˆ๋…•ํ•˜์„ธ์š”, ์•„๋ฏธ๊ณ ! ์˜ค๋Š˜์€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ํด๋ž˜์Šค, ๊ฐ์ฒด, ์—”ํ‹ฐํ‹ฐ๊ฐ€ ํŠน์ • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” ๋ง์„ ์ž์ฃผ ๋“ฃ๊ณค ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ฌด์Šจ ๋œป์ธ๊ฐ€์š” ? "

ํŠน์ • ๋™์ž‘์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค - 1

๋„“์€ ์˜๋ฏธ์—์„œ ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด TV ๋ฆฌ๋ชจ์ปจ์€ ์›๊ฒฉ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ๊ฐœ๋Š” ๋ช…๋ น์„ ์ดํ•ดํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐœ๊ฐ€ ์Œ์„ฑ(์ œ์–ด) ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์š”์•ฝํ•˜์ž๋ฉด, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์ด๋ฉฐ ์–‘ ๋‹น์‚ฌ์ž๊ฐ€ ํ‘œ์ค€์„ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์ด ๊ฐœ์—๊ฒŒ "์•‰์•„"๋ผ๊ณ  ๋งํ•˜๋ฉด ๊ทธ์˜ ๋ช…๋ น์€ ยซ๊ฐœ ์Œ์„ฑ ์ œ์–ด ์ธํ„ฐํŽ˜์ด์Šคยป์˜ ์ผ๋ถ€์ด๋ฉฐ ๊ฐœ๊ฐ€ ๋ช…๋ น์— ์ˆœ์ข…ํ•˜๋ฉด ๊ฐœ๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ๊ฐœ์ฒด, ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํด๋ž˜์Šค๊ฐ€ ํŠน์ • ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ํŠน์ • ๋ช…๋ น์˜ ยซ์‹คํ–‰์„ ์ง€์›ยปํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฌด์—‡์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

1) ๊ฐ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํด๋ž˜์Šค ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์–‘ ๋‹น์‚ฌ์ž๋Š” ์ƒ๋Œ€๋ฐฉ์ด ์œ ์‚ฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋‹Œ ์ž์‹ ์ด ์•Œ๊ณ  ์žˆ๋Š” ์ •ํ™•ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•œ๋‹ค๊ณ  100% ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2) ๊ฐ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ด๋ฅผ ์ง€์›ํ•  ํด๋ž˜์Šค์— ํŠน์ • ์ œํ•œ์„ ๋ถ€๊ณผํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค(๊ฐœ๋ฐœ์ž)๋Š” ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ƒ์†๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ๊ฒฐ์ •ํ•˜์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋Œ€ ๋ฒ”์œ„ ๋‚ด์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์—๊ฒŒ "์•‰์•„"๋ผ๊ณ  ๋ช…๋ นํ•œ ๋‹ค์Œ 5๋ถ„ ๋™์•ˆ ์ œ์ž๋ฆฌ์—์„œ ๋’น๊ตด๊ณ  ์•‰์œผ๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ๋Œ€์‹  ๋‹น์‹ ์˜ ๋‹ค๋ฆฌ๋ฅผ ๋ถ™์žก๋Š”๋‹ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์„ ์‹คํ–‰ํ•ด๋„ ์˜ˆ์ƒํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

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

์ž๋ฐ” ์ฝ”๋“œ ์„ค๋ช…
interface Saveable
{
 void saveToMap(Map<String, Object> map);
 void loadFromMap(Map<String, Object> map);
}
โ€” ์ง€๋„์—์„œ ๊ฐ์ฒด๋ฅผ ์ €์žฅ/๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค.
interface Drawable
{
 void draw(Screen screen);
}
โ€” ์ „๋‹ฌ๋œ Screen ๊ฐœ์ฒด ๋‚ด๋ถ€์— ๊ฐœ์ฒด๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.
class PacMan implements Saveable, Drawable
{
โ€ฆ
}
โ€” ๋‘ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ํด๋ž˜์Šค.

์ฆ‰, ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค(์ธํ„ฐํŽ˜์ด์Šค ๊ทธ๋ฃน)๋ฅผ ์ง€์›ํ•˜๋ ค๋ฉด ํด๋ž˜์Šค๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1) ์ƒ์†

2) ์„ ์–ธ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

3) ๋ฉ”์„œ๋“œ๋Š” ์˜๋„ํ•œ ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์— ๋Œ€ํ•ด ์ „ํ˜€ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋‚˜๋จธ์ง€ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋Š” ํด๋ž˜์Šค์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"์ฝ”๋“œ๊ฐ€ ๋‚ด ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ์•Œ ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?"

"๋‹น์‹ ์ด 1๋…„ ์ „์— ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ๋˜๋Š” ๋‹น์‹ ์˜ ์นœ๊ตฌ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ์„œ ๊ฒŒ์ž„ ์—”์ง„์„ ๊ตฌ์ž…/๋ผ์ด์„ ์Šคํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ๋‹น์‹ ์€ ๊ฒŒ์ž„์„ ์œ„ํ•œ ์ž‘์—… ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ๊ฐœ์ฒด. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ํด๋ž˜์Šค๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ ์ž‘์šฉ์ด ๋ฐœ์ƒํ•˜๋„๋ก ํ•˜๋ฉด ๊ฐ์ฒด์™€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ."

"์ € ๋ฉ€๋ฆฌ! ๊ทธ๊ฒŒ ๊ฐ€๋Šฅํ•œ์ง€ ๋ชฐ๋ž์–ด์š”."

"๋ชจ๋“  ํฐ ํ”„๋กœ์ ํŠธ๋Š” ์ด๋ ‡๊ฒŒ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์˜ค๋ž˜ ์ „์— ์ฒ˜์Œ๋ถ€ํ„ฐ ์“ฐ๊ธฐ๋ฅผ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค."

์‚ฌ๋žŒ๋“ค์€ ๋˜ํ•œ ๋งค๋ฒˆ ์ˆ˜ํ•™๊ณผ ์•ŒํŒŒ๋ฒณ์„ ์žฌ๋ฐœ๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ทธ๋“ค์€ ๊ทธ๋“ค๋ณด๋‹ค ๋จผ์ € ๋ฐœ๋ช…๋œ ๋ชจ๋“  ๊ฒƒ์„ ์—ฐ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION