01B. ๋ชจ๋๊ณผ ๊ฐ์ฒด
01B. ๋ชจ๋๊ณผ ๊ฐ์ฒด ๊ด๋ จ
์์์๋ ๋ชจ๋๊ณผ ๊ฐ์ฒด์ ๋ฐํ์ ๋ ๋ชจ๋ธ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ์ต๋๋ค. ์ด ์ฑ ์์ ๋จ์ํ ๊ทธ๋ฆผ์ ํตํด ์ค๋ช ํ์ง๋ง ์ค์ ๋ก ๊ฐ์ฒด์งํฅ ๋ถ์๊ณผ ์ค๊ณ๋ฅผ ํ ๋๋ UML(Unified Modeling Language)์ ์ฌ์ฉํฉ๋๋ค. ๋ค์ํ ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์์ ๋ฌด์์ ๊ฐ์ฒด๋ก ๋ณด๊ณ ๋ชจ๋ธํํ ๊ฒ์ธ์ง ๋ ๋ชจ๋ธ์ ์ด๋ป๊ฒ ๊ทธ๋ฆผ์ด๋ ๋ฌธ์๋ก ํํํ ๊ฒ์ธ์ง๋ฅผ ๋ค๋ฃน๋๋ค.
์ด๋ฒ ์ ์์๋ ์์ํํธ์จ์ด ๊ตฌ์ฑ ์์์ธ ๋ชจ๋๊ณผ ๊ฐ์ฒด ๊ด๊ณ๋ฅผ ์ค๋ช ํ๊ณ Objective-C๋ฟ๋ง ์๋๋ผ ๊ฐ์ฒด์งํฅ ์ธ์ด์ ์ค์ ๊ตฌ์ฑ ์๋ฆฌ์ธ ์ ๋ณด ์ํ ๊ฐ๋ ๋ ์ดํด๋ด ์๋ค.
์ํํธ์จ์ด ๋ชจ๋
๊ฐ์ฒด์งํฅ ์ธ์๋ ์ํํธ์จ์ด๋ ๋ณดํต ๋ชจ๋(module, ์งํฉ)์ ์กฐํฉํด์ ๋ง๋๋๋ฐ, ๋ชจ๋์ด๋ ๋ฌด์์ผ๊น์? ์ํํธ์จ์ด ์ธ์ ๊ณต์ ์ ํ์์๋ '์ ์ ๋ชจ๋'์ฒ๋ผ ๋ชจ๋์ด๋ผ๋ ๋ง์ ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋์ ํน์ ์ญํ ์ ์ํํ๋ฉฐ ๋ค๋ฅธ ๋ถ๋ถ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋ฉฐ ๊ต์ฒดํ ์๋ ์์ต๋๋ค.
์ํํธ์จ์ด ๋ชจ๋๋ ๋น์ทํด์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋จ์๋ก ์ํํธ์จ์ด๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฐ ๋ถ๋ถ์ด ๋ชจ๋์ ๋๋ค. ๋ชจ๋์ ์ ์ฐจ, ํจ์, ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋๋ฉฐ ์ด๋ค ๋ชจ๋์ ๋ ๋ค๋ฅธ ๋ชจ๋์ ๊ตฌ์ฑํ๊ธฐ๋ ํฉ๋๋ค. ์ฆ, ๋ชจ๋์๋ ๊ณ์ธต์ฑ์ด ์์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋ชจ๋์ด ์ ๊ณตํ๋ '๊ธฐ๋ฅ'์ผ๋ก ์ ์ฐจ๋ ํจ์ ํธ์ถ ์ธ์๋ ๋ณ์์ ๋ํ ์ฐธ์กฐ๋ ๋ณ๊ฒฝ๋ ํฌํจํด์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ ๋ฆฝ์ฑ ๋์ ๋ชจ๋
์ค๋ซ๋์ ์ข์ ๋ชจ๋ ๊ตฌ์กฐ์ ๊ดํ ๋ ผ์๊ฐ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ถ์ผ์์ ์์์ต๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ์๊ฒฌ์ด๋ ๊ฐ๋ ์ด ์์์ง๋ง ๊ฐ๋จํ ์ ๋ฆฌํ๋ฉด '๋ ๋ฆฝ์ฑ ๋์ ๋ชจ๋์ ์กฐํฉํด์ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ด ์ข๋ค'์์ต๋๋ค. ๋ชจ๋์์ ๋ ๋ฆฝ์ฑ์ด๋ ๋ชจ๋ ๋ด๋ถ ๊ตฌํ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ๋ชจ๋์ ์ํฅ์ ์ฃผ์ง ์๋ ๊ฒ์ ๋๋ค.
์ด๋ค ๋ชจ๋์์ ๊ตฌํ๋ ๋ด์ฉ์ด ๊ด๋ จ๋ ๋ค๋ฅธ ๋ชจ๋์ ์ฐธ์กฐํ์ง ์์ผ๋ฉด ์ดํด๊ฐ ๋์ง ์๋๋ค๋ ์ง ์ด๋ค ๋ชจ๋ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ฉด ๋ค๋ฅธ ๋ชจ๋๋ ๊ทธ ์ํฅ์ ๋ฐ์ ๋ฐ๋์ด์ผ ํ๋ค๋ฉด ๋ ๋ฆฝ์ฑ์ด ๋ฎ์ ๋ชจ๋์ ๋๋ค.
๋ชจ๋์๋ ์ด๋ค๊ธฐ๋ฅ-What-์ ์ ๊ณตํ๋๊ฐ๋ผ๋ฉด ์ธก๋ฉด๊ณผ ๊ทธ๊ฒ์ ์ด๋ป๊ฒ-How-๊ตฌํํ๋๊ฐ๋ผ๋ ์ธก๋ฉด์ด ์์์ต๋๋ค. ์ด๋ฐ What๊ณผ How๋ฅผ ๋ช ํํ๊ฒ ๊ตฌ๋ณํ ์ ์์ด์ผ ๋ ๋ฆฝ์ฑ์ด ๋์ ๋ชจ๋์ ๋๋ค. ๋ฐ๋๋ก ๋ ๋ฆฝ์ฑ์ด ๋ฎ์ ๋ชจ๋์ ์ด๋ค ๊ธฐ๋ฅ์ ์ ๊ณตํ๋์ง ๋ช ํํ์ง ์์ผ๋ฉฐ ๊ตฌํ ๋ฐฉ๋ฒ๊ณผ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๊ตฌ๋ณ๋ ๋ถ๋ถ๋ช ํฉ๋๋ค.
๋ ๋ฆฝ์ฑ์ด ๋์ ๋ชจ๋์ ๊ทธ๊ฒ์ด ์ด๋ค ๊ธฐ๋ฅ(What)์ ์ ๊ณตํ๋๊ฐ๋ง ์๋ฉด ์ฌ์ฉํ ์ ์๊ธฐ์ ๊ท๋ชจ๊ฐ ํฐ ์ํํธ์จ์ด๋ ๋ง๋ค๊ธฐ ์ฝ์ต๋๋ค. ๊ทธ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ(How) ๊ตฌํํ๋๊ฐ๋ ์ค์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ง ์ฑ๋ฅ์ด ์ข ๋ ์ข์ ๋ชจ๋์ด ์๋ค๋ฉด ๊ตฌํ ๋ฐฉ๋ฒ์ ๊ด๊ณ์์ด ๊ตํํ ์ ์์ต๋๋ค. ์ด๋ค ๋ชจ๋์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๊ฒฝ์ฐ์๋ ๊ทธ ๋ชจ๋๋ง ๊ณ ์ณ์ ์๋ก์ด ๊ฑธ๋ก ๋ฐ๊พธ๋ฉด ๋๋ฏ๋ก ์ํํธ์จ์ด์ ์ ๋ขฐ์ฑ๊ณผ ๋ณด์์ฑ์ด ๋์์ง๋๋ค.
๋ฐ๋๋ก ๊ทธ ๋ชจ๋์ ์ฌ์ฉํ๋๋ฐ ๊ทธ๋ค์ง ์ค์ํ์ง ์์ ๊ธฐ๋ฅ์ด๋ ๋ด๋ถ ๊ตฌํ ๋ฐฉ๋ฒ์ ์์กดํ๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ธ๋ถ์์ ์ฌ์ฉํ๋ค๊ณ ํ๋ฉด ๋์ค์ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ฐ๊พธ๋๊ฐ ๋ชจ๋ ์์ฒด๋ฅผ ๋ค๋ฅธ ๊ฑธ๋ก ๋ฐ๊พธ๋ ๊ฒ์ด ํ๋ค์ด์ง๋ค๋ ๊ฒ ์ฝ๊ฒ ์์์ด ๊ฐ๋๋ค.
๋ชจ๋ ์ ๋ณด ์ํ
๋ ๋ฆฝ์ฑ์ด ๋์ ๋ชจ๋ ์์ฑ์ ์์น์ ์ ๋ฆฌํ๋ฉด (1) ๋ชจ๋์ ์ฌ์ฉํ๊ธฐ ์ํ ์ต์ํ์ ์ ๋ณด๋ง ๋ชจ๋ ์ธ๋ถ์ ์ ๊ณตํ๊ณ , (2) ๊ทธ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง๋ ์ธ๋ถ๋ก ๋ ธ์ถํ์ง ์๋ ๊ฒ์ ๋๋ค. ์ฆ, ๋ชจ๋์ ๋ถ๋๋ฐ์ค์ฒ๋ผ ๋ค๋ฃจ๋ ๊ฒ์ ๋๋ค.
์ด ์์น์ ์ ๋ณด ์ํ(information hiding) ๋๋ ์บก์ํ(encapsulation)๋ผ๊ณ ํฉ๋๋ค.
๋ชจ๋์ ๋ธ๋๋ฐ์ค๋ก ๋ง๋ค๋ฉด ๊ทธ ๋ชจ๋์ ์ฌ์ฉํ๋ ์ ์ฅ์์๋ ์ ๊ณต๋ ๊ธฐ๋ฅ๋ง์ผ๋ก ํ๋ก๊ทธ๋จ์ ์์ฑํด์ผ ํฉ๋๋ค.. ๋ชจ๋ ์ชฝ์์ ๋ณด๋ฉด ์ ๊ณตํ ๊ธฐ๋ฅ๋ง ๊ตฌํ๋์ด ์์ผ๋ฉด ๋๋ฏ๋ก, ์๋ฅผ ๋ค์ด ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฐพ์๋ค๋ฉด ๊ทธ๊ฑธ๋ก ๋ฐ๊พธ๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ๋จผ์ํ๊ณ ์ถ์ ๋ ๋ค๋ฅธ ๊ตฌํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค๋ ์ง ํ๋ ์์ ๋ณ๊ฒฝ์ด ์ฝ์ต๋๋ค. ์ฆ, ๋ ๋ฆฝ์ฑ ๋์ ๋ชจ๋์ด ๋ง๋ค์ด์ง๋๋ค. ๋ํ ๋ชจ๋์ ์ฌ์ฉํ๋ ์ชฝ์์๋ ๋ด๋ถ ๊ตฌํ๊น์ง ๋ณด์ง ์๊ณ ์ ๊ณต๋ ๊ธฐ๋ฅ๋ง ์๋ฉด ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๋ชจ๋์ ์ฌ์ด์ฉ์ฑ์ด ํธ๋ฆฌํด์ง๊ณ ์ํํธ์จ์ด ๋ถํํ๋ ์ฌ์์ง๋๋ค.
์ด์ ์ ์ ์ฐจํ ์ธ์ด์์๋ ์ ๋ณด ์ํ ๊ธฐ๋ฅ์ด ์ถฉ๋ถํ์ง ์์ ๋ ๋ฆฝ์์ด ๋์ ๋ชจ๋์ ๋ง๋ค๊ธฐ ํ๋ค์์ต๋๋ค. ์ด๋ฐ ์ธ์ด์๋ ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ๋ก, ์ ์ฐจ๋ ์ ์ฐจ๋ก ๋ฐ๋ก๋ฐ๋ก ์์ด์ ๋ชจ๋์ ๋ง๋๋ ์ธ์ด ๊ธฐ๋ฅ์ด๋ ๋ชจ๋ ๋ด๋ถ ๊ตฌํ์ ์ธ๋ถ๋ก๋ถํฐ ๊ฐ์ถ๋ ๋ฐฉ๋ฒ์ด ์์์ต๋๋ค.
๋ฐ๋ผ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ชจ๋์ ์ธ์ด ๊ธฐ๋ฅ์ผ๋ก ์ ๊ณตํ์๋ ์์ง์์ด 1980๋ ํ๋ฐ๋ถํฐ ํ์ฐ๋์ด ํ์ค์นผ์ ํ์์ธ์ด์ธ Module-2์ ๋ชจ๋, Ada์ ํจํค์ง ๋ฑ์ด ์ ์๋์์ต๋๋ค.
C ์ธ์ด๋ ๊ฐ๊ฐ์ ์์ค ํ์ผ์ด ์ค์ง์ ์ธ ๋ชจ๋ ๋จ์์ ๋๋ค. ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๋ชจ๋์ ์์ ๋กญ๊ฒ ๋ง๋๋ ๊ฑด ํ๋ค์ง๋งstatic
์ ์ธ์ ์ด์ฉํ ์ ํ์ ์ธ ํจ์ ์ ์ธ, ํค๋ ํ์ผ์ ํ์ฉํ ๊ธฐ๋ฅ ๊ทธ๋ฃนํ ๋ฑ์ ์ฌ์ฉํด ๋
๋ฆฝ์ฑ ๋์ ๋ชจ๋์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ํ๋ก๊ทธ๋๋จธ์ ์ฝ๋ฉ ์คํ์ผ์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ๋ค์ ๋งํด ๋
๋ฆฝ์ฑ์ด ๋ฎ๊ณ ๊ตฌ์ฑ์ด ์ด๋ฅ์ด ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๊ฐ๋ฅ์ฑ๋ ๋์์ง๋๋ค.ํด๋์ค ์ ์์ ์ธํฐํ์ด์ค
๊ฐ์ฐจ์งํฅ ์ธ์ด ํ๋ก๊ทธ๋จ์์ ๊ฐ์ฒด๋ ํด๋์ค ์ ์ธ ๋ฐ ์ ์๋ผ๋ ํํ๋ก ์์ฑ๋์ด ์ธ์คํด์ค ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ ์คํ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์ฆ, ํด๋์ค ์์ฑ์ด ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ๋จ์์ธ ๋ชจ๋์ด ๋ฉ๋๋ค.
ํด๋์ค๋ฅผ ๊ตฌ์ฑํ๋ ์์๋ ์ง๊ธ๊น์ง ์ค๋ช ํ ๊ฒ์ฒ๋ผ ๊ฐ ์ธ์คํด์ค์ ์ธ์คํด์ค ๋ณ์์ ์ธ์คํด์ค ์ฌ์ด์ ๊ณต์ ๋๋ ๋ฉ์๋์ ๋๋ค. ๋ฐ๋ผ์ ํด๋์ค ์ ์์๋ ์ธ์คํด์ค ๋ณ์์ ๋ฉ์๋ ์ ์๊ฐ ํฌํจ๋ฉ๋๋ค. ํ์ง๋ง ์ธ์คํด์ค ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ชฝ์์ ๋ณด๋ฉด ๊ทธ ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง๊ฐ ์ค์ํ์ง ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๋ ํ์ํ์ง ์์ต๋๋ค.
์ด๋ค ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ํด๋์ค ์ธ๋ถ์ ๊ณต๊ฐ๋ ์ ๋ณด๋ฅผ ํด๋์ค์ ์ธํฐํ์ด์ค๋ผ๊ณ ํฉ๋๋ค. ์ธํฐํ์ด์ค๋ ํด๋์ค๊ฐ ์ด๋ค ์ธ์คํด์ค ๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์ด๋ค ๋ฉ์์ง์ ๋ฐ์ํ๋๊ฐ์ ๋ํ ์ ๋ณด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
ํด๋์ค ์ธ๋ถ, ์ฆ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ ์ชฝ์์ ๋ดค์ ๋ ๊ทธ ํด๋์ค์ ๋ํ ์ ๋ณด๋ ์ธํฐํ์ด์ค ๋ง๊ณ ๋ ์์ต๋๋ค. ์ธํฐํ์ด์ค์ ์ ํ ์๋ ๊ฒ ์ธ์, ์๋ฅผ ๋ค์ด ํด๋์ค ๊ตฌํ์ ์ํ ๋ด๋ถ์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์ ์ฐจ ๋ฑ์ ํด๋์ค ์ธ๋ถ์์ ์ ๊ทผํ ์ ์์ต๋๋ค. [๊ทธ๋ฆผ1-6]์ ์ด๋ฐ ๊ฐ๋ ์ ๊ฐ์ ์ ํ์ ์๋ก ๋ค์ด ๋ํ๋ธ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ ํ์ ์์ด ์ ํ ์ฌ์ฉ๋ฒ(์ธํฐํ์ด์ค)๋ง ์๋ฉด ๋ฉ๋๋ค.
์ด๋ ๋ฏ ๋ชจ๋๋ก์์ ํด๋์ค๋ ํด๋์ค์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์ธํฐํ์ด์ค๋ก ์์ฑํ๊ณ ๊ทธ ์ธ์ ์ ๋ณด๋ฅผ ์ธ๋ถ์์ ๋ณด์ด์ง ์๋๋ก ํ๋ ๊ฒ์ผ๋ก ๊ตฌํ์ ์์กดํ๋ ์์ธํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์ ์ฐจ๋ฅผ ์ํํฉ๋๋ค. ์ ๋ง๋ ํด๋์ค ์ค๊ณ๋ ์ด๋ฐ ํด๋์ค์ ์ ๋ง ํ์ํ ์ ๋ณด๋ง ์ธํฐํ์ด์ค๋ก ์์ฑํด์ ๋ ๋ฆฝ์ฑ ๋์ ๋ชจ๋์ ๋ง๋ญ๋๋ค.
์ธํฐํ์ด์ค์ ๊ตฌํ์ ์ํ ์ฝ๋ ๋ถ๋ถ์ ๋ถ๋ฆฌํ๋ ์ธ์ด๋ ์๊ณ ํจ๊ป ์ฌ์ฉํ๋ ์ธ์ด๋ ์์ต๋๋ค. Objective-C๋ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๋ก ์ ์ ์ธ์ด์ ๋๋ค.
๋ฉ์์ง ์ก์ ๊ตฌํ
ํ๋ก๊ทธ๋จ์๋ ์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ํฌํจ๋ฉ๋๋ค. ์ด๋ฐ ๊ฐ์ฒด๊ฐ ์์ ์๊ฒ ํ ๋น๋ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ๋์์ ์ด๋ค ์ฒ๋ฆฌ๋ฅผ ํ๋๋ฐ ๋ฉ์์ง ์ก.์์ ๋ ๋ณ๋ ฌ๋ก (๊ทธ๋ฆฌ๊ณ ๋น๋๊ธฐ๋ก) ์ผ์ด๋๋ค๊ณ ํฉ์๋ค. ์ฆ, ํํฐ์์ ์ฌ๋ฌ ์ฌ๋์ด ์ฌ๊ธฐ์ ๊ธฐ์์ ์๋ก ์ด์ผ๊ธฐ๋ฅผ ํ๋ ํํ์ ๋๋ค. ์ด์ ๋นํด ํ ๋ฒ์ ํ๋์ ๊ฐ์ฒด๋ง ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ๋ฉ์์ง๋ฅผ ์ก์ ํ๋ ๊ฒ์ผ๋ก ๋ค๋ฅธ ๊ฐ์ฒด์ ์ฒ๋ฆฌ๋ฅผ ๋๊ธฐ๋ ๋ฐฉ์๋ ์์ต๋๋ค. ์ด๊ฒ์ ํ ๋ช ์ฉ ์์๋๋ก ์ด์ผ๊ธฐ๋ฅผ ํ๋ ํ ๋ก ๊ณผ ๋น์ทํ ํํ์ ๋๋ค.
ํ์ฌ ๋ค์ํ ๊ฐ์ฒด์งํฅ ์ธ์ด์์๋ ๋ฉ์์ง์ ์ํ ํต์ ์ ์ผ๋ฐ์ ์ธ ์ ์ฐจ ํธ์ถ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ตฌํํฉ๋๋ค. ์ด๋ค ๊ฐ์ฒด์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๊ทธ ๊ฐ์ฒด์ ๊ด๋ จ๋ ์ด๋ค ์ ์ฐจ๋ฅผ ํธ์ถํ๋ ๊ฒ๊ณผ ๊ฐ๋ค๊ณ ๋ด ๋๋ค. ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ด๋ ๊ตฌ์ฒด์ ์ธ ์คํ ์ ์ฐจ๋ฅผ ์ ํ๋ ๋ฐฉ๋ฒ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ ์ฐจ์ ํธ์ถ๊ณผ๋ ๋ค๋ฅธ ์ ๋ ๋ง์ง๋ง ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด ๋ฆฌ์๋ฒ๊ฐ ๊ทธ ์ฒ๋ฆฌ๋ฅผ ๋๋ผ ๋๊น์ง ์ผ๋๊ฐ ๊ธฐ๋ค๋ฆฌ๋๋ค๋ ์ ์์ ์ ์ฐจ ํธ์ถ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
ํํธ, ๋ ๋ฆฝํด์ ๋์ํ๋ ํ๋ก์ธ์ค๋ผ๋ฆฌ์ ํต์ ์ด๋ ๋คํธ์ํฌ๋ก ๋ฌถ์ธ ๋ค๋ฅธ ์ปดํจํฐ์์ ๋์๊ฐ๋ ํ๋ก๊ทธ๋จ๋ผ๋ฆฌ์ ํต์ ๋ ๊ฐ์ฒด๋ผ๋ฆฌ์ ๋ฉ์์ง ์ ์๋ก ์ถ์ํํด์ ์๊ฐํ ์ ์์ต๋๋ค. ์ด๋ ์ด์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ ์ฐจ ํธ์ถ ๋ฐฉ์์ผ๋ก๋ ๋์ํ์ง ๋ชปํ๋ ๋ถ๋ถ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด Objective-C๋ ์ฒ๋ฆฌ๊ฐ ๋๋๋ ์๋ต์ ๋๋ ค์ฃผ์ง ์์๋ ๋๋ ๋ฉ์์ง๋ฅผ ์ ์ธํด์ ํจ์จ์ ์ผ๋ก ํ๋ก์ธ์ค๋ผ๋ฆฌ ํต์ ์ ํฉ๋๋ค.
์นผ๋ผ 3: C ์ธ์ด์ ์๋ก์ด ๊ท๊ฒฉ
์ด ์ฑ ์ ์ฌ๋ฌ๋ถ์ด C ์ธ์ด๋ฅผ ์ด๋ฏธ ์๊ณ ์๋ค๋ ์ ์ ํ์ ์ค๋ช ํฉ๋๋ค. Objective-C๋ C ์์ ํธํ ์ธ์ด๋ก ์ค๊ณ๋์ด C์ ๋ํ ๊ธฐ๋ณธ ์ง์์ด ํ์์ ๋๋ค. ๋ฐ๋ผ์ C ์ธ์ด ๊ท๊ฒฉ์ด ๋ฐ๋๋ฉด Objective-C ํ๋ก๊ทธ๋จ ์์ฑ ๋ฐฉ๋ฒ์๋ ์ํฅ์ ์ค๋๋ค.
K&R์ ์ดํด๋ด ์๋ค. K&R์ C ์ธ์ด์ ์ฐฝ์์ C ์ธ์ด ํ๋ก๊ทธ๋๋ฐ[1]์ ์งํํ ์ปค๋ํธB.W. Kernighan๊ณผ ๋ฆฌ์นD.M. Rithchie์ ์ด๋ฆ์์ ๋ฐ์จ ๋ง๋ก, ํ์ค ๊ท๊ฒฉ์ ๋ง๋ค๊ธฐ ์ ์ C ์ธ์ด ์์ฑ๋ฒ์ ์๋ฏธํฉ๋๋ค. ANSI ๊ท๊ฒฉ์ด ๋ง๋ค์ด ์ง ํ C ์ธ์ด ํ๋ก๊ทธ๋๋ฐ์ 2ํ์ผ๋ก ๊ฐ์ ๋์๋๋ฐ, 'K&R C'๋ผ๊ณ ๋ถ๋ฅด๋ฉด ๊ฐ์ ์ 1ํ์ C ์ธ์ด ์์ฑ๋ฒ์ ์๋ฏธํ๋ ๊ฒ๋๋ค.
1989๋ ์์ 1990๋ ์ ๊ฑธ์ณ ANSI(๋ฏธ๊ตญ๊ท๊ฒฉํํ)์ ISO(๊ตญ์ ํ์คํ๊ธฐ๊ตฌ)๋ C ์ธ์ด์ ์๋ก์ด ํ์ค ๊ท๊ฒฉ์ ๊ณต๊ฐํ์ต๋๋ค. ํ์ฌ ANSI C๋ผ๊ณ ์ ํ ์์ผ๋ฉด ๋๋ถ๋ถ ์ด ๊ท๊ฒฉ์ ์๋ฏธํฉ๋๋ค. C89 ๋๋ C90์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
1999๋
์ ISO๋ ๊ธฐ๋ฅ์ ํ์ฅํ ํ์ค ๊ท๊ฒฉ์ ๊ณต๊ฐํ๋๋ฐ, ์ด๊ฒ์ C99๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ํ์ฌ ๋๋ค์ ์ปดํ์ผ๋ฌ์์ ์๋ก์ด ๊ธฐ๋ฅ์ธ C99๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ฃผ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์๋ inline
ํจ์, ๊ฐ๋ณ ๊ธธ์ด ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ ์ต์ ํ๋ฅผ ์ํ restrict
์์์ด๊ฐ ์์ต๋๋ค. ๋ํ ์ด์ ์๋ ๋ณ์๋ฅผ ์ฝ๋ ์๋จ์ ๋ฌด์กฐ๊ฑด ์ ์ธํด์ผ ํ์ง๋ง C99์์๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ด๋ผ๋ฉด ์ด๋์๋ ์ ์ธํ ์ ์์ต๋๋ค.
gcc
๋ฅผ ๋ฐํ์ผ๋ก ๋ง๋ค์์ง๋ง Xcode 4.2 ์ดํ์๋ LLVM ์ปดํ์ผ๋ฌ์ธ clang
์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ์ชฝ ์ปดํ์ผ๋ฌ๋ C, Objective-C, C++์ ์ปดํ์ผํด์ Mac OS X, ์์ดํฐ, ์์ดํจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค ์ ์์ต๋๋ค. clang
์์๋ C99์ ์๋ ๊ธฐ๋ฅ์ ๋๋ถ๋ถ ๊ตฌํํ๊ณ ์์ผ๋ฏ๋ก C ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋๋ฟ๋ง ์๋๋ผ Objective-C ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋์๋ C99์ ์๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ ๋์ค์ ์ดํด๋ณผ ๋ธ๋ก ๊ฐ์ฒด์ ๋ผ ์ ํ ์ฌ๋ง์ ๋
์์ ์ธ ํ์ฅ ๊ธฐ๋ฅ๋ ์์ต๋๋ค.The C Programming Language (Prentice Hall, 1988) โฉ๏ธ