[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ][part 2] ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)

JiEunยท2023๋…„ 3์›” 15์ผ
0

โœ”๏ธ ์‹œ์ž‘

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฃผ์š” ๊ฐœ๋… 4๊ฐ€์ง€๋„ ํ•™์Šตํ–ˆ๋‹ค.


๐Ÿ“ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)

  • ์‚ฌ๋žŒ์ด ์„ธ๊ณ„๋ฅผ ๋ณด๊ณ  ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ‰๋‚ด๋‚ธ ๋ฐฉ๋ฒ•๋ก 
  • ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„ ์ฒ ํ•™
  • OOP์˜ ๋ชจ๋“  ๊ฒƒ์€ "๊ฐ์ฒด"๋กœ ๊ทธ๋ฃนํ™”
  • 4๊ฐ€์ง€ ์ฃผ์š” ๊ฐœ๋…์„ ํ†ตํ•ด ์žฌ์‚ฌ์šฉ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด

  • "ํด๋ž˜์Šค"๋ผ๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์ฒญ์‚ฌ์ง„์„ ์‚ฌ์šฉํ•ด ์ฝ”๋“œ ์ž‘์„ฑ
  • Javascript๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํŒจํ„ด์œผ๋กœ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ํŠน์ง•์€ ๋น ๋ฅด๊ฒŒ ํ˜„๋Œ€ ์–ธ์–ด์— ์ ์šฉ ๋˜์—ˆ๋‹ค.

๐Ÿ“ 4๊ฐ€์ง€ ์ฃผ์š”๊ฐœ๋…

โ‘  ์บก์Šํ™”(Encapsultion), โ‘ก ์ถ”์ƒํ™”(Abstraction), โ‘ข ์ƒ์†(Inheritanece), โ‘ฃ ๋‹คํ˜•์„ฑ(Polymorphism) 4๊ฐ€์ง€ ์ฃผ์š” ๊ฐœ๋…์ด ์žˆ๋‹ค.

โ‘  ์บก์Šํ™”(Encapsultion)

  • ๋ง๊ทธ๋Œ€๋กœ ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜์˜ ๋‹ค์œ„๋กœ ๋ฌถ๋Š” ๊ฒƒ
  • ์€๋‹‰(hiding) : ๊ตฌํ˜„์€ ์ˆจ๊ธฐ๊ณ , ๋™์ž‘์€ ๋…ธ์ถœ์‹œํ‚จ๋‹ค.
  • ๋Š์Šจํ•œ ๊ฒฐํ•ฉ(Loose Coupling)์— ์œ ๋ฆฌ (์–ธ์ œ๋“ ์ง€ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.)

์ฝ”๋“œ ์‹คํ–‰ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ ˆ์ฐจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ,
์ฝ”๋“œ๊ฐ€ ์ƒ์ง•ํ•˜๋Š” ์‹ค์ œ ๋ชจ์Šต๊ณผ ๋‹ฎ๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋ชจ์•„ ๊ฒฐํ•ฉ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

์žฅ์ 

  • ์ฝ”๋“œ๋ฅผ ๋ณต์žกํ•˜๊ธฐ ์•Š๊ฒŒ ๋งŒ๋“ ๋‹ค.
  • ์žฌ์‚ฌ์šฉ์ด ๋†’๋‹ค.

โ‘ก ์ถ”์ƒํ™”(Abstraction)

  • ๋‚ด๋ถ€ ๊ตฌํ˜„์€ ๋ณต์žกํ•˜๋‚˜ ์‹ค์ œ ๋ณด์—ฌ์ง€๋Š” ์˜์—ญ์€ ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฐœ๋…

์˜ˆ๋ฅผ ๋“ค์–ด ์ปดํ“จํ„ฐ ๋‚ด๋ถ€๋Š” ๋ณต์žกํ•˜๊ฒŒ ๋˜์–ด์žˆ์œผ๋‚˜ ์™ธ๋ถ€ ๋ชจ์Šต์€ ๋‹จ์ˆœํ•˜๊ฒŒ ๋˜์–ด์žˆ๋‹ค.

์žฅ์ 

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

โ‘ข ์ƒ์†(Inheritanece)

  • ๋™์ผํ•œ ์†์„ฑ์ด ์กด์žฌํ•˜๊ณ  ๋‹ค๋ฅธ ๊ณณ์— ๋™์ผํ•˜๊ฒŒ ๋ถ€์—ฌํ•  ๋•Œ ์žฌ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์ƒ์†ํ•œ๋‹ค.

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

์žฅ์ 

  • ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ค„์—ฌ ์ค€๋‹ค.
  • ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๋‹ค.

โ‘ฃ ๋‹คํ˜•์„ฑ(Polymorphism)

  • ๋งŽ์€ ํ˜•ํƒœ (๋‹ค์–‘ํ•œ ํ˜•ํƒœ)
  • ๊ฐ์ฒด์— ๋™์ผํ•œ ๋ฉ”์„œ๋“œ๋ผ ํ•ด๋„ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ ๋  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ, ๋‹คํ–ฅ์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํด๋ž˜์Šค์˜ ์ข…๋ฅ˜๋ณ„๋กœ ํ•˜๋‚˜ ํ•˜๋‚˜ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.

์žฅ์ 

  • ๋™์ผํ•œ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์กฐ๊ฑด๋ฌธ ๋Œ€์‹  ๊ฐ์ฒด์˜ ํŠน์„ฑ์— ๋งž๊ฒŒ ๋‹ค๋ฅด๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๊ฐ€๋Šฅํ•˜๋‹ค.

โœ๏ธ ๋งˆ์น˜๋ฉฐ

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

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋ณด์•„๋„ "์•„ ์ด๊ฑด ์ด๋Ÿฐ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์ด๋Ÿฐ์‹์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ์ž‘๋™ ๋˜๊ฒ ๋‹ค" ๋ผ๋Š” ์ƒ๊ฐ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก

์ดํ•ดํ•˜๊ณ  ์‘์šฉํ•˜๋Š” ์—ฐ์Šต์„ ํ•ด์•ผ๊ฒ ๋‹ค.

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

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