*ํ์ต์ ์ํด ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ํ๋ฆฐ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ง์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
[ ์ถ์ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ฐจ์ด ]
์ถ์ํด๋์ค๋ IS - A "~์ด๋ค".
์ธํฐํ์ด์ค๋ HAS - A "~์ ํ ์ ์๋".
์ถ์ ํด๋์ค VS ์ธํฐํ์ด์ค
์ถ์ ํด๋์ค๋ ์ด๋ฅผ ์์ํ ๊ฐ ๊ฐ์ฒด๋ค์ ๊ณตํต์ ์ ์ฐพ์ ์ถ์ํ์์ผ ๋์ ๊ฒ์ผ๋ก,
์์ ๊ด๊ณ๋ฅผ ํ๊ณ ์ฌ๋ผ๊ฐ์ ๋ ๊ฐ์ ๋ถ๋ชจ ํด๋์ค๋ฅผ ์์ํ๋ฉฐ
๋ถ๋ชจ ํด๋์ค๊ฐ ๊ฐ์ง ๊ธฐ๋ฅ๋ค์ ๊ตฌํํด์ผํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
์ธํฐํ์ด์ค๋ ์์ ๊ด๊ณ๋ฅผ ํ๊ณ ์ฌ๋ผ๊ฐ์ ๋
๋ค๋ฅธ ์กฐ์ ํด๋์ค๋ฅผ ์์ํ๋๋ผ๋, ๊ฐ์ ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
ํด๋์ค์ ๋ณ๋๋ก ๊ตฌํ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๋์์ ํ๋ค๋ ๊ฒ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์ถ์ํด๋์ค(abstract) | ์ธํฐํ์ด์ค |
๋จ์ผ ์์๋ง์ด ๊ฐ๋ฅํ๋ค | ๋ค์ค ์์์ด ๊ฐ๋ฅํ๋ค |
๋ชจ๋ ์ ๊ทผ ์ ์ด์๋ฅผ ์ฌ์ฉํ ์ ์๋ค public, protected, private |
public ์ ๊ทผ ์ ์ด์๋ง ์ฌ์ฉํ ์ ์๋ค (๊ธฐํ ์ ๊ทผ ์ ์ด์ ์ฌ์ฉ์ ์ฝ๋์ ๋นจ๊ฐ์ค ์ข์ข ๊ทธ์ด์ง๋ค!) |
๋ณ์์ ์์๋ฅผ ์ ์ธํ ์ ์๋ค | ์์๋ง ์ ์ธํ ์ ์๋ค |
์ถ์ ๋ฉ์๋์ ์ผ๋ฐ ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ์๋ค (์ถ์ ๋ฉ์๋๋, ์ ์ธ๋ถ๋ง ์์ฑํ๊ณ ๊ตฌํ๋ถ๋ ์์ฑํ์ง ์์ ์ฑ๋ก ๋จ๊ฒจ ๋ ๊ฒ) |
์ถ์๋ฉ์๋๋ง ์ ์ธํ ์ ์๋ค |
[ ์ถ์ํด๋์ค์ ์ธํฐํ์ด์ค์ ๊ณตํต์ ]
1. ์์๋ฐ์ ์์ ํด๋์ค ์์์ ์ถ์ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ๋๋ก ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์ ํ๋ค.
2. ์ธ์คํด์คํ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
์์๋ฐ์ ํด๋์ค์ ์ ์ฒด์ฑ์ ์ถ์ํด๋์ค ์์์ ํตํด ๋ง๋ค์ด์ฃผ๊ณ ,
์์๋ฐ์ ํด๋์ค๋ค์ด ํ ์ ์๋ ๊ธฐ๋ฅ๋ค์ ์ธํฐํ์ด์ค ์์์ ํตํด ๊ตฌํํ๋ค.
์์ ์์ฝ์ ์จ๋๊ธฐ๋ ํ์ง๋ง
์ถ์ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ฐจ์ด๋ฅผ ์์ ์์ผ๋ก ํ์ด์จ๋ณด๊ณ ์ ํ๋ค.
์ ์ OOP์ ๊ฐ๋ ๋ถํฐ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ณด๊ฒ ๋ค.
OOP(Object-Oriented Programming)์ด๋ ๊ฐ์ฒด์งํฅ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ ๋ปํ๋ค.
OOP๋ ์ฝ๊ฒ ๋งํ์๋ฉด, ํ๋ก๊ทธ๋๋จธ๊ฐ ํ์ค ์ธ๊ณ ์ฌ๋ฌผ์ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์ฎ๊ฒจ์ ์์ฑํ๋ค๋ ๊ฐ๋ ์ด๋ค.
ํ์ค ์ธ๊ณ์ ์ฌ๋ฌผ๋ค์ ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํ์ฌ ๊ฐ๋ฐ์ ์งํํ๋ค๋ ๋ป์,
๊ฐ์ฒด๋ก๋ถํฐ ๊ฐ๋ฐํ๊ณ ์ ํ๋ ํน์ง๊ณผ ๊ธฐ๋ฅ์ ๋ฝ์์ ํ๋ก๊ทธ๋๋ฐํ๋ค๋ ๊ฒ์ด๋ค.
C์ธ์ด๋ก ๋ํ๋๋ ์ ์ฐจ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฒฝ์ฐ์๋ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ธ์ํ๋ ๊ฒ์ด๋ฉฐ, JAVA๋ก ๋ํ๋๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๊ฐ์ฒด์ ์ํธ์์ฉ์ผ๋ก ์ธ์ํ๋ ๊ฒ์ด๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌ์ฑ ์์๋ ํด๋์ค์ด๋ค. ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ ค๋ฉด ๊ฐ์ฒด๊ฐ ์ด๋ค ์์ฑ์ด ์๊ณ ์ด๋ค ๊ธฐ๋ฅ(ํ์)๋ฅผ ํ๋์ง๋ฅผ ์ค๋ช ํ๋ ์ค๊ณ๋๊ฐ ํ์ํ๋ฐ ์ด ์ค๊ณ๋๊ฐ ๋ฐ๋ก ํด๋์ค์ด๋ค. ์ธ์์ ์๋ ๋ฌผ์ฒด๋ ํ์, ๊ฐ๋ ์ ๋ณธ๋ฐ ํด๋์ค๋ผ๋ ์ค๊ณ๋์ ๊ฐ์ฒด์ ์์ฑ๊ณผ ํ์๋ฅผ ์ ์ํ๊ณ ์ด ํด๋์ค๋ฅผ ์ด์ฉํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. (์ฐธ๊ณ ๋ก ๊ฐ์ฒด์ ์์ฑ์ ํด๋นํ๋ ๊ฒ์ ํ๋๋ผ๊ณ ๋ถ๋ฅด๊ณ ํ์๋ ๋ฉ์๋๋ผ ์ ์ํ๋ค.)
์ด๋ ๊ฒ ํด๋์ค๋ฅผ ์์ฑํ ๋, ์ต์ํ์ ๊ณตํต ์์๋ ํ์์ ์ธ ์์๋ง์ ์ถ์ถํ๋ ๊ฒ์ '์ถ์ํ'๋ผ๊ณ ํ๋ค.
์ด๋ ๊ฒ ์ถ์ํํ ํด๋์ค ๋ฉค๋ฒ๋ฅผ ์์ ํด๋์ค์ ๊ณตํตํํ๋ ๋ฐฉ๋ฒ์ด ์์์ด๋ค.
(์์์ ๋ค๋ฅธ ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋์ค๋ฅผ ๋ง๋ค๊ฒ ํ๊ณ , ์ค๋ณต๋๋ ์ฝ๋๋ฅผ ํผํ ์ ์๊ฒ ํ๋ค.)
๋ถ๋ชจ ํด๋์ค ๋ด์ ํจ์๋ฅผ ์์ ํด๋์ค์ ๋ง์ถ์ด ์ปค์คํฐ๋ง์ด์ฆํ๋ ๊ฒ์ ์ค๋ฒ๋ผ์ด๋ฉ์ด๋ผ๊ณ ํ๋ค.
ํญ์ ์ค๋ฒ๋ผ์ด๋ํ ์์ ํด๋์ค์ ํจ์๋ค๋ง์ ํธ์ถํ ๊ฒ์ด ์๋ช ํ ๊ฒฝ์ฐ์ ๋ถ๋ชจ ํด๋์ค์ ํจ์๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑํ์ง ์์๋ ๋๋ค! C++์ ๊ฒฝ์ฐ, ๋ถ๋ชจ ํด๋์ค์ ๋ฉค๋ฒ ํจ์๋ ๋ด๋ถ๊ฐ ์์ด ๋จ์ง ์กด์ฌํ๊ธฐ๋ง ํ๋ ํจ์์ธ ์์ ๊ฐ์ ํจ์๋ก ์์ฑํ๋ค. ์์ ๊ฐ์ ํจ์๊ฐ ํฌํจ๋์ด ์๋ ํด๋์ค๋ฅผ ํน๋ณํ '์ถ์ ํด๋์ค'๋ผ๊ณ ์ผ์ปซ๋๋ค.(์ฐธ๊ณ : ์ฝ๋ฉ์ ์์, TCP School) ์์ ๊ฐ์ ํจ์(C#์์ ์ถ์ํ ํด๋์ค์ ์ถ์ํ ํจ์)๋ ์๋ ์์ฒด๊ฐ ๋ฉค๋ฒ ํจ์๊ฐ ๋ฐ๋์ ์์ ํด๋์ค ๋ด์์ ์ค๋ฒ๋ผ์ด๋ ๋ ๋ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์์ ํด๋์ค์์ ์ฌ์ ์ ํ์ง ์์ผ๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ ๊ฒ C++์์๋ ๊ตฌํ๋ถ ์์ด ์์ํด๋์ค์์ ๋ฐ๋์ ๊ตฌํํด์ผํ๋ ํจ์๋ฅผ ์์๊ฐ์ํจ์๋ผ๊ณ ๋ถ๋ ๋ค.
C#์์๋ ์ถ์(abstract)ํจ์๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ์ถ์ํจ์๋ฅผ ํฌํจํ๋ ํด๋์ค์ abstract ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ ํด๋์ค๋ผ๊ณ ๋ช
์ํด์ผํ๋ค.
์ถ์ํด๋์ค์ ์์ฑ์
'์ด ํด๋์ค๋ก๋ ์ง์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ง ์๊ณ , ์์ํด์ ๋ฐ์ ์์๋ค์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ฑฐ์์~
c# ์ถ์๋ฉ์๋(c++์์๊ฐ์ํจ์)๋ ์์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ํด์ ๊ตฌํํ์ธ์!' ๋ผ๊ณ ๊ณตํํ๋ ๊ฒ์ด ๋๋ค.
์ฐธ๊ณ : C/C++ ๊ฐ๋ฐ์์ C# ๋ฐฐ์ฐ๊ธฐ - ๊ฐ์ํจ์, ์์๊ฐ์ํจ์, ์ถ์ํด๋์ค (tistory.com)
๊ทธ์ผ๋ง๋ก ์์ํ๊ธฐ ์ํ ํด๋์ค์ด๋ค.
class ์์ "abstract" ์์ฝ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ํตํด์ ๊ตฌํํด์ผํ๋ค๋ ๊ฒ์ ์๋ ค์ฃผ๊ณ
์ ์ธ๋ถ๋ง ์์ฑํ๋ ์ถ์๋ฉ์๋๋ฅผ ์ ์ธํด์ฃผ๋ ๊ฒ์ด ์ฝ๋ ํ๊ธฐ ๋ฐฉ์์ด๋ค.
์ธํฐํ์ด์ค๋ ์กฐ๊ธ ๋ ํนํ ํด๋์ค์ด๋ค.
์ถ์ ํด๋์ค๋ณด๋ค ์ถ์ํ ์ ๋๊ฐ ๋์
์ถ์ ํด๋์ค๊ฐ ํต์ฌ ๊ณตํต ๋ณธ์ง์ ๋ํ๋ด๊ธฐ ์ํด ๋ค์ํ ์ ๊ทผ์ง์ ์๋ฅผ ๊ฐ์ง ์ผ๋ฐ ๋ฉ์๋, ๋ฉค๋ฒ ๋ณ์๋ฅผ ๊ตฌ์ฑ์์ผ๋ก ๊ฐ์ง ์ ์๋ ๋ฐ๋ฉด์
์ธํฐํ์ด์ค๋ public ์ถ์ ๋ฉ์๋๋ง์ ๊ฐ์ง ์ ์๋ค.
~able๋ก ๋๋๋ ์ธํฐํ์ด์ค๋ค์ด ๋ง๋ค.
ํด๋์ค์ ๋ค๋ฅด๊ฒ ๋ค์ค ์์์ด ๊ฐ๋ฅํ๋ค.
<์ค๊ณ ์์>
๋๋ฌผ(๋ฌผ๊ณ ๊ธฐ, ํ ๋ผ) ๊ทธ๋ฆฌ๊ณ ์ฉ์ฌ(์ ์ฌ, ๋ง๋ฒ์ฌ)๊ฐ ์๋ ๋ฌด์ธ๋ ๊ฒ์์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ์ ํด๋ณด๊ฒ ๋ค.
์ฌ๋ฌ ๋ช ์ ํ๋ ์ด์ด๋ค์ด ์ ์ฌ, ๋ง๋ฒ์ฌ ์ค์์ ์ง์ ์ ์ ํํ ์ ์๋ค.
์ง์บ๋ฆฌ๋ ์ ์ฌ๋ก ๋ก๊ทธ์ธ, ๋์ฝํค๋๋จผ์ ๋ง๋ฒ์ฌ๋ก ๋ก๊ทธ์ธํ๋ค.
์ ์ฌ๋ ๋ฌผ์ ๋ฟ์ผ๋ฉด ์์ํ ์ ์๋ค. ๋ง๋ฒ์ฌ๋ ์์ํ ์ ์๋ค.
๋ฌผ๊ณ ๊ธฐ๋ ํค์์น ์ ์๋ค. ํ ๋ผ๋ ํค์ ์น ์ ์๋ค.
์ด ๋ด์ฉ์ ๊ฐ๋จํ ์ค๊ณํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
Chracter์ด๋ผ๋ ์ถ์ํด๋์ค๋ฅผ ํ๋ ๋ง๋ค์ด์ Warrior์ Magician ํด๋์ค์ ์์ํด์ค๋ค.
Animal์ด๋ผ๋ ์ถ์ํด๋์ค๋ฅผ ํ๋ ๋ง๋ค์ด์ ๋ฌผ๊ณ ๊ธฐํด๋์ค์ ํ ๋ผํด๋์ค ๊ฐ๊ฐ์๊ฒ ์์ํด์ค๋ค.
Swimable๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ํ๋ ๋ง๋ค์ด์,
Warrior์ ๋ฌผ๊ณ ๊ธฐ์๊ฒ๋ง ์์ํด์ฃผ๋ฉด
์ง์บ๋ฆฌ์ ๋ฌผ๊ณ ๊ธฐ๋ (๋์ฝํค๋๋จผ๊ณผ ํ ๋ผ์๊ฒ ์ด๋ ํ ๊ฐ์ญ์์ด)
ํค์์ ์น ์ ์๊ฒ ๋์๋ค.
์ด๋ ๊ฒ
'~ํ ์ ์๋' ์ธํฐํ์ด์ค ํ๋ ์ ๋ง๋ค์ด์ ์์๋ฐ์ ์ถ์ํด๋์ค(is a)๊ฐ ๋ค๋ฅธ ํด๋์ค์ ์ฒ์ฒ ๋ถ์ผ ์ ์์ ๋ฟ๋๋ผ
์ถ์ํด๋์ค๋ฅผ ์์๋ฐ์ ํด๋์ค ์๋์์๋ ํน์ ๊ธฐ๋ฅ์ ๋ฝ๋ผ ์ ์๋ ์์ ํด๋์ค์๊ฒ๋ง ๋ถ์ฌ์ค ์ ์๋ค.
'
์ถ์ํด๋์ค๋ ์ต์๋จ ๊ณตํต ๋ณธ์ง์ ์ ์ํ๋ ์ฉ,
์ธํฐํ์ด์ค๋ ์ต์๋จ ์กฐ์ํด๋์ค๊ฐ ๊ฐ์ผ๋ ๋ค๋ฅด๋ ํน์ ๊ธฐ๋ฅ์ ํด์ผํ ๊ฒฝ์ฐ ๋ถ์ฌ์ฃผ๋ฉด ์ฉ๋๋ก ์ฌ์ฉํ๋ฉด ๋๋ค.
'OOP > OOP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
OOP์ 3์์๋ ์บก์ํ, ์์, ๋คํ์ฑ์ด๋ค. (0) | 2022.01.19 |
---|