์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์˜ ๊ฐœ์ธ ๊ณต๋ถ€ ๊ณผ์ •์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

ํŒจ๋Ÿฌ๋‹ค์ž„: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ด€์ ์„ ๊ฐ–๊ฒŒํ•˜๊ณ  ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP: Object Oriented Programming)

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?

๊ธฐ๋Šฅ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„
( โ†”๏ธŽ ๋ช…๋ น์ด ์ˆœ์ฐจ์ , procedural ๊ธฐ๋Šฅ ๊ฐ•ํ™”)

  • ์„œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”
  • ๊ฐ์ฒด(Object)๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ค‘ ํ•˜๋‚˜์ด๋‹ค
  • OOP์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ: ํด๋ž˜์Šค, ๊ฐ์ฒด, ๋ฉ”์„œ๋“œ

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์žฅ์ 

  • ์ฝ”๋“œ์— ๋Œ€ํ•œ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๋‹ค
  • ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค
  • ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋ฐœ๊ณผ ๋ณด์ˆ˜๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค
  • ์ง๊ด€์ ์ธ ์ฝ”๋“œ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•˜๋‹ค

์ด๋Ÿฌํ•œ ์žฅ์ ๋“ค์„ ๊ด€ํ†ตํ•˜๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ค‘์š”ํ•œ ํŠน์„ฑ์€ย ๊ฐ•ํ•œ ์‘์ง‘๋ ฅ(Strong Cohesion)๊ณผ ์•ฝํ•œ ๊ฒฐํ•ฉ๋ ฅ(Weak Coupling)์„ ์ง€ํ–ฅํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.

  • ์‘์ง‘๋ ฅ(cohesion)ย : ํ”„๋กœ๊ทธ๋žจ์˜ ํ•œ ์š”์†Œ๊ฐ€ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์–ผ๋งˆ๋งŒํผ์˜ ์—ฐ๊ด€๋œ ์ฑ…์ž„๊ณผ ์•„์ด๋””์–ด๊ฐ€ ๋ญ‰์ณ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋„. ํ”„๋กœ๊ทธ๋žจ์˜ ํ•œ ์š”์†Œ๊ฐ€ ํŠน์ • ๋ชฉ์ ์„ ์œ„ํ•ด ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋œ ๊ธฐ๋Šฅ๋“ค์ด ๋ชจ์—ฌ์„œ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ , ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์€ ์ผ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ทธ๊ฒƒ์„ ์‘์ง‘๋ ฅ์ด ๋†’๋‹ค๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

  • ๊ฒฐํ•ฉ๋ ฅ(coupling)ย : ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์˜ ํ•œ ์š”์†Œ๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ์–ผ๋งˆ๋‚˜ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€, ์–ผ๋งˆ๋‚˜ ์˜์กด์ ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋„. ๊ฒฐํ•ฉ๋ ฅ์ด ๋‚ฎ๋‹ค๋Š” ๊ฒƒ์€ ํ•œ ์š”์†Œ๊ฐ€ ๋‹ค๋ฅธ ์š”์†Œ๋“ค๊ณผ ๊ด€๊ณ„๋ฅผ ํฌ๊ฒŒ ๋งบ๊ณ  ์žˆ์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

OOP์˜ ๊ฒฝ์šฐ ํด๋ž˜์Šค์— ํ•˜๋‚˜์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„ ๋†“์€ ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€ํ–ฅํ•˜๋ฏ€๋กœ ์‘์ง‘๋ ฅ์„ ๊ฐ•ํ™”ํ•˜๋ฉฐ, ํด๋ž˜์Šค ๊ฐ„์— ๋…๋ฆฝ์ ์œผ๋กœ ๋””์ž์ธํ•จ์œผ๋กœ์จ ๊ฒฐํ•ฉ๋ ฅ์„ ์•ฝํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.


โœจ tl;dr

  • ํด๋ž˜์Šค(=๊ด€๋ จ์žˆ๋Š” ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋ฌถ์–ด๋†“์€ container) ex) ๋ถ•์–ด๋นตํ‹€
  • ๋ฐ์ดํ„ฐ ex) ํŒฅ, ํฌ๋ฆผ, ๊ณ ๊ตฌ๋งˆ ๋“ฑ
  • ๋ฉ”์†Œ๋“œ(=ํ–‰๋™) ex) ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋ถ•์–ด๋นต์ด ์ต๋Š”๋‹ค
  • ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค) ๊ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ„ ๋ถ•์–ด๋นต

๋ถ•์–ด๋นต