μμ μ‘°μ¬π ββοΈ - μμ보λ€λ μ»΄ν¬μ§μ μ μ¬μ©νμ
Last updated
Last updated
λͺ©μ°¨
μμλ³΄λ€ μ»΄ν¬μ§μ μ μ¬μ©νλ κ² μ’μ μ΄μ λ₯Ό μμ보μ.
μ°μ μμκ³Ό μ»΄ν¬μ§μ μ λ€μκ³Ό κ°λ€.
μμ : λΆλͺ¨ ν΄λμ€λ₯Ό μμν΄λμ€κ° μ¬μ¬μ©+νμ₯νλ κ² (IS-A κ΄κ³)
μ»΄ν¬μ§μ : κΈ°μ‘΄ ν΄λμ€κ° μλ‘μ΄ ν΄λμ€μ ꡬμ±μμκ° λλ κ² (HAS-A κ΄κ³)
μμμ λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό μ¬μ¬μ©+νμ₯ν μ μλ€. μ»΄ν¬μ§μ μ μ½λ μ¬μ¬μ©λ§ νκ³ , λΆλͺ¨ λ©μλλ₯Ό νμ₯ν μλ μλ€.
μμ κ΄κ³μμλ μ¬λ¬ λ¬Έμ κ° λ°μνκΈ°λ νλ€.
λ€μκ³Ό κ°μ μν©μ΄ μμ μ μλ€.
μ΄ κ²½μ° νμ ν΄λμ€κ° μμ ν΄λμ€μ κ°νκ² κ²°ν©, μμ‘΄νκ² λλ€. μ¦, μΊ‘μνλ₯Ό κΉ¨λ¨λ¦°λ€(μμ ν΄λμ€μ ꡬνμ΄ νμ ν΄λμ€μ λ ΈμΆλκ³ κ°νκ² κ²°ν©/μμ‘΄). μ΄ κ΅¬μ‘°λ λͺ κ°μ§ λ¬Έμ κ° μκΈΈ μ μλ€.
λ§μ½ λΆλͺ¨ν΄λμ€μμ νλμ νμ λ₯Ό λ°κΎΈλ©΄, μμ ν΄λμ€λ€λ ν΄λΉ νλ νμ μ μΌμΌμ΄ λͺ¨λ μμ ν΄μ£Όμ΄μΌ νλ€. μ΄λ°μμΌλ‘ λ³κ²½μ μ μ°νμ§ λͺ»νλ€.
λΆλͺ¨ ν΄λμ€ λ©μλ μ¬μ΄μ λ‘μ§μ λͺ¨λ₯΄κ³ μμ ν΄λμ€μμ μ€λ²λΌμ΄λ©νλ€λ©΄, μμ ν΄λμ€μ λ©μλκ° μνμ§ μκ² μλͺ» λμν μ μλ€. μ°Έκ³ λ§ν¬
μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μ»΄ν¬μ§μ μ μ¬μ©νμ.
Carν΄λμ€μ Engine ν΄λμ€κ° μΈμ€ν΄μ€λ‘ λ€μ΄κ°μλ€.
Engine ν΄λμ€μ μ½λλ₯Ό μ¬μ¬μ©νλ €λ©΄, engine μΈμ€ν΄μ€μ λ©μλλ₯Ό νΈμΆνλ λ°©μμΌλ‘ λμνλ€. κΈ°μ‘΄ ν΄λμ€(Engine ν΄λμ€)μ μ½λκ° λ°λλλΌλ μλ‘μ΄ ν΄λμ€(Car)μ μν₯μ΄ μ λ€. μλ₯Ό λ€μ΄, Engine ν΄λμ€μ μ΄λ€ νλ νμ μ΄ λ³κ²½λλλΌλ, Car ν΄λμ€μμλ μ½λλ₯Ό λ°κΏ νμμλ€.
μ¦, ν΄λμ€ κ° μμ‘΄ κ΄κ³κ° μμΌλ μμ ν΄λμ€μ μ½λκ° λ°λμ΄μ νμ ν΄λμ€μ μ½λλ₯Ό λ€μ λ³κ²½ν΄μ£Όμ΄μΌ νλ λ°©μμ΄ μλλ€. λ©μλ νΈμΆμ ν΅ν΄ μ¬μ©νλ©΄ λλ€. λ³κ²½μ μ μ°νκ³ μμ νλ€.
μ΄μ²λΌ μ»΄ν¬μ§μ μ λ©μλλ₯Ό μ¬μ¬μ©μ ν μ μμΌλ, μ€λ²λΌμ΄λ©(νμ₯)ν μλ μλ€. λ°λΌμ νμ₯ κ΄λ ¨νμ¬ λ°μνλ λ¬Έμ μμ μμ λ‘λ€.
The composition also provides code reusability but the difference here is we do not extend the class for this. μ°Έκ³ λ§ν¬
μμκ³Ό μ»΄ν¬μ§μ μ μ μ νκ² μ¬μ©νλ©΄ λ€μκ³Ό κ°λ€.
Engine κΈ°λ₯μ μ¬μ¬μ©νκΈ° μν΄μ Carμ μ»΄ν¬μ§μ μ μ¬μ©νλ€.
Teslaλ Carμ κΈ°λ₯μ μ¬μ¬μ© + νμ₯νκΈ° μν΄μ μμ λ°μλ€.
is-a μ has-a κ΄κ³ λΉκ΅
"is-a" relationship (μ¬μ¬μ©+νμ₯)
a senior citizen is a citizen
a Manager is an Employee
βhas-a" relationship (κΈ°λ₯λ§ λ°κ² λ€)
a car has an engine, a transmission, gas tank
a Manager has a PayrollID
μμμ μ½λ μ¬μ¬μ©+νμ₯ν μ μμΌλ, μμκ΄κ³μμ λ¬Έμ κ° λ°μν μ μμΌλ νμ€ν is-a κ΄κ³μΌ λλ§ μμμ μ¬μ©νμ.
λ¨μ κΈ°λ₯μ μ¬μ¬μ©νκ³ μ νλ€λ©΄(has-a κ΄κ³), μ»΄ν¬μ§μ μ μ¬μ©νμ. μ»΄ν¬μ§μ μ μ½λ μ¬μ¬μ©λ§ νκ³ νμ₯ν μ μμ΄ μ¬λ¬ λ¬Έμ μμ μμ λ‘λ€.
μμ κ΄κ³λ νμν λλ§ μ¬μ©νμ β μΈν°νμ΄μ€λ μ»΄ν¬μ§μ μ μ°μ
κ°λ° μ€κ³ λ¨κ³μμ λΆλͺ¨λ₯Ό μΆμν΄λμ€ νΉμ μΈν°νμ΄μ€λ‘ λ§λ€μ§ λ μ€ κ³ λ―Όν λλ μΈν°νμ΄μ€λ₯Ό μ¬μ©νμ. λ€μ€ μμμ΄ κ°λ₯νκ³ μμ κ΄κ³μ λ¬Έμ κ° μκΈ° λλ¬Έμ΄λ€. λ§μ½ μ΄λ―Έ λΆλͺ¨κ° (μΆμ)ν΄λμ€λΌλ©΄ μμ ν΄λμ€λ μμ κ΄κ³λ³΄λ€λ μ»΄ν¬μ§μ μ μ¬μ©νμ.
νμ€ν is-a κ΄κ³μ΄κ³ μ½λμ μ¬μ¬μ©+νμ₯μ΄ νμν κ²½μ°μΌ λλ§ μμμ μ¬μ©νμ. μμκ΄κ³λ λΆλͺ¨κ° λ³κ²½λ λ μμλ€λ λ€ λ³κ²½μ΄ λμ΄μΌ νλ μν©μΌ λ μ¬μ©νμ. μλλΌλ©΄ μΈν°νμ΄μ€λ μ»΄ν¬μ§μ μ μ¬μ©νμβ
Reference
μ± <μ΄νν°λΈ μλ°> μμ΄ν 18 μμ보λ€λ μ»΄ν¬μ§μ μ μ¬μ©νλΌ