์ถ์ ํด๋์ค (abstract class)
- ๋ฏธ์์ฑ ์ค๊ณ๋. ๋ฏธ์์ฑ ๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์๋ ํด๋์ค
play๋ stop์ ๋ฉ์๋๋ฅผ ํ์ธํด๋ณด๋ฉด ๋ชธํต{}์ด ์๋ค.
๋ชธํต์ด ์๋ ๋ฉ์๋๋ฅผ ์ถ์ ๋ฉ์๋(๋ฏธ์์ฑ ๋ฉ์๋)๋ผ๊ณ ํ๋ค.
์ด๋ฌํ ์ถ์ ๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์๋ ํด๋์ค๋ฅผ ์ถ์ ํด๋์ค(๋ฏธ์์ฑ ํด๋์ค)๋ผ๊ณ ํ๋ค.
์ถ์ ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค ์์ฑ์ ๋์์ ์ฃผ๊ธฐ ์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค ์์ฑ์ด ๋ถ๊ฐ๋ฅํ๋ค.
์์ ์ฝ๋์ ๊ฐ์ด ์์์ ํตํด์ ์ถ์ ๋ฉ์๋๋ฅผ ์์ฑํด์ผ ์ธ์คํด์ค๊ฐ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
์ด๋ ๊ฒ ์ถ์ํด๋์ค๋ฅผ ์์๋ฐ์ ์ถ์๋ฉ์๋์ ๋ชธํต์ ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ ๊ตฌํ์ด๋ผ๊ณ ํ๋ค.
์ถ์ ๋ฉ์๋ (abstract method)
- ๋ฏธ์์ฑ ๋ฉ์๋. ๊ตฌํ๋ถ(๋ชธํต, {})๊ฐ ์๋ ๋ฉ์๋
์ถ์ ๋ฉ์๋๋ ๊ผญ ํ์ํ์ง๋ง ์์๋ง๋ค ๋ค๋ฅด๊ฒ ๊ตฌํ๋ ๊ฒ์ผ๋ก ์์๋๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
AudioPlayer ํด๋์ค๋ ์ถ์ํด๋์ค Player์ ์ถ์๋ฉ์๋๋ฅผ ๋ชจ๋ ๊ตฌํ์ ํ๊ธฐ ๋๋ฌธ์, abstract๋ฅผ ์ ๋ถ์ฌ๋ ๋๋ค.
ํ์ง๋ง AbstractPlayer์ ์ถ์ํด๋์ค Player์ ์ถ์๋ฉ์๋๋ฅผ ํ๋๋ง ๊ตฌํ์ ํ๊ธฐ ๋๋ฌธ์, abstract๋ฅผ ๋ถ์ฌ์ผ ํ๋ค.
๋ง์ฝ ์ถ์ํด๋์ค๋ฅผ ์์์ ๋ฐ๊ณ abstract๋ฅผ ๋ถ์ด์ง ์๊ณ ์ถ์๋ฉ์๋๋ฅผ ๋ชจ๋ ๊ตฌํํ์ง ๋ชปํ์ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์ถ์ ๋ฉ์๋๋ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค. (ํธ์ถํ ๋๋ ์ ์ธ๋ถ๋ง ํ์)
์ ์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด ์ธ์คํด์ค ๋ฉ์๋์ธ play()์์๋ ์ถ์ ๋ฉ์๋์ธ play()๋ฅผ ํธ์ถํ๊ณ ์๋ค.
์ด๊ฒ์ด ๊ฐ๋ฅํ ์ด์ ๋ ์ด ์ถ์ฑํด๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ค.
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ์ถ์ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํ๊ธฐ ๋๋ฌธ์,
๊ฒฐ๊ตญ์๋ ์ด ์ถ์ํด๋์ค Player์ ์์๋ฐ๋ ์์ ํด๋์ค๋ ์ถ์ ๋ฉ์๋๋ฅผ ๋ชจ๋ ๊ตฌํ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ ๊ตฌํํ ๋ด์ฉ์ ์ ์ ์๋๋ผ๋ ๊ฒฐ๊ตญ ๊ตฌํ์ ํด์ผ ์ด ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค.
์ ๋ฆฌ
๊ตฌํ๋ถ(๋ชธํต, {})๊ฐ ์๋ ๋ฉ์๋๋ฅผ ์ถ์ ๋ฉ์๋(๋ฏธ์์ฑ ๋ฉ์๋)๋ผ๊ณ ํ๊ณ ,
์ถ์ ๋ฉ์๋(๋ฏธ์์ฑ ๋ฉ์๋)๋ฅผ ๊ฐ์ง๊ณ ์๋ ํด๋์ค๋ฅผ ์ถ์ ํด๋์ค(๋ฏธ์์ฑ ํด๋์ค)๋ผ๊ณ ํ๋ค.
์ถ์ํด๋์ค์ ์์ฑ
- ์ฌ๋ฌ ํด๋์ค์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ ์ถ์ํด๋์ค๋ฅผ ๋ฐ๋ก ์์ฑํ๊ฑฐ๋ ๊ธฐ์กด ํด๋์ค์ ๊ณตํต ๋ถ๋ถ์ ๋ฝ์์ ์ถ์ํด๋์ค๋ฅผ ๋ง๋ ๋ค.
์ผ์ชฝ์ ์ฝ๋๋ฅผ ์ถ์ํด๋์ค๋ฅผ ํตํด ์์ฑํ๋ฉด ์ค๋ฅธ์ชฝ ์ฝ๋์ ๊ฐ๋ค.
์ด๋ ๊ฒ ์ถ์ํด๋์ค๋ฅผ ํตํด์ ์์ฑํ๊ฒ ๋๋ฉด ๋คํ์ฑ์ ์ด์ฉํ ๊ฐ์ฒด๋ฐฐ์ด์ ํ ์ ์๋ค.
๋คํ์ฑ์ ํตํด์ group์ด๋ผ๋ Unitํ์ ์ ๊ฐ์ฒด ๋ฐฐ์ด ์์ Unit์ ์์๋ฐ๋ ํด๋์ค๋ค์ ๋ฃ์ด์,
group์ ๋ด์ ์ด๋ํ๋ ์ฝ๋์ด๋ค.
์ ์ฝ๋๋ ์๋์ ์ฝ๋์ ๊ฐ๋ค.
์ ์ฝ๋๋ฅผ ํ ์ค๋ก ์์ฑํ ์ฝ๋๊ฐ Unit[] group = { new Marine(), new Tank(). new Dropship() };์ด๋ค.
ํ์ง๋ง group์ ํ์ ์ Unit์ด ์๋ ์ต๊ณ ์กฐ์์ธ Objectํ์ ์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
Objectํ์ ์ผ๋ก ๋ฐฐ์ด์ด ์์ฑ ๊ฐ๋ฅํ์ง๋ง move๋ฉ์๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
์ถ์ํ๋ ๊ตฌ์ฒดํ์ ๋ฐ๋๊ฐ ๋๋ ๋ง์ด๋ผ๊ณ ๋ ํ ์ ์๋ค.
๊ตฌ์ฒดํ๋ ๋ช ํํ๊ณ ๊ตฌ์ฒด์ ์ธ ์ฝ๋์ด๊ณ , ์ถ์ํ๋ ์ ๋งคํ๊ณ ๋ถ๋ช ํํ ์ฝ๋๋ผ๊ณ ํ ์ ์๋ค.
์ถ์ํ๋ ์ฝ๋๋ ๊ตฌ์ฒดํ๋ ์ฝ๋๋ณด๋ค ์ ์ฐํ๋ค. ๋ณ๊ฒฝ์ ์ ๋ฆฌํด์ง๋ค.