๐Ÿ’ป [Theory] ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€??

๐Ÿ’ป [Theory] ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?

์•ˆ๋…•ํ•˜์„ธ์š”. ๐Ÿ‘‹

์˜ค๋Š˜์€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด(Object)๋ž€?

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์šฐ์„  ๊ฐ์ฒด๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

๊ฐ์ฒด(Object)๋ž€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์กด์žฌํ•˜๊ฑฐ๋‚˜ ์ถ”์ƒ์ ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ์ค‘์—์„œ ์ž์‹ ๊ณผ ๋‹ค๋ฅธ ๊ฒƒ์„ ์‹๋ณ„๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ์‚ฌ๋žŒ, ์ฑ…, ์ž๋™์ฐจ, ์ปดํ“จํ„ฐ ๋“ฑ ๊ณผ ์ถ”์ƒ์ ์ธ ํ•™๊ณผ, ๊ฐ•์˜, ์ฃผ๋ฌธ ๋“ฑ์ด ๋ชจ๋‘ ๊ฐ์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ๊ฐ์ฒด๋ž€ ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์ด๋‚˜ ๊ฐœ๋…์„ ์‹œ์Šคํ…œ์—์„œ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ‘œํ˜„ํ•˜์—ฌ

์†์‰ฝ๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

๊ฐ์ฒด๋Š” ์ƒํƒœ(์†์„ฑ)์™€ ํ–‰์œ„(ํ–‰๋™)์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜ˆ๋ฅผ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ

  • ์†์„ฑ : ์ด๋ฆ„, ๋‚˜์ด, ์„ฑ๋ณ„ ๋“ฑ
  • ํ–‰์œ„ : ๊ฑท๋Š”๋‹ค, ๋งํ•œ๋‹ค, ์›ƒ๋Š”๋‹ค ๋“ฑ

์ž๋™์ฐจ

  • ์†์„ฑ : ์ƒ‰์ƒ, ๋ชจ๋ธ๋ช…, ์ œ์กฐ์‚ฌ
  • ํ–‰์œ„ : ๋‹ฌ๋ฆฐ๋‹ค, ๋ฉˆ์ถ˜๋‹ค ๋“ฑ

๋Œ€ํ‘œ์ ์ธ ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด์ธ ์ž๋ฐ”์˜ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์„œ ์ƒํƒœ(์†์„ฑ)์„ ํ•„๋“œ(field)๋กœ, ํ–‰์œ„๋ฅผ ๋ฉ”์†Œ๋“œ(method)๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object-Oriented Programming, OOP) ์ด๋ž€ ?

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ƒํ™”์‹œ์ผœ ์ƒํƒœ์™€ ํ–‰์œ„๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ์œ ๊ธฐ์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ๋กœ์ง์„ ๊ตฌ์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด ์‹ค์ œ ์„ธ๊ณ„๋ฅผ ๋ชจ๋ธ๋งํ•ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

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

[์žฅ์ ]

  • ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๋‹ค.
    • ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋งŒ๋“  ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ƒ์†์„ ํ†ตํ•ด ํ™•์žฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ๋‹ค.
    • ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ํด๋ž˜์Šค ๋‚ด๋ถ€์— ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ํ˜น์€ ๋ฉ”์†Œ๋“œ๋กœ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.
  • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค
    • ํด๋ž˜์Šค ๋‹จ์œ„๋กœ ๋ชจ๋“ˆํ™”์‹œ์ผœ์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์—…๋ฌด ๋ถ„๋‹ดํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค.

[๋‹จ์ ]

  • ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๋‹ค.
  • ๊ฐ์ฒด๊ฐ€ ๋งŽ์œผ๋ฉด ์šฉ๋Ÿ‰์ด ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์„ค๊ณ„ ์‹œ ๋งŽ์€ ๋…ธ๋ ฅ๊ณผ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค.

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

1 ) ์ถ”์ƒํ™”

  • ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ฌผ๋“ค์˜ ๊ณตํ†ต์ ์ธ ํŠน์ง•์„ ํŒŒ์•…ํ•ด์„œ ์ด๋ฅผ ํ•˜๋‚˜์˜ ๊ฐœ๋…(์ง‘ํ•ฉ)์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ

  • ๊ฐ์ฒด ์ง€ํ–ฅ์  ๊ด€์ ์—์„œ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋ฐ”๋กœ ์ถ”์ƒํ™”๋ผ๊ณ  ์ •์˜ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”์ƒํ™”๋Š” ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค๊ณ , ๋‹จ์ˆœํ™”๋œ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ๋ณ€ํ™”์— ๋Œ€ํ•œ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

2 ) ์บก์Šํ™”

  • ์—ฐ๊ด€ ์žˆ๋Š” ๊ฒƒ๋“ค์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์ฃผ๋Š” ๊ฒƒ์ด ์บก์Šํ™”์ž…๋‹ˆ๋‹ค.

  • ์ •๋ณด์€๋‹‰ -> ์—ฐ๊ด€์žˆ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ํด๋ž˜์Šค๋กœ ๋ฌถ๊ณ  ์™ธ๋ถ€์— ๊ฐ์ถœ ๋‚ด์šฉ์€ ๊ฐ์ถฅ๋‹ˆ๋‹ค. (์ ‘๊ทผ์ง€์ •์ž๋กœ ๊ณต๊ฐœ ๋  ๊ฒƒ๊ณผ ๊ฐ์ถœ ๊ฒƒ ์ •ํ•จ)

  • ์ž˜ ์บก์Šํ™”(๋ชจ๋“ˆํ™”)๋˜์—ˆ๋‹ค๋Š” ๋ง์€ ์—ฐ๊ด€์žˆ๋Š” ๊ฒƒ๋“ค์ด ์ž˜ ์‘์ง‘๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“ˆ(๊ฐ์ฒด, ํด๋ž˜์Šค)์™€๋Š” ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ, ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ๊ฐ–๊ฒŒํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋‚ด๋ถ€๋กœ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค

์ผ๋ฐ˜์ ์ธ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ๋Š” ์ด ๋•Œ๋ฌธ์— ์ ‘๊ทผ์ œํ•œ์ž(access modifier)๋ผ๋Š” ๋ฌธ๋ฒ•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

public : ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์ œํ•œ ์—†์ด ๋ชจ๋‘ ์ ‘๊ทผ ๊ฐ€๋Šฅ

private : ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€ (ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ)

protected : ์ƒ์†ํ•œ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

์บก์Šํ™”๋ฅผ ํ†ตํ•ด ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ๊ณผ ํŠน์„ฑ์„ ํ•œ ๊ณณ์— ๋ชจ์œผ๊ณ  ๋ถ„๋ฅ˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌํ™œ์šฉ์ด ์›ํ™œํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

3 ) ์ƒ์†

  • ์ƒ์†์€ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์žฌํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์œผ๋กœ ์ด๋ฏธ ์ž‘์„ฑ๋œ ํด๋ž˜์Šค(๋ถ€๋ชจ ํด๋ž˜์Šค)๋ฅผ ์ด์–ด๋ฐ›์•„์„œ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค(์ž์‹ ํด๋ž˜์Šค)๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ์ž์‹ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์„ ๋ฌผ๋ ค๋ฐ›๊ณ  ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ถ”๊ฐ€ ๋˜๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒ์†์€ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ƒ์†์€ ๊ธฐ์กด์— ๋งŒ๋“ค์–ด์ง„ ์ฝ”๋“œ๋ฅผ ์ด์–ด๋ฐ›์•„์„œ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

4 ) ๋‹คํ˜•์„ฑ

  • ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜, ๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding), ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)์ด ๊ฐ€๋Šฅํ•˜๋‹ค

  • ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์ด๋‹ค.

over riding : ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์™€ ๊ฐ™์€ ์ด๋ฆ„, ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ ํ•˜๋Š”๊ฒƒ.

over loading : ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ •์˜ํ•˜๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…๊ณผ ๊ฐœ์ˆ˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ.

๋‹คํ˜•์„ฑ์˜ ์ค‘์š”๋„!

  • ๋‹คํ˜•์„ฑ์˜ ํ•ต์‹ฌ์€ ์„ธ์ƒ์„ ์—ญํ• ๊ณผ ๊ตฌํ˜„์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด๋‹ค. ex) ์—ญํ• - ์ž๋™์ฐจ ๊ตฌํ˜„ - ์•„๋ฐ˜๋–ผ , ํ…Œ์Šฌ๋ผ, k3 , ํฌ๋ฅด์‰ ๋“ฑ๋“ฑ ์‹ค์ œ ๊ตฌํ˜„ ์ž๋™์ฐจ๊ฐ€ ์•„๋ฐ˜๋–ผ์ด๋˜ ํ…Œ์Šฌ๋ผ์ด๋˜ k3์ด๋˜ ๊ฒฐ๊ตญ ๋ณธ ์—ญํ• ์€ ์ž๋™์ฐจ ์—ญํ• ์ด๋‹ค.

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์—ญํ• ์€ ์ธํ„ฐํŽ˜์ด์Šค, ๊ตฌํ˜„์€ ๊ตฌํ˜„ ๊ฐ์ฒด์ด๋‹ค.

  • ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์—ญํ• ๊ณผ ๊ตฌํ˜„์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ

  • ๊ฐ์ฒด ์„ค๊ณ„์‹œ ์—ญํ• (์ธํ„ฐํŽ˜์ด์Šค)์„ ๋จผ์ € ๋ถ€์—ฌํ•˜๊ณ , ๊ทธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌํ˜„ ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ

  • ์—ญํ• (์ธํ„ฐํŽ˜์ด์Šค)์— ๋Œ€ํ•œ ๊ตฌํ˜„ ๊ฐ์ฒด ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒํ•ด์ค€๋‹ค.

๋‹คํ˜•์„ฑ์˜ ๋ณธ์งˆ

  • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ ์‹œ์ ์— ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹คํ˜•์„ฑ์˜ ๋ณธ์งˆ์„ ์ดํ•ดํ•˜๋ ค๋ฉด ํ˜‘๋ ฅ์ด๋ผ๋Š” ๊ฐ์ฒด์‚ฌ์ด์˜ ๊ด€๊ณ„์—์„œ ์‹œ์ž‘ํ•ด์•ผํ•จ
  • ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ , ์„œ๋ฒ„์˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ์„ ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

๋

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

Reference

https://gangnam-americano.tistory.com/15

https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

https://gracefulprograming.tistory.com/130

Written on May 30, 2021