2λΆ μ½λ μ€κ³ > 6μ₯ ν΄λμ€ μ€κ³ > μμ보λ€λ μ»΄ν¬μ§μ μ μ¬μ©νλΌ
- λͺ νν is-a κ΄κ³μμλ μμ (κ³μΈ΅κ΅¬μ‘°μ νν, λ·°λ₯Ό μΆλ ₯)
- μ»΄ν¬μ§μ μ ν΅ν μΈν°νμ΄μ€ λΆλ¦¬μμΉ, 리μ€μ½ν μΉνμμΉ κ°μ
- μμν¨ν΄κ³Ό ν¬μλ© λ©μλ : μΊ‘μνκ° κΉ¨μ§μ§ μλλ‘ κ΄λ¦¬
1. μ± μμ κΈ°μ΅νκ³ μΆμ λ΄μ©
μμμ λν λͺ κ°μ§ λ¨μ
- μμμ νλμ ν΄λμ€λ§μ λμμΌλ‘ ν μ μλ€. μμμ μ¬μ©νλ€ λ³΄λ©΄ λ§μ ν¨μλ₯Ό κ°λ κ±°λν ν΄λμ€λ₯Ό κ°μ§κ² λκ³ μ΄λ 볡μ‘ν κ³μΈ΅κ΅¬μ‘°λ₯Ό λ§λ€μ΄ λΈλ€.
- μμμ ν΄λμ€μ λͺ¨λ κ²μ κ°μ Έμ¨λ€. λ°λΌμ λΆνμν ν¨μλ₯Ό κ°μ§λ ν΄λμ€κ° λ§λ€μ΄μ§ μ μλ€. (μΈν°νμ΄μ€ λΆλ¦¬ μμΉ μλ°)
- μμμ μ΄ν΄νκΈ° μ΄λ ΅κ³ , λ©μλμ μλλ°©μμ μ΄ν΄νκΈ° μνμ¬ μνΌν΄λμ€λ₯Ό μ¬λ¬ λ² νμΈν΄μΌ νλ λ²κ±°λ‘μμ΄ μλ€.
μ΄λ¬ν μμμ λ¨μ μΌλ‘ Composition:μ»΄ν¬μ§μ
μ μ¬μ©νλ κ²μ μ μνλ€.
λ¨, μ»΄ν¬μ§μ μ μ¬μ© μ κ°μ²΄λ₯Ό λ€λ₯Έ λͺ¨λ κ°μ²΄μμ κ°μ§κ³ νμ©νλ μΆκ°μ½λκ° νμνλ€.(μ΄ λΆλΆμ μμλ‘ μμ±λ μ½λλ₯Ό μ°Έκ³ νλ κ²μ΄ νμ) μ΄ λλ¬Έμ μμμ μ νΈνλ κ²½μ°λ λ§λ€. νμ§λ§ μ΄λ¬ν μΆκ° μ½λλ‘ μΈνμ¬ μ½λλ₯Ό μ½λ μ¬λλ€μ΄ μ½λμ μ€νμ λ λͺ ννκ² μμΈ‘ν μ μμΌλ©° ν΄λΉ κ°μ²΄λ₯Ό ν¨μ¬ μ μ°νκ² μ¬μ©ν μ μλ€.
μμμ κ°μ²΄μ κ³μΈ΅κ΅¬μ‘°λ₯Ό λνλΌ λ κ΅μ₯ν μ’μ λꡬμ΄μ§λ§ μνΌν΄λμ€μ λ©μλ, μ μ½, νμ λ±μ λͺ¨λ κ²μ κ°μ Έμ€κΈ° λλ¬Έμ μΌλΆλΆμ μ¬μ¬μ©νκΈ° μν λͺ©μ μΌλ‘λ μ ν©νμ§ μλ€.
λ°λΌμ μμλ°μ λμμ΄ νμλ‘ νμ§ μλ λ©μλλ₯Ό κ°μ§ μ μκΈ° λλ¬Έμ μΈν°νμ΄μ€ λΆλ¦¬ μμΉμ μλ°λλ©° μνΌν΄λμ€μ λμμ μλΈν΄λμ€μμ κΉ¨λ²λ¦¬λ―λ‘ λ¦¬μ€μ½ν μΉν μμΉμλ μλ°λλ€.
μ΄λ° μν©μΌ λ, μ»΄ν¬μ§μ
μ μ¬μ©νλ©΄ μμ κ°μ μ€κ³λ¬Έμ κ° λ°μνμ§ μλλ€. νμ§λ§ νμ
μ κ³μΈ΅ ꡬ쑰λ₯Ό ννν΄μΌ νλ μν©μμλ μΈν°νμ΄μ€λ₯Ό νμ©ν λ€μ€ μμμ΄ λ μ 리ν κ²½μ°κ° μμΌλ―λ‘ μν©μ λ°λ₯Έ μ μ ν μ νμ΄ νμνλ€.
μμμ λ΄λΆμ μΈ κ΅¬ν λ°©λ²μ λ³κ²½μ μνμ¬ ν΄λμ€μ μΊ‘μνκ° κΉ¨μ΄μ§ μ μλ€. λΌμ΄λΈλ¬λ¦¬μ μμ‘΄μ μΈ μν©μ κ²½μ°μ λΌμ΄λΈλ¬λ¦¬ λ³κ²½ μ¬νμ λ°λΌμ μλν λλ‘ μ½λκ° μλνμ§ μμ μ μκΈ° λλ¬Έμ μ»΄ν¬μ§μ
μ μ¬μ©ν΄ μ£Όλ κ²μ΄ νμνλ€.
λ€λ§ μ»΄ν¬μ§μ
μ μ¬μ©νλ©΄ λ€νμ±μ΄ μ¬λΌμ§κΈ° λλ¬Έμ λ€νμ±μ μ μ§νκΈ° μνμ¬ μμμ μ¬μ©νλ κ²½μ°μλ μμ(delegation)ν¨ν΄μ μ¬μ©ν μ μλ€.
μμ(delegation) ν¨ν΄μ ν΄λμ€κ° μΈν°νμ΄μ€λ₯Ό μμλ°κ² νκ³ , ν¬ν¨ν κ°μ²΄μ λ©μλλ₯Ό νμ©ν΄μ, μΈν°νμ΄μ€μμ μ μν λ©μλλ₯Ό ꡬννλ ν¨ν΄μΌλ‘ μ΄λ κ² κ΅¬νλ λ©μλλ₯Ό ν¬μλ© λ©μλ(forwarding method)λΌκ³ λΆλ₯Έλ€.
ν¬μλ© λ©μλλ₯Ό μ¬μ©νμ¬ μμ±νλ©΄ μ»΄νμΌ μμ μ ν΄λΉ λ©μλλ€μ΄ μλμΌλ‘ λ§λ€μ΄μ§λ€.
μ»΄ν¬μ§μ
κ³Ό μμμ μ°¨μ΄
- μ»΄ν¬μ§μ
μ λ μμ νλ€. μΈλΆμμ κ΄μ°°λλ λμμλ§ μμ‘΄νλ€.
- μ»΄ν¬μ§μ
μ λ μ μ°νλ€. μ»΄ν¬μ§μ
μ μ¬λ¬ ν΄λμ€λ₯Ό λμμΌλ‘ ν μ μμΌλ©° νμν κ²λ§ λ°μμ μ¬μ©ν μ μλ€.
- μ»΄ν¬μ§μ
μ λ λͺ
μμ μ΄λ€. μ₯μ μ΄μ λ¨μ .
- μ»΄ν¬μ§μ
μ μκ°λ³΄λ€ λ²κ±°λ‘λ€. λμ ν΄λμ€μ κΈ°λ₯ μΆκ° μ μ΄λ₯Ό ν¬ν¨νλ κ°μ²΄μ μ½λλ₯Ό μμ ν΄μΌ νλ€.
- μμμ λ€νμ±μ νμ©ν μ μλ€. μλ μ κ².
μμμ μΈμ μ¬μ©νλ κ²μ΄ μ’μκ°?
- "is-a"κ΄κ³κ° λͺ
νν λ, μνΌν΄λμ€λ₯Ό μμνλ λͺ¨λ μλΈν΄λμ€λ μνΌν΄λμ€λ‘λ λμν μ μμ΄μΌ νλ©° μνΌν΄λμ€μ λͺ¨λ λ¨μ ν
μ€νΈλ μλΈν΄λμ€λ‘λ ν΅κ³Όν μ μμ΄μΌ νλ€. (λ¦¬μ€ μ½ν μΉν μμΉ)
- κ°μ²΄ μ§ν₯ νλ μμν¬μμ λ·°λ₯Ό μΆλ ₯νκΈ° μν΄ μ¬μ©λλ Application(JavaFX), Activity(Android), UIViewController(iOS), React.Component(React) λ±μ λ·°λ₯Ό μΆλ ₯νκΈ° μν΄ μ¬μ©νλ κ²μλ μμμ μ¬μ©νλ κ²μ΄ μ’λ€λ κ²μ κΈ°μ΅νλΌ.
2. μ€λ μ½μ μκ°, λ μ€λ₯΄λ μκ°μ λν μ 리
νμ λͺ¨λ κΈ°μ μμ μ μ½μ λ, λλ μκ°μ "λλ μ°Έ μλͺ»λ λ°©μμΌλ‘ μ΄μμꡬλ." μ λλ€. μ λ Kotlinμ ν΅ν μ€λ¬΄ νλ‘μ νΈ κ²½νμ΄ μ½ 2λ μ λμΈλ°, κ·Έ μκ° λμ μ λ§ κΈ°λ₯ μΆκ°μλ§ κΈκΈνꡬλ νλ μκ°μ΄ λ€μμ΅λλ€.
μ»΄ν¬μ§μ , λ€μ΄λ λ΄€κ³ μΌλΆ μ½λμ μ μ©λ κ²λ 보μμ§λ§ μ κ° μ κ·Ήμ μΌλ‘ μ½λμ λ°μνλ μ μ μμλ κ² κ°μ΅λλ€. Javaλ‘ κ΅¬ννλ©΄μ μμμ΄ μ΅μνλ 건μ§...λ μ λͺ¨λ₯΄κ² μ§λ§ λ§€λ² μμμΌλ‘ ꡬννκ³ μ¬μ©νμ§ μλ λΆνμν μ½λμλ μ£Όμμ λ¬μμ κ΄λ¦¬λ₯Ό νμμ΅λλ€. //TODO μ΄λ° μμΌλ‘μ.π€―
μ΄λ² μ₯μ ν΅ν΄ μ»΄ν¬μ§μ μ΄ μ νμνλμ§, μ κ·Έ μ½λλ€μ μ»΄ν¬μ§μ μΌλ‘ ꡬννλ κ±΄μ§ μ’ λ λͺ ννκ² μ μ μμκ³ μμΌλ‘μ μ½λμλ κΌ μ μ©ν΄μ μ¬μ©ν΄μΌκ² λ€λ νμμ±μ λκΌμ΅λλ€. κΌκΌ...κΌ...μ»΄ν¬μ§μ ..μ μ©...!