19. [C++] ํด๋์ค ์์
1. ์์
Aํด๋์ค(๋ถ๋ชจ ํด๋์ค)๊ฐ ๊ฐ์ง ๊ณตํต๋ ์์๋ฅผ
์ฌ๋ฌ ํด๋์ค(์์ ํด๋์ค)์๊ฒ ์ฌ์ฌ์ฉํ๋๋ก ๋ฌผ๋ ค์ค ์ ์๋ค.
๋ถ๋ชจ ํด๋์ค๋ ์์ ํด๋์ค๋ค์ ์ถ์์ ์ธ ์กด์ฌ๊ฐ ๋๋ค.
(์์์ ์ฝ๋ ์ฌ์ฌ์ฉ์ ์ํ ๋ฌธ๋ฒ์ด๋ค.)
๋ถ๋ชจ ํด๋์ค == ๊ธฐ๋ณธ ํด๋์ค(Base Class) == ์์ ํด๋์ค == ์ํผ ํด๋์ค
์์ ํด๋์ค == ํ์ฅ ํด๋์ค(Derived Class) == ํ์ ํด๋์ค == ์๋ธ ํด๋
์์์ ํํ์๋ public ์์, protected ์์, private ์์์ด ์๋ค.
๋ณดํต ๋ถ๋ชจ์ ๋ฉค๋ฒ ์ ๊ทผ์ ์ํด public ์์์ ๋ง์ด ์ฌ์ฉํ๋ค.
CGameObject ํด๋์ค๋ฅผ CPlayer์ ์์์ํจ ๋ชจ์ต์ด๋ค.
[ ์์ ๊ฐ์ฒด(CPlayer)์ ์์ฑ ๊ณผ์ ]
๋ฉ๋ชจ๋ฆฌ ํ ๋น -> ๋ถ๋ชจ ์์ฑ์ ํธ์ถ(CGameObject) -> ์์ ์์ฑ์ ํธ์ถ.
[ ์์ ๊ฐ์ฒด(CPlayer)์ ์๋ฉธ ๊ณผ์ ]
์์ ์๋ฉธ์ ํธ์ถ(CPlayer) -> ๋ถ๋ชจ ์๋ฉธ์ ํธ์ถ(CGameObject) -> ๋ฉ๋ชจ๋ฆฌ ๋ฐํ.
์์ฑ ๊ณผ์ ์ ๊ทธ๋ฆผ์ผ๋ก ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์์ ํด๋์ค ์์ฑ์๋ ์์ ์ด ์์ํ ๋ถ๋ชจ ํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ์ด๊ธฐํํ ์๋ฌด๋ฅผ ์ง๋๋ค.
๊ทธ๋์ ์์์ ์์ฑ์๋ ๋ถ๋ชจ์ ์์ฑ์๋ฅผ ํธ์ถํ๋ ํํ๋ก
๋ถ๋ชจ ํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ์ด๊ธฐํํ๋ ๊ฒ์ด ์ข๋ค.
์์๋ฐ๋ ํด๋์ค๋ ์ด๋์ ๋ผ์ด์ ๋ฅผ ์ด์ฉํด์ ์์ํ๋ ํด๋์ค์ ์์ฑ์ ํธ์ถ์ ๋ช ์ํ ์ ์๋ค.
๊ฐ์ฒด์ ์๋ฉธ ๊ณผ์ ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
์์ ๊ฐ์ฒด๋ ๋ถ๋ชจ์ ๋ฉค๋ฒ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค.
[ ์์์ ์กฐ๊ฑด ]
is - a ๊ด๊ณ -> ~์ ~์ด๋ค.
ex) ํ์์ ์ฌ๋์ด๋ค.
CPerson (๋ถ๋ชจ) - CStudent (์์)
์ด์ ๋ฌด๊ธฐ์ด๋ค.
CWeapon (๋ถ๋ชจ) - CGun (์์)
has - a ๊ด๊ณ -> ~์ด -์ ๊ฐ๋๋ค.
์์ ๊ด๊ณ ๋ณด๋ค๋ ํฌํจ ๊ด๊ณ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ข๋ค.
has - a ๊ด๊ณ๋ ๋ค์ค ์์์ผ๋ก ๋ณ์ง๋ ์ํ์ด ์กด์ฌํ๋ค.
(๋ค์ค ์์ - ํ๋์ ์์์ด ๋ ์ด์์ ๋ถ๋ชจ๋ก๋ถํฐ ์์.
๋ค์ค ์์์ ๋ฌธ์ ์ - ๋ชจํธ์ฑ.)