
π κ°μ²΄μ§ν₯
π¬Β κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°κ³Ό μ μ°¨μ§ν₯ νλ‘κ·Έλλ°
μ μ°¨μ§ν₯ νλ‘κ·Έλλ°
λ°μ΄ν° μ€μ¬
μ ν¨μλ₯Ό ꡬννλ©° νλ‘κ·Έλ¨μ μμ°¨μ μΌλ‘ μ²λ¦¬
νμ¬ νλ‘κ·Έλ¨ μ μ²΄κ° μ κΈ°μ μΌλ‘ μ°κ²°λμΌ ν¨
- μ₯μ : μλ λΉ λ¦
- λ¨μ : μ½λμ μμκ° λ°λλ©΄ μ¬λ°λ₯Έ κ²°κ³Όλ₯Ό 보μ₯νκΈ° μ΄λ €μ
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°
κΈ°λ₯ μ€μ¬
μΌλ‘ μ¬λ¬κ°μ κ°μ²΄ λ¨μ
λ‘ λλ μμ
νλ λ°©μμΌλ‘ κ°μ²΄λ€μ΄ μλ‘ μ κΈ°μ
μΌλ‘ μνΈμμ©νλ νλ‘κ·Έλλ°
- μ₯μ : μ½λ μ¬νμ©μ± λμ, μ μ§λ³΄μ μ¬μ
- λ¨μ : μ€κ³ μ μκ°/λ
Έλ ₯ λ§μ΄ νμ, μλμ μΌλ‘ μ²λ¦¬μλ λλ¦Ό
ν΄λμ€ vs μΈμ€ν΄μ€(κ°μ²΄)
ν΄λμ€
: λ³μμ λ©μλλ‘ μ μν κ²μΌλ‘ κ°μ²΄λ₯Ό λ§λ€κΈ° μν λ©ν μ 보
μΈμ€ν΄μ€
: ν΄λμ€μμ μ μν κ²μ ν λλ‘ μ€μ λ©λͺ¨λ¦¬μ ν λΉλ κ²
π¬Β κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(OOP)μ νΉμ§
- Object-Oriented Programming
- μΊ‘μν, μμ, μΆμν, λ€νμ± 4κ°μ§ νΉμ§μ κ°μ§
βΎ μΊ‘μν
- μ°κ΄ μλ λ³μμ ν¨μλ₯Ό ν΄λμ€λ‘ λ¬Άλ μμ
βΎ μμ
- μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ νΉμ±κ³Ό κΈ°λ₯μ λ¬Όλ €λ°μ μ¬μ¬μ©μ±μ λμ΄λ μν
βΎ μΆμν
- μΈν°νμ΄μ€λ‘ 곡ν΅μ μΈ νΉμ±λ€μ λ¬Άμ΄ νννλ κ²
βΎ λ€νμ±
- νλμ κ°μ²΄κ° μ¬λ¬κ°μ§ νμ
μ κ°μ§ μ μλ κ²μ μλ―Ένλ©°, λνμ μΈ νΉμ§μΌλ‘λ μ€λ²λ‘λ©, μ€λ²λΌμ΄λ©μ΄ μμ
π¬Β κ°μ²΄μ§ν₯ μ€κ³ 5μμΉ
- SRP(λ¨μΌ μ±
μ μμΉ), OCP(κ°λ°©-νμ μμΉ), LSP(리μ€μ½ν μΉν μμΉ), ISP(μΈν°νμ΄μ€ λΆλ¦¬ μμΉ), DIP(μμ‘΄ μμ μμΉ)μ λ§νλ©°, μμλ₯Ό λ°μ SOILD μμΉμ΄λΌκ³ λΆλ¦
- νλ‘κ·Έλλ¨Έκ° μκ°μ΄ μ§λλ μ μ§ λ³΄μμ νμ₯μ΄ μ¬μ΄ μννΈμ¨μ΄λ₯Ό λ§λλλ° μ΄ μμΉλ€μ μ μ© κ°λ₯
βΎ SRP(Single Responsibility Principle), λ¨μΌ μ±
μ μμΉ
- κ°μ²΄λ λ¨ νλμ μ±
μλ§ κ°μ ΈμΌ νλ€λ μμΉ
- μμ€ν
μ λ³νκ° μκΈ°λλΌλ μν₯μ μ΅μν ν μ μλ€λ μ₯μ
βΎ OCP (Open-Closed Principle), κ°λ°©-νμ μμΉ
- κΈ°μ‘΄μ μ½λλ₯Ό λ³κ²½νμ§ μμΌλ©΄μ, κΈ°λ₯μ μΆκ°ν μ μλλ‘ μ€κ³κ° λμ΄μΌ νλ€λ μμΉ
- νμ₯μ λν΄μλ κ°λ°©μ μ΄κ³ μμ μ λν΄μλ νμμ μΌλ‘ μ€κ³ν΄μΌ νλ€λ μλ―Έ
βΎ LSP (Liskovβs Substitution Principle), 리μ€μ½ν μΉν μμΉ
- μμ ν΄λμ€λ μ΅μν μμ μ λΆλͺ¨ ν΄λμ€μμ κ°λ₯ν νμλ μνν μ μμ΄μΌ νλ€λ μ€κ³ μμΉ
βΎ ISP (Interface Segregation Principle), μΈν°νμ΄μ€ λΆλ¦¬ μμΉ
- μμ μ΄ μ¬μ©νμ§ μλ μΈν°νμ΄μ€λ ꡬννμ§ λ§μμΌ νλ€λ μ€κ³ μμΉ
βΎ DIP (ependency Inversion Principle), μμ‘΄ μμ μμΉ
- κ°μ²΄λ€μ΄ μλ‘ μ 보λ₯Ό μ£Όκ³ λ°μ λ μμ‘΄ κ΄κ³κ° νμ±λλλ°, μ΄ λ κ°μ²΄λ€μ λ³ννκΈ° μ΄λ €μ΄ κ², κ±°μ λ³νκ° μλ κ²μ μμ‘΄νλΌλ μμΉ
- ꡬν ν΄λμ€μ μμ‘΄νμ§ λ§κ³ , μΈν°νμ΄μ€μ μμ‘΄ν΄μΌν¨