01A. ๊ฐ์ฒด ๊ฐ๋
01A. ๊ฐ์ฒด ๊ฐ๋ ๊ด๋ จ
์ํํธ์จ๋ฌ๋ฅผ ๊ธฐ๋ฅ์ค์ฌ์ผ๋ก ์ค๊ณํ์ ๋์ ๋ฌธ์ ์
C, ํ์ค์นผ, ์ค๋๋ ๋ฒ ์ด์ง ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋๋ถ๋ถ '์ด๊ฒ์ ํ๊ณ ๋ค์์ ์ ๊ฒ์ ํ๋ค'๋ ์์ ์๊ฐ ์์ผ๋ก ์ฒ๋ฆฌํ ๋ด์ฉ์ ์ ๋ ์์ฐจ ์ฒ๋ฆฌ, ์กฐ๊ฑด ์ฑ๋ฆฝ์ ๋ฐ๋ผ ์ฒ๋ฆฌ ๋ด์ฉ์ ์ ํํ๋ ๋ถ๊ธฐ, ๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ๋ช ๋ฒ์ด๊ณ ๋ํ์ดํ๋ ๋ฐ๋ณต๋ฌธ, ์ด๋ ๊ฒ ์ธ ๊ฐ์ง ๊ธฐ๋ณธ ์ ํ์ ์กฐํฉํด์ ํ๋ก๊ทธ๋จ์ ๋ง๋ญ๋๋ค. ์ด๋ฐ ์ธ์ด๊ฐ ์ ์ฐจํ ์ธ์ด์ ๋๋ค.
๊ฐ์ฒด์งํฅ์ด ๋์ค๊ธฐ ์ ์๋ ์ํํธ์จ์ด ์ค๊ณ์์ ํ๋ก๊ทธ๋จ์ ์ฒด๊ณํ๋ ๊ธฐ๋ฅ ๋ชจ์์ด๋ผ๊ณ ๋ณด๊ณ ์๊ตฌํ ์ฌ์์ ์ ์ฐจ๋ ํจ์๋ก ๊ตฌํํ๋ ๊ฒ์ ํ๋ก๊ทธ๋จ ์์ฑ์ด๋ผ๊ณ ํ์ต๋๋ค. ๋ฐ๋ผ์ ์ํํธ์จ์ด์ ๋ํ ์๊ตฌ์์ ๊ตฌํ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ๋ฝ์๋ด๊ณ ์ฌ์ฉํ ์๋ฃ ํ์์ ์ ํด ์ด๊ฒ์ ์กฐํฉํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๋ ๊ฒ์ด ์ํํธ์จ์ด ์ค๊ณ์์๋ ํฐ ๊ด์ฌ๊ฑฐ๋ฆฌ์์ต๋๋ค.
๊ฐ๋จํ ์๋ก ํ์ฌ์์ ๋ฌผ๊ฑด์ ๊ด๋ฆฌํ๊ณ ๊ตฌ๋งคํ๋ ์ ๋ฌด๋ฅผ ์๋ํํ๋ ๊ฒ์ ์๊ฐํด๋ด ์๋ค. ์ด๋ค ๋ถ์์์ ๋ฌผ๊ฑด ๊ตฌ๋งค๋ฅผ ์์ฒญํ๋ฉด ์ฐ์ ๋ถ์์ ํ ๋น๋ ์์ฐ์ ํ์ธํ๋ ์์ ์ ํฉ๋๋ค. ๊ธฐ์กด์๋ ๋ฌผ๊ฑด ๊ตฌ๋งค๋ฅผ ์์ฒญํ๋ฉด ์ด๋ฏธ์ง์ ์ ๋ ฅ์ฉ ์ ์ฐจ ์ค๊ณ, ์ฌ์ฉํ๋ ์๋ฃ์ ํ์ ์ ์, ์๋ฃ๊ฐ ๋ฐ๋ฅด๊ฒ ๋ค์ด์๋์ง ํ์ธํ๋ ํจ์ ์ ์, ์์ฐ ์๋ฃ ์ ์์ ํด๋น ์๋ฃ์ ์ ๊ทผํ๋ ์ ์ฐจ ์ ์์ฒ๋ผ ์ ๋ฌด๋ฅผ ์ ์ฐจ์ ํจ์๋ก ๋๋๊ณ ํ์ํ ์๋ฃ์ ํ์ ์ ์๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ค๊ณํ์ต๋๋ค.
ํ์ง๋ง ์ํํธ์จ์ด์ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ์ด ํ ์์ด ๋ฐ๋๋๋ค. ์ง๊ธ๊น์ง๋ ์ข ์ด ์๋ฅ๋ก ๋๊ฒผ๋ ๊ตฌ๋งค ์์ฒญ์ ์น ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฅํ๊ฑฐ๋ ๋ถ์๋ณ, ๋ฌผ๊ฑด๋ณ๋ก ๊ตฌ์ ์ด๋ ฅ ์ผ๋์ ํ์ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๊ณ ๋ง ํด๋ ์ด์ ์ ์ค๊ณํ ์ํํธ์จ์ด๋ฅผ ๋ง์ด ๋ณ๊ฒฝํด์ผ ํ์ต๋๋ค. ๊ธฐ๋ฅ์ ์ํํธ์จ์ด์ ๋ฐ๋ผ๋ ๋ณธ์ง์ด๋ฏ๋ก ์๋นํ ์ฝ๊ฒ ๋ฐ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ฅ ์ค์ฌ์ผ๋ก ์ค๊ณํ ์ํํธ์จ์ด๋ ๋ณ๊ฒฝ์ ์ทจ์ฝํด์ ์ ์ง ๋ณด์ํ๋ ๋ฐ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค.
๊ฐ์ฒด๋ก ๋ชจ๋ธํ
1980๋ ๋ ํ๋ฐ๋ถํฐ ๊ฐ์ฒด์งํฅ (Object-Oriented)์ด ์ฃผ๋ชฉ๋ฐ๊ธฐ ์์ํ์ต๋๋ค.
์ฐ์ ์ปดํจํฐ์์์ ๊ตฌํ ๋ฐฉ๋ฒ์ ์๊ฐํ์ง ๋ง๊ณ ๋์ ์๋ฏธ๋ก ์ดํด๋ณด๋ฉด ๊ฐ์ฒด(Object)๋ ์ฌ๋์ด '๋ฌผ๊ฑด'์ผ๋ก ์๋ก ๊ตฌ๋ณํด์ ์ธ์ํ๋ ๋์์ ๋งํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ๋ฌ๋ถ์ด ์์ ๋ค๊ณ ์๋ ์ฑ ์ '๋ฌผ๊ฑด'์ ๋๋ค. ๋ฉ๋ชจ์ฅ์ด๋ ์ฑ ์, ์๊ณ, ์คํ ๋ฐ์ด, ์๋์ฐจ, ์ฒญ๊ตฌ์, ์๊ธ ๋ช ์ธ, ๋์๊ด, ๊ตฌ์ฒญ ๊ฐ์ ๊ฒ๋ '๋ฌผ๊ฑด' ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด์๋ ์์ฑ(attribute)์ด ์์ด์ ๋ฉ์์ง(message)๋ฅผ ๋ฐ์ผ๋ฉด ๊ทธ์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ํฉ๋๋ค. ์์ฑ์ด๋ ์๋์ฐจ๋ผ๋ฉด ๋ช ๋ช ์ ํ์ธ ์ ์๋๊ฐ, ๋ฌด์จ ์์ธ๊ฐ, ํ์ฌ ์์ ๋ช ํฌ๋ก๋ฏธํฐ๋ก ๋ฌ๋ฆฌ๋๊ฐ์ ๊ฐ์ ๋์์ ์ฑ์ง์ด๋ ๋ด๋ถ ์ ๋ณด๋ฅผ ๋งํ๋ฉฐ, ์ํ ๋๋ ํ๋กํผํฐ(property)๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค. ๋ฉ์์ง๋ ๊ฐ์ฒด์์ ๊ฐ์ฒด๋ก ๋ณด๋ด๋ ์ ๋ณด ์ ๋ฌ๋ก, ์ด๋ค ๊ฒ์ ์ ํ๊ฑฐ๋ ๋ฌธ์ํ๊ฑฐ๋ ์ฒ๋ฆฌ๋ฅผ ์๋ขฐํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
๊ฐ์ฒด์งํฅ์ ์ด๋ฐ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ํํธ์จ์ด๋ฅผ ๋ถ์, ์ค๊ณ, ๊ตฌํํ๋ ๋ฐฉ์์ ๋๋ค.
์์ ๋ดค๋ ๋ฌผ๊ฑด ๊ด๋ฆฌ์ ๊ตฌ๋งค์ ์ ์ฉํด๋ด ์๋ค. ๋นํ ๊ด๋ฆฌ๋ผ๋ ๋ณผํ์ด๋ ๋ณต์ฌ ์ฉ์ง๊ฐ์ ์๋ชจํ์ ์ด๋ ์ ๋ ์์๋๊ณ ์์ต๋๋ค. ๊ฐ ๋ถ์์์ ์์ฒญํ์ ๋ ์ฌ๊ณ ๊ฐ ์ถฉ๋ถํ๋ค๋ฉด ๋ฌผํ์ ๋ฐ๋ก ๋๊ธฐ๊ณ ๊ฒฝ๋ฆฌ๊ณผ์ ๊ฒฐ์ ๋ฅผ ์์ฒญํฉ๋๋ค. ์ฌ๊ณ ๊ฐ ์๋ค๋ฉด ์์ ์ ๋ฌผํ์ ๋ฐ์ฃผํ๊ณ ๋ถ์์์ ์จ ์ฃผ๋ฌธ ์๋ขฐ๋ ๋ฏธ๊ฒฐ์ ํจ์ ๋ฃ์ด๋ก๋๋ค. ๋ฌผํ์ด ๋์ฐฉํ๋ฉด ๋ฏธ๊ฒฐ์ ํจ์์ ํด๋น ๋ฌผํ์ ์ฃผ๋ฌธํ ์ฃผ๋ฌธ์๋ฅผ ๊บผ๋ด ์ฃผ๋ฌธํ๋ ๋ฌผ๊ฑด์ ๋ถ์๋ก ๋ณด๋ด๊ณ ๋์์ ๊ฒฐ์ ๋ฅผ ๊ฒฝ๋ฆฌ๊ณผ๋ก ์์ฒญํฉ๋๋ค.
์ ์ดํด๊ฐ ๋์ง ์์ ์ ์๊ฒ ์ง๋ง [๊ทธ๋ฆผ 1-1]์ ๋ณด๋ฉด์ ๋ค์ ์ฝ์ผ๋ฉด ์ข ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์๊ฒ๋๋ค. ์ด ๊ทธ๋ฆผ์์๋ ํ์์ด ๊ฐ์ฒด, ํ์ดํ๊ฐ ๋ฉ์์ง ์ก์ ์ ์๋ฏธํฉ๋๋ค. ๊ฐ์ฒด ์์ฑ์ ์ ๋์์ง๋ง ์ฌ๊ณ ๋ผ๋ฉด ๋ณผํ์ด๋ ๋ณต์ฌ ์ฉ์ง ๊ฐ์, ๋ฏธ๊ฒฐ์ ํจ์ด๋ผ๋ฉด ์ฒ๋ฆฌํ์ง ์์ ์ฃผ๋ฌธ์ด ์ ๋ณด๋ก ์์ฌ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฃผ๋ฌธ์์ฒด๋ '์ฃผ๋ฌธ ์ฉ์ง' ๊ฐ์ฒด๋ก ํํํฉ๋๋ค. ๋ช ๊ฐ์ง ๊ฐ๋ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ ๋ฆฌํ ๋๋ [๊ทธ๋ฆผ 1-1]์ฒ๋ผ ๊ทธ๋ฆผ์ ๊ทธ๋ ค์ ์๊ฐ์ ์ ๋ฆฌํ๋ ๊ฒ ์ข์ผ๋ฉฐ, ์ด๊ฒ์ ๊ทธ๋๋ก ์ํํธ์จ์ด ๋ชจ๋ธ๋ก ์ฌ์ฉํ๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ์๋ฌด๊ณผ ๊ฐ์ฒด๊ฐ ๋นํ ๊ด๋ฆฌ ๊ฐ์ฒด์ '๋ณผํ 10๊ฐ๊ฐ ํ์ํจ'์ด๋ผ๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด ๋นํ ๊ด๋ฆฌ๊ณผ ๊ฐ์ฒด๋ ์ฐฝ๊ณ ์ ์๋ ์ฌ๊ณ ๊ฐ์ฒด ์์ฑ์ธ '๋ณผํ ์ฌ๊ณ '๋ฅผ ์กฐ์ฌํด์ ํ์ํ๋ค๋ฉด ์์ ๊ฐ์ฒด์ '๋ณผํ์ ๋ฐ์ฃผํจ'์ด๋ผ๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ค๋ช ํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์์๋ ๊ธฐ๋ฅ์ด ๋๋ฌ๋์ง ์์ต๋๋ค. ๊ฐ ๋ถ์์์ ์๊ตฌ๊ฐ ์น ๊ธฐ๋ฐ์ผ๋ก ๋ฐ๋๊ฑฐ๋ ๋ฐ์ฃผ ์ด๋ ฅ ํ์ธ ๊ธฐ๋ฅ์ ๋ํ๋๋ผ๋ ์ด ๊ทธ๋ฆผ์ ๊ทธ๋ ค์ง ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ๋ ํฐ ๋ณํ๊ฐ ์์ต๋๋ค. ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ์์ฑํ ๋ชจ๋ธ์ ์ฌ๋์ด ์๊ฐํ๋ ๊ฐ๋ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๋ฐ์ํ ๊ฒ์ด๋ฏ๋ก ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๋๋ผ๋ ํฐ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
๋ฉ์ธ์ง๋ก ํต์
๋ฉ์์ง๋ ๊ฐ์ฒด ์ฌ์ด์ ํต์ ์ ์ํ ์ ์ผํ ์๋จ์ ๋๋ค. ์ฒ๋ฆฌ ์๋ขฐ๋ ๋ฌธ์, ์๋ต, ์ด์ ์ํ ์๋ฆผ ๋ฑ ๋ชจ๋ ์ ๋ณด, ์ ์ด ์ฒ๋ฆฌ๋ ๋ฉ์์ง ์ก์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
๊ฐ์ฒด๋ ๋ฉ์์ง๋ฅผ ๋ฐ์ผ๋ฉด ๋ฉ์์ง ๋ด์ฉ์ ๋ฐ๋ผ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ๊ฒฐ๊ณผ๊ฐ์ ๋๋ ค์ค๋๋ค. ๋ฉ์์ง ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๊ทธ ๊ฐ์ฒด ์์ฒด๊ฐ ์๋ค๊ณ ๋ณด๊ณ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋ํ ์ง์์ ๋ฉ์๋ (method)๋ ์ ์ฐจ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ๋ฉ์๋๋ ํ๋ก๊ทธ๋จ์์ ๋ณดํต ์ ์ฐจ๋ ๊ท์น ๋ฑ์ ์ ๋ ๊ฒ์ ๋๋ค.
๋ฉ์์ง์๋ ์ธ์๋ก ๊ฐ์ฒด(๋๋ ๊ฐ)๊ฐ ๋ฐ๋ผ๊ฐ๋๋ค. ๋ํ ๋ฉ์์ง ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ก ํจ์ ๊ฐ์ ๊ฐ์ฒด(๋๋ ๊ฐ)๋ฅผ ๋๋ ค์ค ์๋ ์์ต๋๋ค.
๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๊ฐ์ฒด๊ฐ ์ผ๋(sender: ์ก์ ์), ๋ฐ๋ ๊ฐ์ฒด๊ฐ ๋ฆฌ์๋ฒ(receiver: ์์ ์) ์ ๋๋ค.
๊ฐ์ฒด๋ ์๋ก ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ผ๋ก ํ๋ ฅํ๊ณ ๋ชจ๋๊ฐ ๋ชจ์ฌ ํ๋์ ์์คํ ์ผ๋ก์ ๋์ํ๋๋ฐ, ์ด๊ฒ์ด ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์คํ ๋ชจ๋ธ์ ๋๋ค.
๋ชจ๋ธ์ ์ถ์ํ
์ง๊ธ๊น์ง ๋ด์ฉ์ ์ ๋ฆฌํด๋ด ์๋ค. ๊ฐ์ฒด๋ ๋ค์ ๋ชฉ๋ก๊ณผ ๊ฐ์ ์ฑ์ง์ ๊ฐ์ง '๋ฌผ๊ฑด'์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
- ์ฌ๋์ด '๋ฌผ๊ฑด'์ผ๋ก ๋ค๋ฅธ ๊ฒ๊ณผ ๊ตฌ๋ณํด์ ์ธ์ํ ์ ์์
- ์์ฑ์ด ์์
- ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์์
- ๋ฉ์์ง๋ฅผ ๋ฐ์ ๊ทธ์ ๋ฐ๋ผ ์ฒ๋ฆฌ๋ฅผ ํจ
- ๋ฉ์์ง ์ฒ๋ฆฌ๋ ๊ฐ์ฒด์ ๋ฉ์๋๋ก ์ด๋ฃจ์ด์ง
์ด๋ ๊ฒ ์ฒ๋ฆฌํ๋ ค๋ ๋์์ ๊ฐ์ฒด ๊ฐ๋ ์ผ๋ก ๋ชจ๋ธํํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ฒด์งํฅ์ด๋ผ๊ณ ํฉ๋๋ค. ๊ฐ์ฒด ๊ฐ๋ ์ผ๋ก ์ด๋ค ์ํํธ์จ์ด๋ฅผ ๋ง๋ค๊น ๋ถ์ํ๋ ๊ฒ์ '๊ฐ์ฒด์งํฅ ๋ถ์(OOA: Object-Oriented Analysis)'์ด๋ผ๊ณ ํฉ๋๋ค. ์ํํธ์จ์ด๋ฅผ ๊ฐ์ฒด ์งํฉ์ด๋ผ๊ณ ์๊ฐํด์ ๋ชจ๋ ๊ตฌ์ฑ์ ์ ํ๊ณ ์ํํธ์จ์ด ์ค๊ณ๋ฅผ ํ๋ฉด '๊ฐ์ฒด์งํฅ ์ค๊ณ(OOD: Object-Oriented Design)'๋ผ ํ๊ณ ๊ฐ์ฒด์งํฅ ๊ฐ๋ ์ ํ๋ก๊ทธ๋๋ฐ ๋จ๊ณ์์ ์ฌ์ฉํ๋ฉด '๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP: Object-Oriented Programming)'์ด๋ผ ํฉ๋๋ค. ๋ํ ๋ง์ฐ์ค, ํค๋ณด๋, ํ๋ฉด์ ํ์๋๋ ๋ฒํผ ๊ฐ์ ๋ถํ๊ณผ ํ๋ก๊ทธ๋จ ๊ด๊ณ๋ฅผ ๊ฐ์ฒด ์ฌ์ด์ ๋ฉ์์ง ํต์ ์ผ๋ก ์๊ฐํด์ ๊ตฌ์ฑํ ์ธํฐํ์ด์ค๋ฅผ '๊ฐ์ฒด์งํฅ ์ธํฐํ์ด์ค'๋ผ ํฉ๋๋ค.
๊ฐ์ฒด์งํฅ ์ธ์ด๋ผ๊ณ ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ตฌ ๋ถ์๊ณผ ์ค๊ณ ๋จ๊ณ์์ ์ฌ์ฉํ ๊ฒ๊ณผ ๊ฐ์ ๊ฐ์ฒด ๋ชจ๋ธ์ ๋ฐํ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ธฐ๋ฅ์ ํจ์๋ก ๋ถํดํด์ ๊ตฌํํ๋ ์์ ๋ฐฉ์์ ์ด๋ค ํจ์๊ฐ ์๊ตฌ ๋ถ์์ ์ด๋ค ๊ธฐ๋ฅ์ ๋์ํ๋์ง ๋์ ๊ด๊ณ๊ฐ ๋ช ํํ์ง ์์์ง๋ง ๊ฐ์ฒด์งํฅ์์๋ ์๊ตฌ ๋ถ์, ์ค๊ณ, ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ์ฉํ๋ ๋ชจ๋ธ์ ์ผ๊ด์ฑ์ด ์์ด์ ์ํธ ๊ด๊ณ๋ฅผ ์ดํดํ๊ธฐ ์ฝ๊ณ ๋ณ๊ฒฝ์ด๋ ํ์ฅ์ด ์ฉ์ดํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
์ด๋ค '๋ฌผ๊ฑด'์ ๊ฐ์ฒด๋ก ๊ฐ์ ํ์ ๋ ํ์ค์์ ๊ทธ '๋ฌผ๊ฑด'์ด ๊ฐ์ง ์ฌ๋ฌ ์ฑ์ง์ด๋ ๋์, ์์ธํ ๊ตฌ์ฑ์ ๋ชจ๋ธ์ ๋ฐ์ํ์ง ์์๋ ๋ฉ๋๋ค. ์์ฑ๊ณผ ๋์, ๋ค๋ฅธ ๊ฐ์ฒด์์ ๊ด๊ณ๋ ์ง๊ธ๋ถํฐ ์์ฑํ๋ ค๋ ๋ชจ๋ธ์ ํ์ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒ๋ง ์ค๋นํ๋ฉด ๋ฉ๋๋ค. ๋ฌผ๋ก ์ค์ ๋นํ ๊ด๋ฆฌ ์ ๋ฌด๋ ์์์ ๋ณธ ์์ฒ๋ผ ๋จ์ํ์ง ์์ต๋๋ค. ํ์ง๋ง ๋ฐ์ฃผ ์ฉ์ง ํฌ๊ธฐ๋ A4๊ณ ์ ์ ์๊ฐ์ ์ค์ 9์์ ์ ์คํ 5์๊น์ง๋ผ๋ ๋ฑ์ ๋ถํ์ํ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ฒ๋ฆฌ๊ณ ๋จ์ํํ๋ฉด ๋ฉ๋๋ค.
์ด๋ ๋ฏ ์ง๊ธ๊น์ง ์ดํด๋ณธ ๋ฌธ์ ์์ ๊ด๊ณ์๋ ์ ๋ณด๋ฅผ ๋นผ๊ณ ๋์์ ๋ณธ์ง๋ง ์ถ๋ ค๋ด๋ ๊ฒ์ ์ถ์ํ(abstraction)๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ํ์ค์ '๋ฌผ๊ฑด'์ ์์ธํ ๊ด์ฐฐํ๊ณ ๋ถ์ํ ์๋ก ๋ค์ํ ๋ถ๋ถ๊ณผ ์ธก๋ฉด์ด ๋ณด์ ๋๋ค. ํ์ง๋ง ๋ณต์กํ ๋์๋ ์ถ์ํํ๋ฉด ๊ฐ๋จํ ๊ฐ๋ ์งํฉ์ผ๋ก ์ค๋ช ํ ์ ์์ผ๋ฉฐ, ์ด ๊ณผ์ ์ ๋ฌด์ฒ ์ค์ํฉ๋๋ค.
๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ์ทจ์ฌ ์ ํํด์ ์ถ์ํํ ๊ฒ์ธ๊ฐ๋ ๋ง๋ค๋ ค๋ ๋ชจ๋ธ์ด๋ ์ํํธ์จ์ด์ ๋ด์ฉ๊ณผ ์ฑ์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ํ์ง๋ง ์ฌ๋์ ๋์์ ์ธ์ํ ๋ ์์ํ์ง ๋ชปํ๋ ์ฌ์ด์ ์ถ์ํ๋ฅผ ํฉ๋๋ค. ๋ชจ๋ธํ์ ๋ฐ๋ฅธ ๊ฐ์ฒด ์ธ์๋ ์ฌ๋์ด ํ์์ ํ๋ ์ธ์๊ณผ ๋น์ทํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
์ง๋ฏ๊น์ง์ ์ค๋ช ์ผ๋ก ๋ณด๋ฉด ์ด๋ค ๊ฒ๋ ๊ฐ์ฒด๋ก ๋ค๋ฃฐ ์ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค ๊ฒ์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฒด๋ก ๋ค๋ฃจ์ด์ผ ํ ๊ฒ, ๊ฐ์ฒด๋ก ๋ค๋ฃจ๊ธฐ์ ์ ํฉํ์ง ์๋ ๊ฒ์ ๊ตฌ๋ณํ ์ ์์๊น์?
์ฌ์ค ์๋ฒฝํ ๊ตฌ๋ณํ ์๋ ์์ต๋๋ค. ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ๋ฌด์ธ๊ฐ๋ฅผ ๋ชจ๋ธํํ ๋ ๋ชจ๋ธ์ด ์ ๋นํ๋ฉด ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋จ, ๊ฐ์ฒด๋ก ๋ณด๊ธฐ์ ์ฝ๊ฑฐ๋ ์ด๋ ต๋ค๋ ์ฐจ์ด๋ ์์ต๋๋ค. ํ์ค์์๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ ๋ฆฝํด์ ์๋ ๊ฒ, ์ ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋ถํ, ์ด๋ค ์ญํ ์ ํ๋ ์ฌ๋์ด๋ ๋ถ์ ๋ฑ์ ๊ฐ์ฒด๋ก ๋ณด๊ธฐ ์ฝ์ต๋๋ค. ํนํ ์์ธํํ ์ ์๋ค๋ฉด ๊ฐ์ฒดํํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค. ๋ํ ๋ณต์์๋ ํ๋ ฌ ๊ฐ์ ์์น ์กฐ์ ๋์์ด ๋๋ '๊ฒ'๋ ๊ฐ์ฒด๋ก ๋ค๋ฃฐ ์ ์์ต๋๋ค.
๋ฐ๋๋ก ์๊ฐ, ๊ณต๊ฐ, ๋ฌผ๋ฆฌํ์์ ์ด์ผ๊ธฐํ๋ '์ฅ()'์ฒ๋ผ ๋์ ๋ฒ์๋ฅผ ๊ฐ์ง ๊ฒ, 'ํ๋ฌธ', '๋ ผ๋ฆฌ', '๊ฐ๋'์ฒ๋ผ ์ค์ฒด๊ฐ ์์ด ๋ฌผ๋ฆฌ์ , ์ํ์ ์กฐ์์ ์ด์ธ๋ฆฌ์ง ์๋ ๊ฒ์ ๊ฐ์ฒด๋ก ๋ณด๊ธฐ ์ด๋ ต์ต๋๋ค. '๋ฉ์์ง์ ๋ฐ์ํด ์ฒ๋ฆฌํ๋ ๊ฒ'์ด๋ผ๋ ๋ฐฉ์์ผ๋ก ์ค๋ช ํ๊ธฐ ํ๋ , ์ด๋ฐ ๋์์ ๋ณดํต ๊ฐ์ฒด๋ก ๋ค๋ฃจ์ง ์์ต๋๋ค.
๊ทธ๋ผ '์ซ์'๋ ๊ฐ์ฒด์ผ๊น์? ์๋๊น์? ๋ ๊ฐ์ง ์๊ฒฌ์ด ์์ต๋๋ค. ์ ์๋ ์ค์์ฒ๋ผ ๊ตฌ์กฐ๊ฐ ์๋, ๋ฌ๋ฆฌ ๋งํ๋ฉด '๊ธฐ๋ณธ์ ์ธ'์๋ฃํ๋ ๊ฐ์ฒด๋ก ๋ณด๋ ์๊ฒฌ๊ณผ ๊ฐ์ฒด๋ก ๋ณด์ง ์๋ ์๊ฒฌ์ ๋๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋งํ์๋ฉด ๊ฐ์ฒด์งํฅ ์ธ์ด์ ์์กฐ์ ์ธ ์ค๋ชฐํก(Smalltalk)์ ์ซ์๋ ๋ฌผ๋ก ๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด๋ก ๋ด ๋๋ค. ํํธ, C++์์๋ ์ซ์๋ ๊ฐ์ฒด๊ฐ ์๋๋๋ค. Objective-C์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ซ์๋ ๊ฐ์ฒด๋ก ๋ณด์ง ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ๋ค๋ฅธ ์ฅ์์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์นผ๋ผ 1 - ๋ฏธ์ฃผ์๊ณ ์ฃผ์ '๊ฐ์ฒด์งํฅ'
๊ฐ์ฒด์งํฅ์ ๋๋ฆฌ ์ฌ์ฉ๋์ง๋ง ๊ฐ์ฒด์งํฅ์ ๊ด๋ จ๋ ๋ค์ํ ์ฉ์ด๋ ๊ณตํต๋ ์ ์๋ ์ธ์์ด ์์ผ๋ฏ๋ก ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ด๋ค ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด '๊ฐ์ฒด์งํฅ ์ธ์ด'๋ผ๊ณ ๋ถ๋ฅธ๋ค๋ผ๋ ๊ฒ์กฐ์ฐจ๋ ๋ค์ํ ์๊ฒฌ์ด ์์ต๋๋ค.
์ด๋ ๋ฏ ๊ธฐ๋ณธ ์ ์, ๊ฐ๋ , ํธใ ์นญ๊น์ง๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ค๊ณ ๊ธฐ๋ฒ ๋ฑ ์ ์ฅ์ ๋ฐ๋ผ ์๋ก ๋ฌ๋ผ์ ๋๋ก๋ ์ฌ๋ ์ ์์ ํผ๋์ด ์๊ธธ ์ ๋๋ก ๋ณต์กํฉ๋๋ค. ๋์ฑ์ด ๋ฒ์ญ ๊ณผ์ ์์ ์๋ก ๋ค๋ฅธ ์ฉ์ด๋ก ๋ฒ์ญํ๊ธฐ๋ ํด์ ๋ ๋ณต์กํฉ๋๋ค. Objective-C๋ ๊ฐ์ฒด์งํฅ์ ์์กฐ๊ฒฉ์ธ ์ค๋ชฐํก์ ๊ฐ์ฒด์งํฅ ๋ฐฉ์์ ๋ฐ๋ฅด๋ฏ๋ก ๊ฐ๋ ์ด๋ ์ฉ์ด๊ฐ ์ค๋ชฐํก๊ณผ ๊ฑฐ์ ๊ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด C++์์ ๋ณด๋ ๊ฐ์ฒด์ Objective-C์์ ๋ณด๋ ๊ฐ์ฒด๋ ๋ฎ์ ๋ฏํ๋ฉด์๋ ์๋นํ ๋ค๋ฅธ ๋ถ๋ถ๋ ์์ต๋๋ค. ๋ค๋ฅธ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ฅผ ๋ฐฐ์ด ๋ถ์ด๋ผ๋ฉด ๊ทธ ์ฐจ์ด๋ฅผ ์๊ฐํ๋ฉฐ ์ด ์ฑ ์ ์ฝ๊ธฐ ๋ฐ๋๋๋ค.
๊ฐ์ฒด ์์ฑ
๊ฐ์ฒด ๊ฐ๋ ์์ ์์ฑ์ ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์กฐ๊ธ ๋ ์ค๋ช ํ๊ฒ ์ต๋๋ค. [๊ทธ๋ฆผ 1-3]์ ์์ฑ๊ณผ ๋ฉ์๋๊ฐ ์๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ ์ ์ผ๋ก ๊ทธ๋ฆฐ ๊ฒ์ ๋๋ค.
๊ฐ์ฒด๋ ์์ฑ, ์ฆ ์ํ๊ฐ ์๋ค๊ณ ํ์ง๋ง ์์ฑ์ ์ด๋ค ๊ฑธ ๋ํ๋ด๋ ๊ฒ์ผ๊น์? ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํด์ ์์ฑ์ ๋ํ๋ ๋๋ค. ์์ฑ์ ๋ํ๋ด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ฐธ์กฐ(ํฌ์ธํฐ)๋ฅผ ์ ์ฅํ ์ฅ์๊ฐ ์ธ์คํด์ค ๋ณ์(instance variable, ์ฝ์ด๋ก ivar)์ ๋๋ค. ๋๋ ๊ทธ๋ฅ ๋ณ์๋ผ๊ณ ๋ ํ๋ฉฐ, ๋ณ์์์ ์ฐธ์กฐํ ์ ์๋ ๊ฐ์ฒด๊ฐ ์๋ ์ํ๋ฅผ '๋(null)'๋ก ํํํ๊ธฐ๋ ํฉ๋๋ค. ๊ฒ๋ค๊ฐ ์ซ์ ๊ฐ์ ๋ฐ์ดํฐ๋ ๊ฐ์ฒด ์ํ๋ฅผ ํํํ๊ธฐ ์ํด ๋ณ์์ ์ ์ฅํ ์ ์์ต๋๋ค.
[๊ทธ๋ฆผ 1-4]๋ ๊ฐ๋จํ ์๋ก, ์ด๊ฒ์ ๋ฌผ์ด๋ ๊ธฐ๋ฆ์ด ๋ ํฑํฌ์ ์จ๋ ์ ์ง ์ฅ์น๋ผ๊ณ ์๊ฐํฉ์๋ค. ๊ทธ๋ฆผ ์ผ์ชฝ ์์ ๊ฐ์ฒด๋ ์ฅ์น์ ์ ์ฒด ๋์์ ์ ์ดํ๋ฉฐ ์ค์์น, ์จ๋ ์กฐ์ ์ฅ์น, ํ์ฌ ์ด๋ค ๋์์ ํ๋๊ฐ (์ ์ง, ์ ์จ ๋ณด์จ, ๊ณ ์จ ๋ณด์จ ๋ฑ)๋ฅผ ๋ํ๋ด๋ ๋์ ๋ชจ๋๋ฅผ ์์ฑ์ผ๋ก ๊ฐ์ง๋๋ค. ์ค์์น์ ์จ๋ ์กฐ์ ์ฅ์น ์์ฑ์ ๋ํ๋ด๋ ๋ณ์์์๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
์จ๋ ์กฐ์ ์ฅ์น ๊ฐ์ฒด์๋ ์์ฑ์ด ๋ช ๊ฐ์ง ๋ ์์ต๋๋ค. ์์จ ์กฐ์ฌ ์ผ์ ๋ณ์, ์์จ์ด ๋ฎ์์ง ๋ ์ด์ ๋ด๋ ํํฐ ๋ณ์, ํ์ฌ ์์จ ํ์ ์ฅ์น ๋ณ์๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ๊ฒฝ๋ณด ์ฅ์น๋ ์์จ์ด ๊ณผ์ด๋๋ ๋ฑ์ ๊ฒฝ์ฐ์ ๊ฒฝ๋ณด๋ฅผใน ์ธ๋ฆฌ๋ ์ฅ์น์ง๋ง ์ฌ๊ธฐ์์๋ ์ด๋ฌด๊ฒ๋ ์ฐธ์กฐํ์ง ์์ต๋๋ค. ๋ํ ์ต๊ณ ์จ๋, ์ต์ ์จ๋์๋ ์ซ์๊ฐ ๋ค์ด ์์ต๋๋ค.
๊ฐ์ฒด์ ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ๋ ค๋ฉด ์ด์ฒ๋ผ ์ด๋ค ๊ฐ์ฒด ๋ณ์์์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํด์ผ ํฉ๋๋ค. ์ฐธ์กฐ๊ฐ ์ ๋ ๊ฐ์ฒด์๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. Objective-C์์๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํ ๋ณ์๋ฅผ ์์ธ๋ (outlut)์ด๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, ํนํ GUI ๊ตฌ์กฐ ๋๊ตฌ์ธ ์ธํฐํ์ด์ค ๋น๋ (Interface Builder)์์ ์ด ์ฉ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฐ์ฒด๋ผ๋ฆฌ ํ๋๊ทธ ๊ฐ์ ๊ฑธ๋ก ์ฐ๊ฒฐํด์ ์ฌ์ฉํ๋ค๋ ๋๋์ผ๋ก ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
ํด๋์ค
[๊ทธ๋ฆผ 1-4]๋ ํฑํฌ์ ์จ๋ ๊ด๋ฆฌ๋ฅผ ํ๋ ์ฌ๋ฌ ๊ฐ์ฒด๋ค์ ๊ด๊ณ๋ฅผ ๋ํ๋์ต๋๋ค. ํ์ง๋ง ํฐ ๊ณต์ฅ์์๋ ์ด๋ ๊ฒ ์จ๋๋ฅผ ๊ด๋ฆฌํด์ผ ํ๋ ํฑํฌ๊ฐ ์์ญ, ์๋ฐฑ ๊ฐ ์์ ๊ฒ๋๋ค. ๊ทธ๋ด ๋ ๊ฐ๊ฐ์ ํฑํฌ๋ ๋ฐ์์ฉ๊ธฐ๋ง๋ค ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ ๊ฑด ํ๋ ์ผ์ ๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ ๋ณ์ ๋ฐ ๋ฉ์๋๋ฅผ ๊ฐ์ง ๊ฐ์ฒด 'ํ'์ ์ค๋นํด๋๊ณ ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ ์ด๊ฒ์ ๋ฐํ์ผ๋ก ๋ง๋ค๋ฉด ํธํ๊ฒ ์ฃ . ์ด๋ฐ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ํ์ ํด๋์ค(class)๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
ํด๋์ค๋ ๊ฐ๋ณ์ ์ธ ๊ฐ์ฒด๊ฐ ๊ฐ์ง ์ ๋ณด๋ ์ง์์ ๊ณตํต์ ์ ํฉ์ณ๋ ๊ฒ์ผ๋ก, ์๋ฅผ ๋ค์ด ์๋์ฐจ๋ ๋ค์ํ์ง๋ง ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด๋ ์ด์ ๋ฐฉ๋ฒ์ ๊ฐ์ต๋๋ค. ๊ฐ๋ณ์ ์ธ ์๋์ฐจ ๊ตฌ์กฐ๋ ์ด์ ๋ฐฉ๋ฒ ๊ฐ์ ์์ธํ ๋ด์ฉ์ ์๋ตํ๊ณ ์ถ์ํํด์ '์๋์ฐจ'๋ผ๋ ๊ฐ๋ ์ผ๋ก ๊ตฌ์กฐ๋ ์ด์ ๋ฐฉ๋ฒ์ ์ด์ผ๊ธฐํ ์ ์๋๋ฐ, ์ด๋ ๊ฒ ์๋์ฐจ๋ฅผ ์ถ์ํํ ๊ฐ๋ ์ด ํด๋์ค์ ํด๋นํฉ๋๋ค. ๊ฐ๋ณ ๊ฐ์ฒด๋ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ถ๋ถ๋ ์์ง๋ง ์ด๋ฐ ๊ณตํต๋ถ๋ถ์ ํ๋์ ๊ฐ๋ ์ผ๋ก ๋ค๋ฃจ๋ฉด ํด๋์ค๊ฐ ๋ง๋ค์ด์ง๋๋ค.
ํด๋์ค๋ ์ด๋ฐ ํด๋์ค์ ํฌํจ๋ ๊ฐ์ฒด ๊ณตํต์ ๋ณ์๋ ๋ฒ ์๋๋ฅผ ์ ์ํฉ๋๋ค. ๊ฐ ๊ฐ์ฒด์ ์ฐจ์ด๋ ๊ทธ๋ฐ ๋ณ์์ ์ด๋ค ๊ฐ์ด ๋ค์ด๊ฐ๋์ง์ ๋ฐ๋ผ ์ ํด์ง๋๋ค. ์๋์ฐจ๋ผ๋ฉด ์, ๋ชจ์, ์์ง, ํ์ด์ด ๊ฐ์ ๋ณ์๊ฐ ์์ผ๋ฉฐ, ์ง์ ๋ ๊ฐ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ์๋์ฐจ๊ฐ ๋ง๋ค์ด์ง๋๋ค.
๊ฐ์ฒด ํ์ธ ํด๋์์์ ๊ตฌ์ฒด์ ์ธ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒ์ด ๊ตฌ์ฒดํ ๋๋ ์ธ์คํด์คํ(instantiation)์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋์์์ ๊ตฌ์ฒดํํด์ ๋ง๋ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค ๊ฐ์ฒด(instance object) ๋๋ ๊ฐ๋จํ ์ธ์คํด์ค ๋ผ๊ณ ํฉ๋๋ค.
์ธ์คํด์ค์๋ ์ ๋ง๋ค ๋ณ์๊ฐ ์๊ณ ๋ณ์์๋ ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๋ฑ ๋ค์ํ ๊ฐ์ด ๋ค์ด ์์ต๋๋ค. ๊ทธ๋์ ์ธ์คํด์ค๊ฐ ๊ฐ์ง ๋ณ์๋ฅผ ์ธ์คํด์ค ๋ณ์๋ผ๊ณ ํฉ๋๋ค. ์ธ์คํด์ค ๋ณ์ ์ ์๋ ํด๋์ค์ ๋ชจ์ฌ ์์ง๋ง ์ธ์คํด์ค ๊ฐ์ฒด๋ง๋ค ์๋ก ๋ค๋ฅธ ๊ฐ์ ์ธ์คํด์ค ๋ณ์์ ์ ์ฅํ ์ ์์ต๋๋ค. ์ธ์คํด์ค ๊ฐ์ฒด๋ ํด๋์ค์์ ์์ฑํ ๋ฉ์๋ ์ ์๋ฅผ ๊ณต์ ํ๋ฉฐ, ์ธ์คํด์ค๋ง๋ค ๋ฉ์๋๋ฅผ ์ ์ํ์ง ์์ต๋๋ค.
[๊ทธ๋ฆผ 1-5]๋ ์์จ์ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด์ ๊ธฐ๋ฆ ์จ๋๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ํด๋์ค๋ก ๊ตฌ์ฒดํํ ์์ ๋๋ค. ์์จ๊ณผ ๊ธฐ๋ฆ ์จ๋์ ๊ด๋ฆฌ ๋ฐฉ๋ฒ, ์ฆ ๋ฉ์๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ง๋ง ์ธ์คํด์ค ๋ณ์ ๋ด์ฉ์ ๋ค๋ฆ ๋๋ค. ๋ฌผ๊ณผ ๊ธฐ๋ฆ์ ์ต๊ณ ์จ๋, ์ต์ ์จ๋๋ ๋ค๋ฅด๊ณ ์ผ์๋ ํํฐ๋ ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ๊ฐ์ฒด์งํฅ ์ธ์ด ๋๋ถ๋ถ์ ๊ฐ์ฒด๋ฅผ ๋ฐ๋์ ํด๋์ค ์ ์์์ ์ธ์คํด์คํํด์ ๋ง๋ค๋๋ก ์ ํด์ ธ ์์ต๋๋ค.
ํด๋์ค์๋ ๋ฌด์ฒ ์ค์ํ '์์' ๊ธฐ๋ฅ์ด ์์ง๋ง ํ ๋ฒ์ ๋ง์ด ์ค๋ช ํ๋ฉด ๋จธ๋ฆฌ๊ฐ ๋ณต์กํด์ง๋ฏ๋ก ์ด๋ฒ ์ฅ์์๋ ์ฌ๊ธฐ๊น์ง ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์์์ '3์ฅ'์์ ์์ธํ ์ค๋ช ํ๊ณ ์ฌ๊ธฐ์์๋ ์ํํธ์จ์ด ๊ตฌ์ฑ ๋ถํ์ด๋ผ๋ ์ธก๋ฉด์์ ๊ฐ์ฒด๋ฅผ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์นผ๋ผ 2 - Cocoa์ Objective-C ์ญ์ฌ
Mac OS X๋ ์ ํ ์ฌ ์ฐฝ์ ์์ธ ์คํฐ๋ธ ์ก์ค๊ฐ ์ธ์ด NeXT ์ฌ์์ ๋ง๋ ๊ฐ์ฒด์งํฅ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค. 1988๋ NeXT ์ฌ์์ ๊ฐ๋ฐํ ๋ฅ์คํธ ์ปดํจํฐ๋ ์ ๋์ค ๊ธฐ๋ฐ์ผ๋ก ๋ฉํจํ ์๋ณด๋ค ์์ GUI ํ๊ฒฝ์ ๊ตฌํํ์ต๋๋ค. ๋น์ ์๋์ฐ๋ ์ฅ๋จ๊ฐ ์์ค์ ๋ถ๊ณผํ์ต๋๋ค. ๋ฅ์คํธ ์ปดํจํฐ์ ๊ธฐ๋ณธ ์ํํธ์จ์ด์ธ NEXTSTEP(์ดํ ๋ฉํฐ ํ๋ซํผํํด์ OPENSTEP์ผ๋ก ์ด๋ฆ์ด ๋ฐ๋) ๊ฐ๋ฐ์ธ์ด๊ฐ Objective-C์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Mac OS X์์ ์ ํ๋ฆฌ์ผ์ด์ ์ํํธ์จ์ด๊ฐ ๋์ํ๋ ๊ธฐ๋ฐ์ด Cocoa API์ธ๋ฐ, ์ด API๋ OPENSTEP์ ์ค์ํ API๋ฅผ ๊ณ์นํด ๋ฐ์ ์ํจ ๊ฒ์ ๋๋ค. Cocoa API์์ ์ฐ๋ 'NS'๋ผ๋ ์ ๋์ด๋ NEXTSTEP์ ์๋ฏธํฉ๋๋ค.
๊ฐ์ฒด์งํฅ ์ธ์ด ์์คํ ์ผ๋ก ์ธ๋ชจ์๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ค๋ฉด ํ์ค API๋ฅผ ์ดํดํด์ผ๋ง ํฉ๋๋ค. Cocoa๋ ํ๋ ์์ํฌ๋ก ๋ค์ํ ํด๋์ค๋ฅผ ์ ๊ณตํ๋๋ฐ, ์ฌ๊ธฐ์๋ ๊ฐ์ฒด์งํฅ ๊ฐ๋ฐ์ ์์ด ํ์์ ์ธ ๊ฐ๋ ์ด ์ถฉ์คํ๊ฒ ๋ค์ด ์์ต๋๋ค. ํ๋์ Cocoa ํ๊ฒฝ์์ ์ํํธ์จ๋ฌ๋ฅผ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ์ด๋ฐ ํ๋ ์์ํฌ์ ์ฒ ํ์ด๋ ํ๋ ์์ํฌ๋ฅผ ๊ตฌ์ถํ ๊ธฐ์ ์์ ๊น์ ํต์ฐฐ๋ ฅ์ ๋๋ผ๊ฒ ๋์ด ๊ฐํํ ๊ฒ์ ๋๋ค.
2006๋ ์ ์ ํ ์ฌ๋ Mac ํ๋ก์ธ์๋ฅผ PowerPC์์ ์ธํ ์ฌ ์ ํ์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค. ์นฉ์ ์ ๋ฐ๊ฟง์ง๋ง ๋ณธ๋ ๋ฉํฐ ํ๋ซํผ(์ธํ , ๋ชจํ ๋ก๋ผ, Sun, HP)์ ๋์ํ ์ ์๊ฒ OPENSTEP์ ๋ง๋ค์๊ธฐ์ Mac OS X์ํํธ์จ๋ฌ๋ฅผ ๊ฑฐ์ ์์ ํ์ง ์๊ณ ๋ ์ปดํ์ผ๋ง ๋ค์ ํ๋ฉด ์ธํ ์ฌ ์นฉ์ ์์ ๋์ํ์ต๋๋ค. ์ด๋ฐ OPENSTEP์ ๊ณ์นํ Cocoa API๊ฐ ์ด์์ฑ์ด ๋์ ๊ฒ์ ๋น์ฐํฉ๋๋ค.
๋ํ ์ ํ ์ฌ๋ 2007๋ ์ ์์ดํฐ, 2010๋ ์ ์์ดํจ๋๋ฅผ ๋ฐํํ์ต๋๋ค. ์ด ๊ธฐ๊ธฐ๋ค์ OS์ธ iOS(๋น์์๋ ์์ดํฐ OS๋ผ๊ณ ๋ถ๋ ์ต๋๋ค)๋ Mac OS X์ ํด๋ ๋จ๋ง๊ธฐ์ฉ์ผ๋ก ๋ง๋ ๊ฒ์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ ์์ํฌ๋ Cocoa Touch์์ต๋๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ Objective-C์ด๋ฉฐ, ์ด๋ C ์ธ์ด ์์ ํธํ ์ธ์ด์ด๋ฏ๋ก ๊ฐ์ฒด์งํฅ์ ๋ฐํ์ผ๋ก ํ ์ ์ฐํ ์ค๊ณ์ ํ๋์จ์ด ์ฑ๋ฅ์ ํฅ์์ํค๋ ํ๋ก๊ทธ๋๋ฐ์ ๋ณ ๋ฌด๋ฆฌ ์์ด ๋ณํํ ์ ์์ต๋๋ค.
์์ผ๋ก๋ ์ ํ ์ฌ๋ ์๋ก์ด ๊ธฐ๊ธฐ๋ ์์คํ ์ ๊ฐ๋ฐํ ๋๋ง๋ค Mac OS X ๊ธฐ์ ์ ์ฌ์ฉํจ์ ๋ฌผ๋ก ์ด๊ณ ๋์์ Objective-C๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ ์ธ์ด๋ก ์ฑ์ฉํ ๊ฑฐ๋ผ๊ณ ์์๋ฉ๋๋ค.