C++๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค
OOP(๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ) 4๊ฐ์ง ํน์ฑ
1. ์ถ์ํ : ์ด๋ค ํน์ ์ ๋ณด๋ฅผ ํ์ํด์ผ ํ๊ณ ์ด๋ค ์ ๋ณด๋ฅผ ์จ๊ฒจ์ผํ๋์ง ์๋ณํ๋ ๋ฐ ๋์์ด ๋๋ ๊ธฐ์
"ํต์ฌ์ด ๋ญ์ผ?" "์ด๋ ๋ ๋ฒจ์์ ์ค๋ช ๋๋ฆด๊น์?"
- ์ ์ฐจ๋ก์์ ์ถ์ํ : ์ธ๋ถ ์ฌํญ์ ๋ฌด์ํ๋ฉด์ ํ์ ์ ๋ณด๋ฅผ ์ถ์ถ
- ์ค์ฒด(entity)๋ก์์ ์ถ์ํ : ์ค์ ์ ๋ํ ๋ชจ๋ธ(model), ๋ทฐ(view), ํํ(representation)
2. ์บก์ํ : ์จ๊ฒจ์ผ ํ ๋ด์ฉ์ ์จ๊ธฐ๊ณ ํ์ํ ๋ด์ฉ์ ํ์ํ๋ ๋ฐฉ์์ผ๋ก ์ ๋ณด๋ฅผ ํจํค์งํ๋ ๊ธฐ์
(ex ํจ์, ํด๋์ค, ๋ชจ๋ ๋ฑ "์บก์ํ๋ ๋ชจ๋ ๊ฒ์ด ์จ๊ฒจ์ ธ ์๋๊ฐ?")
- ์ ์ฐจ๋ก์์ ์บก์ํ : ๋ฌผ๋ฆฌ์ , ๋ ผ๋ฆฌ์ ์ผ๋ก ๋๋ฌ์ธ๋ ํ์
- ์ํฐํฐ๋ก์์ ์บก์ํ : ํจํค์ง ํน์ ์ธํด๋ก์
- ๋ชฉ์ ? ์ ๋ณด ์๋ : ๊ธฐ๋ฅ์ ์ํํ๋ ๋ฐ ํ์ํ ๋ด๋ถ ๊ตฌํ์ด๋, ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ์์ฌ๊ฒฐ์ ์ ๋ด๋ถ์ฌํญ์ ์จ๊น
3. ์์ : ํ์ ํด๋์ค๊ฐ ๊ธฐ๋ณธํด๋์ค์ ๋ชจ๋ ๋ฉค๋ฒ๋ณ์์ ๋ฉค๋ฒํจ์๋ฅผ ํฌํจํจ
- ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋์ค์ ์ ์ฉ๋จ
- ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ ์ฝ๋ ๊ธธ์ด๋ฅผ ์ค์
4. ๋คํ์ฑ : ์๋ก ๋ค๋ฅธ ์ ํ์ ์ํฐํฐ์ ๋ํ ๋จ์ผ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ฑฐ๋, ๋จ์ผ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์ ํ์ ๋ํ๋ด๋ ๊ฒ
(๋์ผํ ํจ์ ์ด๋ฆ์ด ๋ค๋ฅด๊ฒ ๋์ํ ์ ์์ - ํจ์ ์ค๋ฒ๋ก๋ฉ, ํด๋์ค ๋ฉค๋ฒ ํจ์ ์ค๋ฒ๋ผ์ด๋ฉ ๋ฑ)
- ๊ธฐ๋ณธ์ ์ผ๋ก ํจ์๋ ํด๋์ค์ ๋ฉค๋ฒํจ์์ ์ ์ฉ๋จ
- ๊ฐ์ฒด๋ ์ปดํ์ผ ํ์์ด๋ ๋ฐํ์์ ์ด๋ค ํํ์ ํจ์๋ฅผ ์คํํ ์ง ๊ฒฐ์ ํ ์ ์์
- ์ปดํ์ผ ํ์ ๋คํ์ฑ(์ค๋ฒ๋ก๋)๊ณผ ๋ฐํ์ ๋คํ์ฑ(์ค๋ฒ๋ผ์ด๋)์ด ๋ ์ ์์
Role, Responsibility, and Collaboration ์ด๋?
๊ฐ์ฒด๋ ๊ฐ์ฒด๋ก์ ์กด์ฌํ๋ ๊ฒ์ด ์๋๋ผ ์์ฒญ(request)๊ณผ ์๋ต(response)์ ํตํด ๋ค๋ฅธ ๊ฐ์ฒด(object)์
ํ๋ ฅ(collaboration)ํ๋ ๊ณผ์ ์์์ ํน์ ํ ์ญํ (role)์ ๋ถ์ฌ๋ฐ๋๋ค๋ ๊ฒ์ด๋ค.
์ญํ (role)์ด๋ ์ด๋ค ํ๋ ฅ์ ์ฐธ์ฌํ๋ ํน์ ํ ๊ฐ์ฒด๊ฐ ํ๋ ฅ ์์์ ์ฐจ์งํ๋ ์ฑ ์(responsibility)์ด๋ ์๋ฌด๋ฅผ ๋งํ๋ค.
๊ฐ์ฒด ์งํฅ(object-oriented)
- ์ํ(state)์ ํ๋(behavior)์ ํจ๊ป ์ง๋ ์์จ์ ์ธ ๊ฐ์ฒด
- ์ ์ ํ ์ฑ ์์ ์ํํ๋ ์ญํ ๊ฐ์ ์ ์ฐํ๊ณ ๊ฒฌ๊ณ ํ ํ๋ ฅ ๊ด๊ณ๋ฅผ ๊ตฌ์ถ
- ํ๋ฅญํ ๊ฐ์ฒด์งํฅ ์ค๊ณ์๊ฐ ๋๊ธฐ ์ํด์๋?
1. ์ฝ๋๋ฅผ ๋ด๋ ํด๋์ค์ ๊ด์ ์์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฐ์ฒด์ ๊ด์ ์ผ๋ก ์ฌ๊ณ ์ ์ค์ฌ์ ์ ํํ๋ ๊ฒ
2. ์ด๋ค ํด๋์ค๊ฐ ํ์ํ๊ฐ๊ฐ ์๋๋ผ ์ด๋ค ๊ฐ์ฒด๋ค์ด ์ด๋ค ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ํ๋ ฅํ๋๊ฐ์ ์ง์ค
** ๊ฐ์ฒด์งํฅ์ ๊ฐ์ฒด๋ฅผ ์งํฅํ๋ ๊ฒ์ด์ง ํด๋์ค๋ฅผ ์งํฅํ๋ ๊ฒ์ด ์๋ **