OOP

๐Ÿ“Œ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ์†๋œ ๋ฌธ๋ฒ•

  • Signature (์„ ์–ธ๋ฌธ): ํ•จ์ˆ˜์˜ ์ด๋ฆ„๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ, ๋ฆฌํ„ด๊ฐ’, Interface์˜ ๋ฌธ๋ฒ•
    • ๋””๋ฒ„๊น… ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ ๊ตฌ์„ฑ ์š”๊ฑด
  • โค๏ธ Dependency (์˜์กด์„ฑ) Invert (๋ฐ˜์ „), Break (๋‹จ์ ˆ) ์™€ ๊ฐ™์€ ๊ด€๋ฆฌ โžก ์ ์ ˆํ•œ Coupling (๊ฒฐํ•ฉ๋„) ์œ ์ง€

Realization (์‹ค์ฒดํ™”) ๊ด€๊ณ„

๐Ÿ“Œ Interface (๊ธฐ๋Šฅ, ํ–‰์œ„)๋ฅผ ํ†ตํ•ด ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๊ณ„

๋ฌธ๋ฒ•

Java
Abstract Class (์ถ”์ƒ ํด๋ž˜์Šค)์ฒ˜๋Ÿผ ์ฐธ์กฐ ๋ณ€์ˆ˜๋กœ๋งŒ ํ™œ์šฉ ๊ฐ€๋Šฅ, ๋ณดํ†ต Interface๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์„ ํƒ

  1. interface ์ธํ„ฐํŽ˜์ด์Šค๋ช… { };
    • public static final ๋ฉค๋ฒ„ ๋ณ€์ˆ˜, Method Signature๋งŒ ํฌํ•จ ๊ฐ€๋Šฅ
  2. class ํด๋ž˜์Šค๋ช… implements ์ธํ„ฐํŽ˜์ด์Šค๋ช…1 [, ์ธํ„ฐํŽ˜์ด์Šค๋ช…2, ...] { };
    • ๋‹ค์ค‘ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
      #Java8
  • ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ (Default Method): Interface ๋‚ด์—์„œ ๊ธฐ๋ณธ ๊ตฌํ˜„ ์ •์˜ ๊ฐ€๋Šฅ
    • default ํ•จ์ˆ˜์›ํ˜•/์ •์˜;
    • ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ ์ถฉ๋Œ: ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ–๋Š” Interface๋ฅผ ๋‹ค์ค‘ ๊ตฌํ˜„ํ•  ๋•Œ, ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์ธ ๊ฒฝ์šฐ
    • โค๏ธ ํด๋ž˜์Šค ๊ฐ„ ๊ณ„์ธต ๊ตฌ์กฐ์˜ ๋‹จ์ˆœํ™” โžก Minimize SW Complexity (SW Crisis)
      #CPP
      Interface ๋ฌธ๋ฒ• ๋”ฐ๋กœ X โžก ์ˆœ์ˆ˜ ๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ™œ์šฉํ•ด์•ผ ํ•จ