1μ₯
p28-29
λμμΈ ν¨ν΄μ "νΉμ ν μ ν κ΄κ³μμ μΌλ°μ μ€κ³ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μνΈκ΅λ₯νλ μμ κ°λ₯ν κ°μ²΄μ ν΄λμ€λ€μ λν μ€λͺ "μ λλ€.
μΌλ°μ μΌλ‘ νλμ λμμΈ ν¨ν΄μλ λ€ κ°μ§ μμκ° λ°λμ λ€μ΄ μμ΅λλ€.
ν¨ν΄ μ΄λ¦
λ¬Έμ
ν΄λ²
κ²°κ³Ό
p42
μΈν°νμ΄μ€λ
κ°μ²΄κ° μ μΈνλ λͺ¨λ μ°μ°μ μ°μ°μ μ΄λ¦, λ§€κ°λ³μλ‘ λ°μλ€μ΄λ κ°μ²΄λ€, μ°μ°μ λ°ν κ°μ λͺ μΈν©λλ€. μ΄λ₯Ό μ°μ°μ μκ·Έλμ³(signature)λΌκ³ ν©λλ€. μΈν°νμ΄μ€(interface)λ κ°μ²΄κ° μ μνλ μ°μ°μ λͺ¨λ μκ·Έλμ²λ€μ μΌμ»«λ λ§λ‘ κ°μ²΄μ μΈν°νμ΄μ€λ κ°μ²΄κ° λ°μμ μ²λ¦¬ν μ μλ μ°μ°μ μ§ν©μ λλ€.
νμ μ΄λ
νμ (type)μ νΉμ μΈν°νμ΄μ€λ₯Ό λνλΌ λ μ¬μ©νλ μ΄λ¦μ λλ€. κ°μ²΄κ° "Windows" νμ μ κ°λλ€λ κ²μ "Window" μΈν°νμ΄μ€μ μ μν μ°μ°λ€μ λͺ¨λ μ²λ¦¬ν μ μλ€λ κ²μ μλ―Έν©λλ€. κ°μ²΄λ μ¬λ¬ νμ μ κ°μ§ μ μκ³ , μλ‘ λ€λ₯Έ κ°μ²΄κ° νλμ νμ μ 곡μ ν μλ μμ΅λλ€.
λ€λ₯Έ μΈν°νμ΄μ€λ₯Ό ν¬ν¨νλ μΈν°νμ΄μ€λ₯Ό μλΈνμ (subtype)μ΄λΌκ³ νκ³ , λ€λ₯Έ μΈν°νμ΄μ€κ° ν¬ν¨νλ μΈν°νμ΄μ€λ₯Ό μνΌνμ (supertype)μ΄λΌ ν©λλ€. μλΈνμ μ μνΌνμ μ μΈν°νμ΄μ€λ₯Ό μμνλ€κ³ μ΄μΌκΈ°ν©λλ€. μλΈνμ μ΄ μνΌνμ μ μμνλ©΄, μλΈνμ μ μνΌνμ μ μ μλ μ°μ°μ ν¬ν¨νκ² λ©λλ€.
λμ λ°μΈλ©μ΄λ
λμ λ°μΈλ©μ μμ²μ΄ μ΄λ»κ² ꡬνλμ΄ μ΄λ€ κ²°κ³Όλ₯Ό λ§λ€μ΄ λΌμ§λ₯Ό λ°νμμ κ²°μ ν μ μμμ μλ―Έν©λλ€.
λν λμ λ°μΈλ©μ νλ‘κ·Έλ¨μ΄ κΈ°λνλ κ°μ²΄λ₯Ό λμΌν μΈν°νμ΄μ€λ₯Ό κ°λ λ€λ₯Έ κ°μ²΄λ‘ λ체ν μ μκ² ν΄ μ€λλ€. μ΄λ° λ체μ±μ μ°λ¦¬λ λ€νμ±(polymorphism)μ΄λΌκ³ νλλ°, μ΄λ κ°μ²΄μ§ν₯ μμ€ν μ ν΅μ¬ κ°λ μ λλ€.
λμμΈ ν¨ν΄μ΄λ
λμμΈ ν¨ν΄μ μΈν°νμ΄μ€μ μ μν΄μΌ νλ μ€μ μμκ° λ¬΄μμ΄κ³ μ΄λ€ μ’ λ₯μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μμΌ νλμ§ μλ³νμ¬ μΈν°νμ΄μ€λ₯Ό μ μνλλ‘ λμμ€λλ€.
λμμΈ ν¨ν΄μ μΈν°νμ΄μ€ κ°μ κ΄λ ¨μ±λ μ μν©λλ€. νΉν ν΄λμ€ κ°μ μ μ¬ν μΈν°νμ΄μ€λ₯Ό μ μνλλ‘ νκ±°λ ν΄λμ€μ μΈν°νμ΄μ€μ μ¬λ¬ κ°μ§ μ μ½μ μ μν©λλ€.
48p
ꡬνμ΄ μλ μΈν°νμ΄μ€μ λ°λΌ νλ‘κ·Έλλ°ν©λλ€.
λ°λΌμ μ΄λ€ λ³μ(κ°μ²΄)λ₯Ό ꡬ체 ν΄λμ€μ μΈμ€ν΄μ€λ‘ μ μΈνλ μΌμ νΌν΄μΌ ν©λλ€.
λμ μΆμ ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό λ°λ₯΄λ μΈμ€ν΄μ€ λ³μλ₯Ό μ μν©λλ€.
μ΄λ κ² μ μνλ κ²μ΄ μ΄ μ± μ κΈ°μ ν λμμΈ ν¨ν΄μ μΌλ°μ λ°©μμ΄λ©° ννμ λλ€.
50p
κ°μ²΄ ν©μ±μ΄ ν΄λμ€ μμλ³΄λ€ λ λμ λ°©λ²μ λλ€.
ν΄λμ€ μμλ³΄λ€ κ°μ²΄ ν©μ±μ λ μ νΈνλ μ΄μ λ κ° ν΄λμ€μ μΊ‘μνλ₯Ό μ μ§ν μ μκ³ , κ° ν΄λμ€μ ν κ°μ§ μμ μ μ§μ€ν μ μκΈ° λλ¬Έμ λλ€. κ°μ²΄λ μΈν°νμ΄μ€μ λ§μΆ° ꡬνλλ―λ‘ κ΅¬ν μ¬μ΄μ μ’ μμ±μ νμ€ν μ€μ΄λλλ€.
μμμ ν©μ±μ μμλ§νΌ κ°λ ₯νκ² λ§λλ λ°©λ²μ λλ€.
μμμ κ°μ₯ μ€μν μ₯μ μ λ°νμμ νλμ 볡ν©μ κ°λ₯νκ² νκ³ , 볡ν©νλ λ°©μλ λ³κ²½ν΄ μ€λ€λ μ μ λλ€. Window κ°μ²΄κ° λ°νμμ Rectangle μΈμ€ν΄μ€λ₯Ό Circle μΈμ€ν΄μ€λ‘ λ체νλ©΄ μνμ μλμ°κ° λ κ²μ λλ€.
μμμ΄ κ°λ λ¨μ μ, κ°μ²΄ ν©μ±μ ν΅ν΄ μννΈμ¨μ΄ μ€κ³μ μ μ°μ±μ 보μ₯νλ λ°©λ²κ³Ό λμΌνκ² λμ μΈλ°λ€κ° κ³ λλ‘ λ§€κ°λ³μνλ μννΈμ¨μ΄λ μ μ μΈ μννΈμ¨μ΄ κ΅¬μ‘°λ³΄λ€ μ΄ν΄νκΈ°κ° λ μ΄λ ΅λ€λ κ²μ λλ€.
p53
κ°μ²΄μ§ν₯ μμ€ν μμ νλμ 볡ν©ν μ μλ λ°©λ²μ μΈ κ°μ§κ° μλ€.
κ°μ²΄ ν©μ±
λ°νμμ νλμ λ³κ²½ν μ μμ§λ§, νλμ΄ μμλκΈ° λλ¬Έμ λΉν¨μ¨μ μΌ μ μλ€.
μμ vs λ§€κ°λ³μνλ νμ
μμμ μ°μ°μ λν κΈ°λ³Έ νλμ λΆλͺ¨ ν΄λμ€κ° μ 곡νκ³ μ΄λ₯Ό μλΈν΄λμ€μμ μ¬μ μνλλ‘ νλ κ²
λ§€κ°λ³μνλ νμ μ ν΄λμ€κ° μ¬μ©νλ νμ μ λ³κ²½νκ² νλ κ²
μμλ λ§€κ°λ³μνλ νμ μ΄λΌ λ³Ό μ μμ§λ§, λ°νμμ λ³κ²½μ΄ μΌμ΄λμ§λ μλλ€.
λ§€κ°λ³μνλ νμ μ μμ
Ada, Eiffelμ Generic
C++μ template
62p
λμμΈ ν¨ν΄μ κ³ λ₯΄λ λ°©λ²
ν¨ν΄μ΄ μ΄λ»κ² λ¬Έμ λ₯Ό ν΄κ²°νλμ§ νμ ν©μλ€.
ν¨ν΄μ μλ λΆλΆμ λ΄ μλ€.
ν¨ν΄λ€ κ°μ κ΄λ ¨μ±μ νμ ν©μλ€.
λΉμ·ν λͺ©μ μ ν¨ν΄λ€μ λͺ¨μμ 곡λΆν©μλ€.
μ¬μ€κ³μ μμΈμ νμ ν©μλ€.
μ€κ³μμ κ°λ³μ±μ κ°μ ΈμΌ νλ λΆλΆμ΄ 무μμΈμ§ νμ ν©μλ€.
Last updated