Skip to content

Latest commit

ย 

History

History
116 lines (112 loc) ยท 4.92 KB

OOP(Object-Oriented Programming).md

File metadata and controls

116 lines (112 loc) ยท 4.92 KB


OOP๋ž€?

  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • ๊ฐ์ฒด์˜ ๊ด€์ (๊ฐ์ฒด๋ฅผ ๊ธฐ์ค€)์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • ๊ฐ "๊ฐ์ฒด"๋“ค์€ ์„œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค์„ ๊ฐ์ฒด๋กœ ๋ฐ”๋ผ๋ณด๊ณ , ๊ฐ์ฒด๋“ค์„ ์œ ๊ธฐ์ ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋Š” ๊ฒƒ.

OOP์˜ ์žฅ์ 

  • ํ”„๋กœ๊ทธ๋žจ์ด ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ด
  • ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋ฐœ๊ณผ ๋ณด์ˆ˜๊ฐ€ ๊ฐ„ํŽธํ•˜๋‹ค
  • ์ฝ”๋“œ๊ฐ€ ์ง๊ด€์ ์ด๋‹ค

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

OOP ๊ตฌ์„ฑ ์š”์†Œ

  • ํด๋ž˜์Šค(Class)
    • ๊ฐ™์€ ์ข…๋ฅ˜์˜ ์ง‘๋‹จ์— ์†ํ•˜๋Š” ์†์„ฑ๊ณผ ํ–‰์œ„๋ฅผ ์ •์˜ํ•œ ๊ฒƒ.
  • ๊ฐ์ฒด(Object)
    • ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(Instance). ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์†์„ฑ + ๊ฐœ๋ณ„์  ํŠน์„ฑ๊ณผ ํ–‰์œ„ (๋ฉ”์„œ๋“œ : Method)
    • ๊ฐ์ฒด์™€ ์ธ์Šคํ„ด์Šค์˜ ์ฐจ์ด?
      • ๊ฐ์ฒด๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ธ๊ณ„์— ๊ตฌํ˜„ํ•  ๋Œ€์ƒ
      • ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์„ค๊ณ„๋„
      • ์ธ์Šคํ„ด์Šค๋Š” ์„ค๊ณ„๋„์— ๋”ฐ๋ผ ์†Œํ”„ํŠธ ์„ธ๊ณ„์— ๊ตฌํ˜„๋œ ์‹ค์ฒด. ์‹ค์ฒดํ™”๋œ ์ธ์Šคํ„ด์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ๋‹ค.
  • ๋ฉ”์„œ๋“œ(Method)
    • ํด๋ž™์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•. ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์กฐ์ž‘.

OOP์˜ ํŠน์„ฑ

  • ์บก์Šํ™”(Encapsulation)

    • ํ•˜๋‚˜์˜ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๊ทธ ๊ฐ์ฒด๊ฐ€ ํŠน์ •ํ•œ ๋ชฉ์ ์„ ์œ„ํ•œ ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ.
    • ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰๊ณ , ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ž‘์—…
    • ์™ธ๋ถ€์—์„œ ๋ณ€์ˆ˜์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค / ๋ฉ”์†Œ๋“œ๋กœ๋งŒ ์กฐ์ž‘ ๊ฐ€๋Šฅ
  • ์ถ”์ƒํ™”(Abstraction)

    • ๊ฐ์ฒด๋“ค์ด ๊ฐ€์ง„ ๊ณตํ†ต์˜ ํŠน์„ฑ๋“ค์„ ํŒŒ์•…ํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ํŠน์„ฑ๋“ค์„ ์ œ๊ฑฐํ•˜๋Š” ๊ณผ์ •
    • ๊ฐ์ฒด๋“ค์ด ๊ฐ€์ง„ ๋™์ž‘๋“ค์„ ๊ธฐ์ค€์œผ๋กœ ์ด์šฉ์ž๋“ค์ด ๋™์ž‘๋งŒ ์‰ฝ๊ฒŒ ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
    • ์ด์šฉ์ž๋“ค์ด ๊ฐ์ฒด๋ฅผ ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์†์„ฑ ์œ„์ฃผ๊ฐ€ ์•„๋‹Œ ๋™์ž‘ ์œ„์กฐ ์ฃผ์˜
    • ์–ด๋– ํ•œ ๋™์ž‘๊ณผ ์†์„ฑ์„ ์ •์˜ํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ์ •์˜๋“ค์„ ์‚ญ์ œํ•˜์—ฌ ์ด์šฉ์ž๊ฐ€ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค
    • ์ถ”์ƒํด๋ž˜์Šค?
  • ๋‹คํ˜•์„ฑ(Polymorphism)

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

    • ํ•œ ๋ฒˆ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ.
    • ์ƒ์„ฑ์ž ํ•จ์ˆ˜(Constructor) & ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜(Factory)
      • ์ƒ์„ฑ์ž ํ•จ์ˆ˜ : new๋ผ๋Š” ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ํ•จ์ˆ˜์— ์ •์˜๋œ ๋‚ด์šฉ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ
      • ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜ : ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
  • ์ƒ์†์„ฑ

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