[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐ŸŸ ์›จ์ง€์˜ OOP(๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)

KIM YONG GUยท2023๋…„ 9์›” 30์ผ
0

์šฐ์•„ํ•œํ…Œํฌ

๋ชฉ๋ก ๋ณด๊ธฐ
20/41

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

  1. ํ”„๋กœ๊ทธ๋žจ ๋ฐฉ๋ฒ•๋ก 
  2. ์‚ฌ๋žŒ์ด ํ˜„์‹ค์  ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐœ๋ฐœ์— ์ ‘๋ชฉ
    • ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.
    • ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

ํ‚ค์›Œ๋“œ๋กœ ์•Œ์•„๋ณด๋Š” ๊ฐ์ฒด์ง€ํ–ฅ

  1. ๊ฐ์ฒด
  • ๊ฐ์ฒด๋Š” ํ˜„์‹ค์˜ ๋ฌด์—‡์ธ๊ฐ€์— ๋Œ€์‘ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.
  • class๋Š” ๊ฐ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํ•˜๋‚˜์˜ ์ˆ˜๋‹จ์ด๋‹ค (class != ๊ฐ์ฒด)

๊ฐ์ฒด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

  • ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ํ˜‘๋ ฅ(Collaboration) ํ•˜๋Š” ์—ญํ• (role)์„ ๋งก๊ณ  ์žˆ๋Š” ๋Œ€์ƒ.
  • ์—ญํ• (role)์„ ๋งก์œผ๋ฉด ์ž„๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ฑ…์ž„(responsibility)์ด ์ƒ๊ธด๋‹ค.
  • ์ฑ…์ž„์„ ๋‹คํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  1. ํ˜‘๋ ฅ๊ณผ ์ฑ…์ž„, ์—ญํ™œ
  • ํ˜‘๋ ฅ(Collaboration)
    • ์‹œ์Šคํ…œ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ์ฐธ์—ฌํ•˜์—ฌ ํ–‰๋™ํ•˜๋Š” ๊ฒƒ.
    • ex) ์น˜ํ‚จ์„ ํŠ€๊ฒจ์„œ ์†๋‹˜์—๊ฒŒ ๋ฐฐ๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.
  • ์ฑ…์ž„(Collaboration)์ด๋ž€
    • ํ˜‘๋ ฅ ์†์—์„œ ๋ณธ์ธ์ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž„๋ฌด์˜ ๋‚ด์šฉ์„ ์•Œ๊ณ , ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ.
    • ex) ์น˜ํ‚จ์„ ํŠ€๊ธธ ๊ฐ์ฒด๋Š” ์น˜ํ‚จ์„ ๋ง›์žˆ๊ฒŒ ์กฐ๋ฆฌํ•  ์ฑ…์ž„์„ ๊ฐ–๋Š”๋‹ค.
  • ์—ญํ• (role) ์ด๋ž€?
    • ๋™์ผํ•œ ๋ชฉ์ ์„ ๊ฐ€์ง„ ์ฑ…์ž„์˜ ๋ฌถ์Œ

    • ex) ์น˜ํ‚จ์„ ์กฐ๋ฆฌํ•  ์ฑ…์ž„์„ ๊ฐ€์ง€๋Š” ์—ญํ• ์€ ์š”๋ฆฌ์‚ฌ์ด๋‹ค.

  1. ๋ฉ”์‹œ์ง€

    • ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด์— ์ฑ…์ž„์„ ๋‹คํ•˜๋ผ๊ณ  ์š”๊ตฌํ•œ๋‹ค.
    • ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฐ์ฒด๋Š” ๋ฌด์—‡์„ ํ• ์ง€๋งŒ ์š”๊ตฌํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€๋Š” ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
    • ๊ฐ์ฒด๋Š” ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋ผ๊ณ  ์š”๊ตฌ๋ฐ›์ง€๋งŒ, ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ง€๋Š” ์ž์œจ์— ๋งก๊ธด๋‹ค.

  2. ์ž์œจ์„ฑ(์˜์ธํ™”)

    • ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ํ˜„์‹ค์„ธ๊ณ„์˜ ์ฐจ์ด์ 
      • ํ˜„์‹ค ์„ธ๊ณ„์˜ ๊ฐ€๊ฒŒ๋Š” ๊ฑด๋ฌผ์— ๋ถˆ๊ณผํ•˜๋‹ค.
      • ๊ฐ์ฒด์ง€ํ–ฅ ์„ธ๊ณ„์˜ ์น˜ํ‚จ ๊ฐ€๊ฒŒ๋Š” ์Šค์Šค๋กœ ์น˜ํ‚จ์„ ํŠ€๊ธฐ๊ณ , ์น˜ํ‚จ์„ ๊ฑด๋„ค์–ด ์ค€๋‹ค.
    • ์ฆ‰, ๊ฐ์ฒด์ง€ํ–ฅ์—์„  ๊ฐ์ฒด๊ฐ€ ์ž์œจ์ ์œผ๋กœ, ๋Šฅ๋™์ ์œผ๋กœ ํ–‰๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์˜์ธํ™” ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
    • ์ž์œจ์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž์‹ ์˜ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  1. ๋‹คํ˜•์„ฑ

    • ๋‹คํ˜•์„ฑ์„ ํ™œ์šฉํ•˜๋Š” ๋ชฉ์ ์€ ์„œ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•œ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด ๋‹ค๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.
    • ๋™์ผํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค == ๊ฐ™์€ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • ๋‹ค๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•œ๋‹ค == ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์€ ์ž์œจ์ ์ด๋‹ค.

์ค‘๊ฐ„ ์ •๋ฆฌ

  1. ๊ฐ์ฒด๋Š” ํ˜„์‹ค์˜ ๊ฐœ๋…์„ ์ถ”์ƒํ™”ํ•œ ๊ฒƒ์ด๋‹ค.
  2. ๊ฐ์ฒด๋“ค์€ ์„œ๋กœ ํ˜‘๋ ฅํ•˜๊ณ , ์—ญํ• ์„ ๋งก์•„ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋ฌธ์ œ์ƒํ™ฉ์„ ํ•ด๊ฒฐํ•œ๋‹ค.
  3. ํ•˜์ง€๋งŒ ํ˜„์‹ค์˜ ์‚ฌ๋ฌผ๊ณผ ๋‹ฌ๋ฆฌ ๊ฐ์ฒด๋Š” ๋Šฅ๋™์ ์ด๊ณ  ์ž์œจ์ ์ธ ์กด์žฌ์ด๋‹ค.

โ€ป๋น ์ง€๊ธฐ ์‰ฌ์šด ํ•จ์ •

ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•œ ์„ค๊ณ„๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์˜ ์„ค๊ณ„๋ฅผ ํ•˜๊ธฐ ์‰ฝ๋‹ค.

-> ์น˜ํ‚จ์ง‘์€ ์š”๋ฆฌ์‚ฌ, ์ „ํ™”๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ด. ๋ฐฐ๋‹ฌ์›์€ ๋ฐฐ๋‹ฌ๋„์ฐฉ์ง€. ์น˜ํ‚จ, ๋ฐ›์•„์•ผ ํ•  ๋ˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•˜๊ณ ...

๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์˜ ๋ฌธ์ œ์ 

(1) getter, setter๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ์ถ”๊ฐ€๋˜์–ด ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง„๋‹ค. (์„œ๋กœ ์•Œ๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋งŽ์•„์ง„๋‹ค)
-> ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง€๋ฉด ๋ฐ์ดํ„ฐํ˜•(ํƒ€์ž…)์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ, ์œ ์ง€๋ณด์ˆ˜ ๊ธฐ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค

(2) ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…๊ณผ ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ๋˜์–ด ์‘์ง‘๋„๊ฐ€ ๋‚ฎ์•„์ง„๋‹ค. (์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ด์œ ๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•œ๋‹ค)

์ฑ…์ž„ ์ฃผ๋„ ๊ฐœ๋ฐœ(๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์น˜ํ‚จ์ง‘ ๋งŒ๋“ค๊ธฐ)

  1. ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์ธ ์‹œ์Šคํ…œ ์ฑ…์ž„์„ ํŒŒ์•…ํ•œ๋‹ค.

    • ์น˜ํ‚จ ์ฃผ๋ฌธ์„ ๋ฐ›์•„ ์†๋‹˜์—๊ฒŒ ๋ฐฐ๋‹ฌํ•œ๋‹ค.
  2. ์‹œ์Šคํ…œ ์ฑ…์ž„์„ ๋” ์ž‘์€ ์ฑ…์ž„์œผ๋กœ ๋ถ„ํ• ํ•œ๋‹ค.

    • ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
      • ์น˜ํ‚จ ์ฃผ๋ฌธ์„ ๋ฐ›๋Š”๋‹ค.
      • ์น˜ํ‚จ์„ ์š”๋ฆฌํ•œ๋‹ค.
      • ์น˜ํ‚จ์„ ์†๋‹˜์—๊ฒŒ ๋ฐฐ๋‹ฌํ•œ๋‹ค.
  3. ๋ถ„ํ• ๋œ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ ˆํ•œ ๊ฐ์ฒด ๋˜๋Š” ์—ญํ• ์„ ์ฐพ์•„ ์ฑ…์ž„์„ ํ• ๋‹นํ•œ๋‹ค.

  1. ๊ฐ์ฒด๊ฐ€ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด๋ฅผ ์ฑ…์ž„์งˆ ์ ์ ˆํ•œ ๊ฐ์ฒด ๋˜๋Š”
    ์—ญํ• ์„ ์ฐพ๋Š”๋‹ค.

  1. ํ•ด๋‹น ๊ฐ์ฒด ๋˜๋Š” ์—ญํ• ์—๊ฒŒ ์ฑ…์ž„์„ ํ• ๋‹นํ•จ์œผ๋กœ์จ ๋‘ ๊ฐ์ฒด๊ฐ€ ํ˜‘๋ ฅํ•˜๊ฒŒ ํ•œ๋‹ค.

profile
Engineer, Look Beyond the Code.

0๊ฐœ์˜ ๋Œ“๊ธ€