์ค์ค๋ก ๊ณต๋ถ๊ฒธ ๋ถ์กฑํ ๋ถ๋ถ์ ์ฑ์ฐ๊ธฐ ์ํด ๊ธ ํ๋ ์ผ๋ค ๋ค๋ฅธ ์๊ฐ ์์ผ๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ๋ฉด ๋งค์ฐ ๊ฐ์ฌ
๊ฐ์ฒด์งํฅ์ ๋ ๊ฐ์ง ๋จ์ด๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ ๋ฐ๊ฐ๋ด๋ฉด ๊ฐ์ฒด/์งํฅ์ผ๋ก ๋๋๋ค.
์๋ฌด๋๋ ๊ฐ์ฒด์งํฅ์ด ๋ญ์ง ์๊ธฐ ์ํด์๋ ๊ฐ ๋จ์ด์ ์ ์๋ถํฐ ์์์ผ ํ ๊ฒ ๊ฐ์ผ๋ ํ๋ํ๋ ์๊ฐํด๋ณด๋๋ก ํด๋ณด์
๋จผ์ ๊ฐ์ฒด๋ ๋ญ๊น? ์ฝ๊ฒ ์ด์ผ๊ธฐ ํ๋ฉด ์ค์กดํ๋ ๋ชจ๋ ๊ฒ ์ด๋ค.
๊ทธ๊ฒ ํ์ค์ ์กด์ฌํ๋ ์ฌ๋ฌผ์ด๋, ๋ด ๋จธ๋ฆฌ์์ ์กด์ฌํ๋ ๊ฐ๋
์ด๋ ์ค์กดํ๊ธฐ๋ง ํ๋ฉด ์๋น ๋
ธ๋ค, ๊ทธ๋์ ๊ต์ฅํ ๋์ ๋๋์ธ๋ฐ ๋ญ๊ฐ ์ดํดํ๊ธฐ๊ฐ ํ๋ ๋๋์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฒด๋ ์ด์ง ์ ์ ์์ผ๋ก ๋ฐ์ด๋๊ณ ์งํฅ์ ์ด์ผ๊ธฐ ํด๋ณด์.
์งํฅ....ํน์ ํ ๋ฐฉํฅ์ ํฅํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์ฌ์ ํ ์์ง๊น์ง๋ ์ ์ดํด๊ฐ ์๋๋ ๋๋์ด๋ค..๊ทธ๋ฌ๋ ๊ฐ์ฒด์งํฅ์ด๋ผ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ๋ก ์ด ๋ฑ์ฅํ๊ธฐ ์ด์ ์๊ฑธ ๋ณด๋๋ก ํด๋ณด์.
๊ฐ์ฒด์งํฅ ์ด์ ์๋ ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ์ ํ์๋ค๊ณ ํ๋๋ฐ ์ฌ๊ธฐ์ ํ๋ ์๋ฌธ์ ๋์ ธ๋ณธ๋ค.
์ ๊ฐ์ฒด์งํฅ์ ๊ฐ์ฒด์ ์ด๋ผ๊ณ ์ด์ผ๊ธฐ ์ํ๋๊ฑฐ์ง? ์ ์ฐจ์ ์ ์ ์ ์ฐจ์ ์ด๋ผ๊ณ ์ด์ผ๊ธฐ ํ๋๊ฑฐ์ง?
์ฌ๊ธฐ์๋ถํฐ๊ฐ ์์์ด๋ค.
1+1์์ 1์ ๊ฐ์ฒด๊ณ +๋ ์ ์ฐจ๋ค, ์์์ ํ์๋ก ์ด์ผ๊ธฐํ ์ ์๋๋ฐ ์์๋ ํด์์ ์ฌ์ง๊ฐ ๋๋ฌด๋๋ ๋ง์ผ๋ ํ์๋ง์ ๋ช
ํํ๋ค.
๋ํ๋ค๋ ํ์๋ฅผ ๋ํ๋ค ๋ผ๋ ๊ฒ ์ด์ธ์ ๋ค๋ฅธ๊ฒ์ผ๋ก ํํํ ์ ์๋? ์ผ๋จ ๋๋ ๋ชปํ๊ฒ ๋ค.
๊ทธ๋ฌ๋ 1์ ์ปดํจํฐ๊ฐ ๋ ์ ๋ ์๊ณ ๊ทธ๋ํฝ์นด๋์, cpu, ๋ฉ์ธ๋ณด๋, ํ์์ํ๋ผ์ด, ์ผ์ด์ค๋ก ์ด๋ฃจ์ด์ง ๋ฌด์ธ๊ฐ๊ฐ ๋ ์ ๋ ์๋ค. ์๋๋ฉด ๋ฐ๋๋๋ก ํด์ํ ์ ๋ ์๊ณ ๊ทธ ๊ฐ๋ฅ์ฑ์ ๋ฌดํํ๋ค.
์ด์ฒ๋ผ ํด์, ์ ์ฐจ๋ ๋ช
ํํ ํด์ํ ์ ์๋ค.
์ด๋ฌํ ํน์ฑ ๋๋ฌธ์ ์ ์ฐจ ๋ผ๋ ๊ฒ์ ์๋ฒฝํ ๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฐจ์ ์ด๋ผ๊ณ ๋ถ๋ฅผ ์ ์๋ ๊ฒ์ด๋ ๊ฐ์ฒด๋ ๋ช
ํํ ํด์ํ ์ ๋ ์๊ณ ์ฌ์ง์ด ์ด๊ฒ ์ด๋ป๊ฒ ๋ง๋๋์ง ์กฐ์ฐจ ์ ํํ๊ฒ ๋ชจ๋ฅธ๋ค.
๊ฐ์ฒด๋ฅผ ์ ํํ ์ดํดํ๊ณ ์ด๋ป๊ฒ ๋ง๋๋์ง ์๊ฒ ๋๋ ์๊ฐ ์ฐ๋ฆฌ๊ฐ ์ฌ๋ ์ฐ์ฃผ์ ๋ฒ์น์ ์์ ํ ์ดํดํ๊ณ ๊ตฌํํ ์ ์๊ฒ ๋๋ ๊ฒ ์ด๋ ๋ค๋ฆ ์๋ค.
ํ์ง๋ง ์์์๋ ์ด์ผ๊ธฐ ํ๋ฏ ์์ง ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๋ฅผ ๊ตฌํํ๊ฒ ๋ค. ํ์ง๋ง ์์ ํ๋ ๋ชปํ๋ ๊ฐ์ฒด๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ์งํฅ ํ๊ฒ ๋ค ๋ผ๋ ์๋ฏธ๋ฅผ ๋ด์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ๋ก ์ ๊ฐ์ฒด์งํฅ ์ด๋ผ๊ณ ์ด์ผ๊ธฐ ํ๋ค๊ณ ์๊ฐํ๋ค.
ใ ใ ใ ใ ๋ด๊ฐ ๋ฉด์ ๊ด์ด๋ฉด ๊ฐ์ฒด์งํฅ์ด ๋ญ๋ํ์๋ ์ด๋ ๊ฒ ๋๋ตํ๋ฉด ์๋ฝ์๋ฏ
์ด์ ๋๊ธ ๋ฌ์์ฃผ์ ๊น์ ๋นํ๋ ์ข ๋ถํ๋๋ ค๋ ใฑใ ?
์ฒ ํ์ ํ์ธ์
๋ ๋ค ๊ฐ์ด ๊ฐ์ผ๋๋๊ฑฐ๋ผ๊ณ ์๊ฐํด์
Object-Oriented Programming, Procedural Programming ๋ฒ์ญ๋ ๋ช ์นญ๋ณด๋จ ์๋ฌธ์ด ์ด๋ป๊ฒ ์๊ฒจ๋ฌ๋์ง ์ฐพ์๋ณด์๋๊ฒ ๋์๋ฏ ๊ฒ์ํด๋ณด๋๊น ์จ๋ฐ ์ผ์ด๋ผ๋ ๋ถ์ด ๋ง๋ ์ฉ์ด๋์
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en
๋๊ตฐ๊ฐ๊ฐ
์จ๋ฐ ์ผ์ด์๊ฒ ๊ด๋ จํด์ ์ง๋ฌธํ ๋ด์ฉ์ด ๋จ์ ์๋๋ฐ
์๊ฐ ์์ฒด๋ ์๋ฌผํ์ ์ธ ๋ถ๋ถ์ ์ธํฌ๊ฐ๋ ์์, ๊ฐ ์ธํฌ๋ผ๋ ๊ฐ๋ ์์ ์์ํ๋ค๊ณ ์ด์ผ๊ธฐ ํจ
์ฌ๊ธฐ์๋ถํฐ๋ ๋ฉ์ผ์๋ ์๋ ์ด์ผ๊ธฐ์ธ๋ฐ
๋ค๋ง ๊ทธ๊ฒ์ ๊ฐ์ฒด๋ผ๊ณ ๋ฐ๊พผ ์ด์ ๋ ๊ณ ์ ํ ํน์ฑ๊ณผ ๊ธฐ๋ฅ(ํ์)๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด์๋ ์ข ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ ํฉํ ํํ์ด์ฌ์๋ผ๊ณ ์๊ฐํจ
์ด๊ฑด ์ฌ๋ด์ธ๋ฐ ๊ทธ๋ฅ ๊ฐ์ธ์ ๊ฒฝํ์ผ๋ก๋ ๋ณธ๋ฌธ์ ์ ์ด๋จ๋ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ๊ธฐ์ ์ ์ธ ๋ถ๋ถ๋ค์ ๊ตฌํ์ ํ์๊ณ ํนํ ๊ฐ ๊ฐ์ฒด์ ๊ด์ ์ ์ดํดํ๊ณ ์ ํฉํ๊ฒ ์ค๊ณ ํ๋๋ฐ ๋์์ด ๋์๋ค๊ณ ์๊ฐํจ
procedure ๋ฅผ ์ ์ฐจ๋ก ๋ฒ์ญํด๋์ผ๋๊น ์ด๋ฐ ๋นก๋๊ฐ๋ฆฌ๊ฐ ํ๋์ฉ ๋์ค๋๊ตฌ๋
๋๊ฐ ๋งํ procedure๊ฐ ์ procedure์ธ์ง๋ ๊ณ ๋ฏผ ์ํด๋ดค๋?
procedure ๋ ๊ทธ ์กด์ฌ ์์ฒด์ ํ์ฐ์ ์ผ๋ก ๋์์ด ๋ดํฌ๋์ด ์๊ธฐ ๋๋ฌธ์ procedural ์ธ๊ฑฐ๊ณ , object ๋ ๋์์ด ๋ดํฌ๋์ด ์์์๋ ์๋์๋ ์๊ธฐ ๋๋ฌธ์ (object ์ ์กด์ฌ ์์ฒด๊ฐ ์ด๋ค ์์ฉ์ ๋ด๋ณดํ์ง ์๊ธฐ ๋๋ฌธ์) oriented ์ธ๊ฑฐ์. oriented ๊ฐ ์ง์ญ๋นํด์ ๊ทธ๋ ์ง oop ๋ ๋์์ค ์ ์ผ๋ก๋ "๊ฐ์ฒด์ ๋ง์ถ์ด์ง ํ๋ก๊ทธ๋๋ฐ" (๊ฐ์ฒด ํ์ฉ์ ์ต์ ํ๋ ํ๋ก๊ทธ๋๋ฐ) ์ ๊ฐ๊น์. ํ๊ธ ๋ฒ์ญ๋ง ๊ฐ์ง๊ณ ์๋ฌธ๋จ์ด์ ๋ดํฌ๋ ์ฌ์์ ๊ณ ์ฐฐํ๊ณ ์์ผ๋ ํฉ๋นํ๊ฑฐ์ง
์์ฑ๋๋ค ๋ผ๋ ๋์ ์์ด ๊ฐ์ฒด๊ฐ ์กด์ฌํ ์ ์์?๊ฐ์ฒด์๋ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ๋์์ด ๋ดํฌ๋์ด์์ ์ ๋ฐ์ ์์
๋์ด๋ง์ ใ ใ
๋นก๋๊ฐ๋ฆฌ ์ปท ใ ใ
์ ๋ชฉ ๋ณด์๋ง์ ๊ทธ๋ฅ '๊ฐ์ฒด', '์งํฅ'์ด ์ ๋ถ ์๋๊ฐ? ์๊ฐํ๋๋ฐ ์ด๋ฏธ ๋ณธ๋ฌธ ๋ง์ง๋ง์ ๋ณธ์ธ๋ ๋๊ฐ์ด ์๊ฐํ๋ค. ๋น์ฐํ๊ฒ์ ๊ธธ๊ฒ๋ ์ผ๋ค์ผ - dc App
๋๋ ๋งจ ์ฒ์์ ๊ฐ์ฒด์งํฅ์ด๋ผ๋๊ฑธ ๋ค์์๋ ๊ถ๊ธํ๊ฒ ๋ง์๊ฑฐ๋ , ๊ทธ๋ฅ ๊ทธ ๊ณ ๋ฏผ์ ๋ด์ฉ๋ค์
๊ฑ ๊ฐ์ฒด์งํฅ์ 4๊ฐ์ง๋ง ๊ธฐ์ตํ๋ฉด๋จ 1.์ถ์ํ 2.์บก์ํ 3.์์ 4.๋คํ์ฑ ๊ทธ๋ฆฌ๊ณ ๊ฐํน ์๋ ๋ฒ์ญ์ฑ ๋ณด๊ณ ๊ฐ๋ฅด์น๋ ๋ณ์ ๋ค์ด ๊ฐ์ฒด์งํฅ์ ๋ฐ๋๋ฅผ ์ ์ฐจ์งํฅ์ด๋ผ๊ณ ๊ฐ๋ฅด์น๋๋ฐ ๊ทธ๊ฑฐ ๊ฐ์๋ฆฌ๋๊น ์ฃฝ๋นต๋ ๋ฆฌ์ ๋น์ฅ C++๋งํด๋ ๊ฐ์ฒด์งํฅ์ด๋ฉด์ ์ ์ฐจ์งํฅ์ ์ธ์ด์
ใ ใ ๋๋ ๋์ํจ, ๋ค๋ง ์ ๊ทธ๋ ๊ฒ ํด์ผํ๋๊ฐ๋ ์ค์ํ๋ค๊ณ ์๊ฐํจ
๊ฑ ๊ฐ์ฒด ์งํฅ, ์ ์ฐจ ์งํฅ์ ๊ฐ๋ฐํ ๋ ๊ฐ์ฒด๋ฅผ ์ค์ฌ์ผ๋ก ๋ณด๋๋ ์ ์ฐจ๋ฅผ ์ค์ฌ์ผ๋ก ๋ณด๋๋์ ์ฐจ์ด์ง.. ์์ค ์ธ ๋ ์ธ๋ฌผ์ ์ค์ฌ์ผ๋ก ๋๋๋, ์ฌ๊ฑด์ ์ค์ฌ์ผ๋ก ๋๋๋ ์ ๋์ ์ฐจ์ด์. ๊ฐ์ ์ฅ๋จ์ด ์๋๊ฑฐ๊ณ . ๋ฌด์จ ์๋ฒฝํ ๊ตฌํ์ด๋ ๋ญ๋๋ ๋ฌด๊ดํจ. ๊ฒฐ๊ตญ์ ์์ค์ ์ฐ๋ ๊ฒ ์ค์ํ๊ฑฐ์ง. ๋ญ ์ค์ ์ผ๋ก ์ฐ๋
์๋์ ๋งํ์ง๋ง ๊ฐ์ฒด์งํฅ ์ ์ฐจ์งํฅ์ ๋ฐ๋๋๋ ๊ฐ๋ ์ด ์๋ ใ ใดํ๋ฑ์์ ์ ์๋ชป๋ฒ์ญ๋ ์ฑ ๋ค๋ณด๊ณ ๊ณต๋ถํ๊ฑฐ๊ฐ์๋ฐ ๋ค์ ๊ณต๋ถํ์
๊ทธ๋ฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ ์ข ๊ณต๋ถํด๋ณด๋๊ฒ ๋์ ๊ฑฐ ๊ฐ๋ค.. ๊ฐ์ฒด / ์ ์ฐจ / ํจ์, ํ๋ก๊ทธ๋จ์ ์ํ, ์ธ์ด์ ์ค๊ณ ๋ฑ๋ฑ ์ชฝ์ ๊ธฐ์ด์ ์ธ ๊ฐ๋ ์ ํ๋๋ ๋ชจ๋ฅด๋ ์ฌ๋ ๊ฐ์๋ณด์ฌ.
๊ฐ์ฒด์งํฅ ์ข "๊ฐ์ฒด"๋ผ๋ ๊ฐ๋ ๊ณผ ์ด์ง ๋ค๋ฅด๋ค ๋ด ใ ใ ๋๋ ์ด ๊ณ ๋ฏผ ์ค๋ํ๋๋ฐ ์ง๊ธ์ ๊ฒฐ๋ก ์ ํํ ๋งํ๋ ๊ฐ์ฒด์งํฅ์ "๋ชจ๋ํ ์งํฅ"์ด๋ผ๋ ๊ฑฐ์
ํํ๋ค ์ํ๋ ํจ๊ณผ๋ ๋ชจ๋ํ๊ฐ ๋ง๋ค๋๊ฒ์ ๋์ํจ
์ฑ ์ ๋ถ์ฐ์ ์ด๋ป๊ฒ ํ ์ง์ ๋ํ ๋ด์ฉ์ด๋ผ๊ณ ๋ณด๋ฉด ๋จ ์ต์ํ ์ด๊ฒ๋ง ์์๋ ํ์ ์ ์ ๊ทผ์ ํ์๊ฐ ์ด๋ค ์ฉ๋์ธ์ง ์ ๊ฒ
ใ ใ ์๋ฉ๋ฆฌ์นด๋ ธ๋ผ๋ ๊ฐ์ฒด ์์ ํฌํจ๋์ด์๋ ์ปคํผ์์ก์ด ์๊ธฐ๊ฐ ์๋ฉ๋ฆฌ์นด๋ ธ์ ์ผ๋ถ์ธ๊ฑธ ์๋๊ฑฐ ๋งํผ ๋ง ์๋๋๊ฒ๋ ์์ง
๋ฌด์งํ ์ฑ๋ก ์ฒ ํ์ ํ๋ ค๊ณ ํ๋ ๋ณด๋ ์ ์ฅ์์ ๋๋ผํ๊ธฐ๋ง ํ๋ค ๊ฐ๋ฐ ๊ฒฝํ์ด๋ ๋ ์๊ณ ํด๋ผ ์ด๋ฐ๊ฑด
๋ฌด์งํ๋๊น ์ฒ ํ์ ๊ธฐ์ค๋ ๊ฐ์ ธ๊ฐ๋ฉด์ ๋ฐฐ์ฐ๋ ๊ฑฐ๊ณ ๋ฌด์๋ณด๋ค๋ ๋๊ฐ ๋ณด๊ณ ๋๋ผํ๋ ๋ง๋ ์๋ฐ ์๋ ๊ฐ๋ฐ๋ ํ๊ณ , ์ด๋ฐ ์ด์ผ๊ธฐ๋ ํ๋ฉด์ ๋ด ์๊ฒฌ๋ ๋นํ ๋ฐ๊ณ ๋ค์ํ ์๊ฒฌ๋ ๋ค์ผ๋ฉด์ ๋ฐฐ์๊ฐ๋๊ฑฐ์ง ๊ฒ์ด๋ ๋ฌด์งํจ์ด ์์ด์ ๊ทธ๋ ๊ฒ ๋๋์ง๋ ๋ชจ๋ฅด๊ฒ ๋ ธ ใ ใ
์ฌ์ด๋ถํ์ฆํ
๊ทธ๋์ ๋ฐฐ์ฐ๋ ค๊ณ ๊ธ ์ด๊ฑฐ๋ค ๋ญ๋ผ๋ ๊ฐ๋ฅด์ณ์ฃผ๋ฉด ๊ฐ์ฌํ๊ฒ ์ - dc App
๋์ฒด ๋ค๋ฅธ ์๊ฐ์ด ์๋๋ผ ํ๋ฆฐ ์๊ฐ์ ์จ๋๊ณ ๋ญ ์๊ฒฌ์ ๋ฐ๊ฒ ๋ค๋๊ฑฐ์? ์ฝ๋ฏธ๋๋ค ์ง์ง ใ ใ
๊ทธ๋๊น ๋ญ๊ฐ ํ๋ ธ๋์ง ์ข ์ด์ผ๊ธฐ ํด์ฃผ์ ๋๊ธ ์ ๋ฐ์ด ๋น๋์ด๊ณ ์ ๋๋ก ๋ ๋นํ์ ๋ช๊ฐ ์๋๋ฐ - dc App
"๊ฐ์ฒด์ ์์ฑ๋ ๋์์ด๋ค" ์ด์๋ฆฌ๋ณด๋๊น ๊ฐ์ฒด๋ ํ๋ก์์ ธ์ ์ฐจ์ด๋ ์ธ์ง๋ฅผ ๋ชปํ๊ณ ์๋๋ฐ ๋ญ "๊ฐ์ฒด์ ๊ตฌํ์ ์งํฅํ๋ค" ๋ ์๋ฆฌ๋ฅผ ํ๋๊ฑฐ์? ์ ๋๊ธ์ด oop๊ฐ ๋ญ์ง ๋ค ์ค๋ช ํด๋จ๋๋ฐ
๊ทธ ๋ถ๋ถ์ด ์ ํ๋ ธ๋ค๊ณ ์๊ฐํ๋์ง ๋ฌผ์ด๋ด๋ ใฑใ ? - dc App
๊ทธ๋ฆฌ๊ณ ์์บ ๊ณต๊ฒฉ์ ์ด๋? ๋น์ฒด ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ๋ ธ - dc App
foo.bar() vs bar(foo) - dc App
์ฐ๋ฆฌ๋ง์ ์ข ๋ฐฐ์ฐ์ ์ผ๋จ์.
์ฃผ๋ฑ์ด ์กด๋์์จ๋จ๋๋ฐ ๋ด๋๊ธ์์ ์ ํ์๋ฆฌํ๊ณ ์์ง
์ฌ๋์ด ๋ง๋ ์ธ์ด์ ๊ทธ๋ ๊ฒ ํฐ ์๋ฏธ ๋ถ์ฌ ํ์ง๋ง์ ใ ใ ๊ฒฐ๊ตญ ๊ทธ ๋จ์ด ๋ง๋ค์ด์ง ์๋ ํด๋น๋ฌธํ ํ๋ฆ ๊ธฐ์ค์ ์์ฐ๋ฒ์น ๋ญ ๊ทธ๋ด๊ฑฐ ์๋๋๊น ํธ๋ค๊ฐ ใด