Skip to content

Latest commit

ย 

History

History
42 lines (31 loc) ยท 2.68 KB

File metadata and controls

42 lines (31 loc) ยท 2.68 KB

Object Oriented Programming

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

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด์ „: ์ปดํ“จํ„ฐ ์ค‘์‹ฌ. ์ปดํ“จํ„ฐ๊ฐ€ ์‚ฌ๊ณ ํ•˜๋Š”๋Œ€๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๊ฒƒ.
๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ์ธ๊ฐ„ ์ค‘์‹ฌ. ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์˜ฎ๊ฒจ์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ฒƒ.
ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ๋“ค์„ ๊ฐ์ฒด๋ผ๊ณ  ๋ณด๊ณ  ๊ทธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ํŠน์ง•๋“ค์„ ๋ฝ‘์•„์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•จ. (--> ์ถ”์ƒํ™”)

์žฅ์ 

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

๋‹จ์ 

  • ๊ฐ์ฒด ๊ฐ„์˜ ์ •๋ณด ๊ตํ™˜์€ ๋ชจ๋‘ ๋ฉ”์‹œ์ง€ ๊ตํ™˜ -> ์‹คํ–‰ ์‹œ์Šคํ…œ์— ๋งŽ์€ overhead ๊ฐ€ ๋ฐœ์ƒ. (ํ•˜๋“œ์›จ์–ด์˜ ๋ฐœ์ „์œผ๋กœ ๋งŽ์€ ๋ถ€๋ถ„ ๋ณด์™„๋จ)
  • ๊ฐ์ฒด๊ฐ€ ์ƒํƒœ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ. ๋ณ€์ˆ˜๋กœ ์ธํ•ด ๊ฐ์ฒด๊ฐ€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋ฅผ ๊ฐ–๊ฒŒ ๋˜๊ณ , ๋ฒ„๊ทธ ๋ฐœ์ƒ์‹œํ‚ด -> ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ๋“ฑ์žฅ

๊ฐ์ฒด ์ง€ํ–ฅ์  ์„ค๊ณ„ ์›์น™

  1. SRP(Single Responsibility Principle) : ๋‹จ์ผ ์ฑ…์ž„ ์›์น™
    ํด๋ž˜์Šค๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ฑ…์ž„์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
    ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ด์œ ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ด์œ ์ด์–ด์•ผ ํ•œ๋‹ค.
  2. OCP(Open-Closed Principle) : ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™
    ํ™•์žฅ์— ์—ด๋ ค ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    ๋ณ€๊ฒฝ์— ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  3. LSP(Liskov Substitution Principle) : ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™
    ์ƒ์œ„ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ํ•˜์œ„ ํƒ€์ž…์˜ ๊ฐ์ฒด๋กœ ์น˜ํ™˜ํ–ˆ์„ ๊ฒฝ์šฐ
    -> ์ƒ์œ„ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•œ๋‹ค.
  4. ISP(Interface Segregation Principle) : ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™
    ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ทธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
  5. DIP(Dependency Inversion Principle) : ์˜์กด ์—ญ์ „ ์›์น™
    ๊ณ ์ˆ˜์ค€ ๋ชจ๋“ˆ์€ ์ €์ˆ˜์ค€ ๋ชจ๋“ˆ์˜ ๊ตฌํ˜„์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

Reference

์ถœ์ฒ˜ https://github.com/JaeYeopHan/Interview_Question_for_Beginner