๋๋ค๋๋ฒ๋ ๊ตฌํ์ฒด์ด๋๊น Number๋ก ๋ฐ์
์ด๋ฌ๋ฉด ๋ชจ๋๊ฐ ์์ง์ด๋๋ฐ ?
์์กด์ฑ ์ฃผ์ DI
์คํ๋ง ํ๋ ์ ์ํฌ๋ DI๋ฅผ ๊ตฌํํ๋๋ก ๊ฐ์ ๋์ด ์๋ค.
์์กด์ฑ ์ฃผ์
์ ์ํด์๋ ์คํ๋ง์ ์จ์ผํ๋ค๋ ๋ง์ด ์๋๋ฐ ๊ทธ๋ ์ง ์๋ค.
์คํ๋ง ํ๋ ์ ์ํฌ๋ฅผ ์ฐ์ง ์์ ์ฑ๋ก DI๋ฅผ ํด๋ณธ ์ ์ด ์์ต๋๊น ?
์์ฑ์ ์์กด์ฑ ์ฃผ์
โ randomNumbers๋ฅผ ๊ฐ์ฒด์ ๋ณ์๋ก ๋๊ณ ์๋๋ฐ, move()์ ์ธ์๋ก ๋๊ฒจ๋ฐ๋ ๊ฒ์ ์ด๋จ๊น์?
-> ์๊ด ์์
move ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผํ๋
์ธ์๊ฐ ๋ง์์ก์ ๋๋ ์์ฑ์๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ์ข์ ์๋..
โ ์์กด์ฑ ์ฃผ์
์ ์ํ setter๋ ๊ด์ฐฎ๋์ ?
-> ์ด๋ค ๊ฐ์ฒด๋์ ๋ฐ๋ผ ๋ค๋ฅธ๋ฐ, ์ง๊ธ์ Cars์ ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ์ ์์์์๋
final๋ก ์ ์ธํด์ฃผ๋ ๊ฒ์ด ์ข๋ค. setter ์จ๋ ์๊ด์ ์๋ค.
Dependency Injection์ธ๋ฐ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ์์กดํ๋ ๊ฒ์ ์ธ๋ถ์์ ์ฃผ์ ํ๋ ๊ฒฝ์ฐ๋ฅผ DI๋ผ๊ณ ํ์ง ์์๊น์ฌ..?
setter๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ถ์ ์ ๋ตํจํด์ด ์ข์ ์์๊ฐ ๋์ง์์๊น์?
์ ๋ ๋ด๋ถ ๋ก์ง์ ๊ฐ์ฒด๋ก ์ถ์ถํ ์ ์์๋ ์ถ์ถํ ํ ์ฃผ์ ๋ฐ์ ์ฌ์ฉํ๋ ์์ผ๋ก ๋ณ๊ฒฝํ ๋ โDIํ๋คโ ํ๋๊ฑฐ ๊ฐ์์
๊ฐ์ฒด์งํฅ์ ์ค๊ณ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๊ฐ์ ํ๋ ฅ์ ๋ง๋ค์ด๋ด๋ ์ผ์ด๊ณ , ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๊ฐ์ ์์กด์ฑ์ด ํ์ํด์.
-> ๊ทธ๋ผ setter๋ฅผ ํ์ฉํ ์ ์์ง์์๊น์ฉ
์์กด์ฑ์ DI๊ฐ ์๋ ๋ด๋ถ์์ ๋ง๋ค์ด ์ค ์๋ ์์ง๋ง, ์ด๋ ฌ ๊ฒฐ์ฐ ๊ฐํ ๊ฒฐํฉ์ฑ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ์ ์์ ๋กญ์ง ์์ DI๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํด์
์ ์ง๋ณด์ํ๊ธฐ ์ข์ ์ฝ๋
์์ ์ฝ๋๊ฐ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๋ค.
ํด๋์ค๊ฐ ์์ผ๋ฉด ๋ฉ์๋์ ํ๋ฌํผํฐ๊ฐ ๋ ๊ฐ๊น์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์์ง๋๊ฐ ๋์์ง๋ค.
๊ฐ๋จํ ๋งํด ๊ฐ๊ฐ ๋ฉ์๋๊ฐ ๋ชจ๋ ํ๋๋ฅผ ์ฌ์ฉํ๋ค.
๋ถ๋ณ ๊ฐ์ฒด๋ก ๋ง๋์ธ์
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ side eggect๋ฅผ ๋ง๋ค์ง ์๋๋ค.
๊ฐ๋ณ ๊ฐ์ฒด๋ ๋ง๊ณ ๋ถ๋ณ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ผ side effect๊ฐ ์๊ธฐ์ง ์๋๋ค.
๋ถ๋ณ ๊ฐ์ฒด๋ก ๋ง๋ค๋ค๋ณด๋ฉด ์ธ์คํด์ค๊ฐ ๋ง์์ ธ์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ค .
-> ์ด๋ ์บ์ฑ ์ ๋ต์ ํตํด ํด์ํ์
๋ถ๋ณ ๊ฐ์ฒด๋ก ๋ง๋ค๋ค ์ฑ๋ฅ ์ด์๊ฐ ์๊ธฐ๋ฉด ๊ฐ๋ณ ๊ฐ์ฒด๋ ์บ์ฑ์ ์ฌ์ฉํด๋ผ
๋ชจ๋ ํด๋์ค๋ฅผ ๋ถ๋ณ์ผ๋ก ๋ง๋ค๋ฉด ์ ์ง๋ณด์๊ฐ ์ฝ๋ค.
ํ์ฌ ๋ถ๋ณ ๊ฐ์ฒด๊ฐ ์๋๋ค.
Position์ด final์ด ์๋๋ค.
c๋ฉ์๋๋ค์ด car๋ฅผ ๋ฆฌํดํ๋๋ก ๋ณ๊ฒฝํ๋ค ?
์๊ฑฐ๋ ๊ฐ๋ณ ๊ฐ์ฒด
์ฌ์ด๋ ์ดํํธ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๊ฐ์ ๋ฐ๊พธ๋ฉด ๊ณ์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ฃ ?
๋ฌด์จ ๊ฐ์๋ฆฌ์ผ ํ ์ ์์ง๋ง ๋ถ๋ช ํ ๋ค๋ฅด๋ค. ๊ทผ๋ฐ ๊ณ์ ๊ฐ์ฒด๋ฅผ ํ ๋น ๋ฐ์์ผ ํ๋ค
์ํ๊ฐ ๋ฐ๋๋ฉด ๊ณ์ ์๋ก์ด ๊ฒ์ ๋ฐํํด์ฃผ์ด์ผ ํ๋โฆ
๋ถ๋ณ ๊ฐ์ฒด๋ list ๋ด๋ถ์ ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ๋บด๋ ๊ฒ๋ ๋ถ๋ณ ๊ฐ์ฒด ์ด๋ค.
์ด๋ ๊ฒ clearํ๋ ๊ฒ๋ ํ์ฉ์ด๋ค.
โ๊ทธ๋ ๋ค๋ฉด, ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ์ด ๋ถ๋ณ์ด๋ฉด, ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ์ด ์ฐธ์กฐํ๊ณ ์๋ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๋ถ๋ณ์ด๋ค ๋ผ๊ณ ๋ณด๋ ๊ฑด๊ฐ์?
-> ๊ทธ๋ ๋ค.
๋ถ๋ณ ๊ฐ์ฒด์ ์์ ๊ฐ์ฒด์ ์ฐจ์ด์ ๋ํด ๊ณต๋ถํด ๋ณด์ธ์.
๋ถ๋ณ ๊ฐ์ฒด๋ก ๊ตฌํํ๋ฉด ์ข์ ์
- ์๋ณ์ ๊ฐ๋ณ์ฑ ๋ฌธ์ ๊ฐ ์๋ค.
- ์คํจ ์์์ฑ์ด ์๋ค - ์์ ํ๊ณ ๊ฒฌ๊ณ ํ ์ํ์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ฑฐ๋, ์คํจํ๊ฑฐ๋ ๋ ์ค ํ๋๋ง ๊ฐ๋ฅํ๋ค.
- ์๊ฐ์ ๊ฒฐํฉ์ ์ ๊ฑฐํ ์ ์๋ค. - ๊ฐ๋ณ ๊ฐ์ฒด๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ฐ์ฐ๋ค์ ์์๋ฅผ ์ผ์ผ์ด ๊ธฐ์ตํด์ผํ๋ค.
- ์ฌ์ด๋ ์ดํํธ๋ฅผ ์ ๊ฑฐํ ์ ์๋ค.
- null ์ฐธ์กฐ๋ฅผ ์์จ ์ ์๋ค.
- ์ค๋ ๋ ์ธ์ดํํ๋ค.
- ๋ ์๊ณ ๋ ๋จ์ํ ๊ฐ์ฒด๋ฅผ ๊ตฌํํ ์ ์๋ค.
public ์์๋ฅผ ์ฌ์ฉํ์ง ๋ง์ธ์.. ?
์์๋ผ๊ณ ๋ถ๋ฆฌ๋ public static final
ํ๋กํผํฐ๋ ๊ฐ์ฒด ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์ฌ์ฉํ์ง ๋ง๋ผ๋ ์ด์ ๋ ๊ฐ์ฒด๋ค์ ์ด๋ค ๊ฒ๋ ๊ณต์ ํด์๋ ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋
๋ฆฝ์ ์ด์ด์ผ ํ๋ฉฐ, ๋ซํ ์์ด์ผ ํ๋ค.
ํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก๋ public ์์๋ฅผ ์ฐ๋๊ฒ ๊ด๋ก์ด๋ค.
์์๋ฅผ ์ธ๊ฑฐ๋ฉด ๊ฐ์ฒด๋ก ๋ง๋ค์ด๋ผ??
OOP์์ ํผ๋ธ๋ฆญ ์์๋ฅผ ์ ๋๋ก ์ฌ์ฉํ์ง ๋ง๋ผ๊ณ ํ๋ค.
์ฌ์ํ ์์๋ผ๋ ํญ์ ์์ ํด๋์ค๋ฅผ ์ด์ฉํด ๋์ฒดํ ๊ฒ์ ์ถ์ฒํ๋ค.
enum๋ public static final์ ์ฐ๋ ๊ฑด๋ฐ ์ฐ์ง ๋ง๋ผ!
๊ทธ๋ฅ ์ค๊ณ๊ฐ ์๋ฒฝํ๋ค ์ถ์ ๋ ๋์ ํด๋ผ ^^
์ธ์คํด์ค ๋ณ์๋ 4๊ฐ ์ดํ๋กโฆ ๊ทผ๋ฐ. ๋ฒ์ธ๋ก ๋ฐ์ฝ๋ ์ดํฐ ํ๋๋ ํ์ฉ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
position, name์ ํด๋์ค ์ ๊ทผ์๋ฅผ ์์ ๋ ๊ฒ์ ??
๊ทธ๋ฌ๋ฉด ํจํค์ง ๋ด๋ถ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์๊ณ , ์ธํฐํ์ด์ค๋ก ๋ค ๋ง๋ค๋ ค๋ฉด ๋๋ฌด ๋ง์์ง๋ ๋ฌธ์ ์ ํด๊ฒฐ
์คํ๋ง ํ๋ ์ ๋ญํฌ๋ ๊ฐ์ฒด๋ค์ ์์กด์ฑ์ ์์ค๋ค.
์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ์ํ ๊ฐ์์๋ฐ.