Skip to main content

01A. ๊ฐ์ฒด ๊ฐœ๋…

About 1 minObjective-Ccrashcoursexcodeobjective-cobjc

01A. ๊ฐ์ฒด ๊ฐœ๋… ๊ด€๋ จ

๋ชฉ์ฐจ
OSX ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๋ฉด์„œ ๋ฐฐ์šฐ๋Š” Objective-C

์†Œํ”„ํŠธ์›จ๋Ÿฌ๋ฅผ ๊ธฐ๋Šฅ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„ํ–ˆ์„ ๋•Œ์˜ ๋ฌธ์ œ์ 

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๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์„ฑ ์–ธ์–ด๋กœ ์ฑ„์šฉํ•  ๊ฑฐ๋ผ๊ณ  ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.


์ด์ฐฌํฌ (MarkiiimarK)
Never Stop Learning.