ποΈ23.08.24
μ μ λμ€ν¨μΉμ μ μ λμ€ν¨μΉμ λν μ΄ν΄
π νλ‘μΈμ€
- νλμ νλ‘μΈμ€λ μ€νμ€μΈ νλ‘κ·Έλ¨μ ν λ¨μ
π λ€νμ± Polymorphism
- νλμ μ΄λ¦(λλ κΈ°λ₯)μΌλ‘ μ¬λ¬ κ°μ§ μΌμ ν μ μλ λ₯λ ₯
- νλμ μΈν°νμ΄μ€(=νλ‘ν μ½)λ₯Ό μ±νν νμ
μ΄ λ€μνκ² κ΅¬νλ μ μμ
OCP(Open/Closed Principle)
λ₯Ό λ§μ‘±ν¨
- λΆλͺ¨ ν΄λμ€λ₯Ό μμλ°μμ μμ ν΄λμ€μμ λ©μλλ₯Ό μ€λ²λΌμ΄λνλ κ²½μ°λ ν΄λΉλ¨
π Dispatch
OS
μ κ΄μ μμ λ³Ό λ μ΄μ체μ μ μ€μΌμ€λ¬κ° μ€νν νλ‘μΈμ€λ₯Ό μ ννκ³ ν΄λΉ νλ‘μΈμ€λ₯Ό CPU
μ ν λΉνλ κ³Όμ μ΄λΌκ³ λ³Ό μ μμ
- "
λ°°μ
νλ€" λΌλ λ»μ κ°μ§
λ€νμ±
μ κ΄μ μμ λ³Ό λ νλμ ν¨μ νΈμΆμ΄ μλ‘ λ€λ₯Έ ν¨μ ꡬν μ€ μ΄λ€ κ²μ μ€νν μ§ κ²°μ νλ λ©μ»€λμ¦
π κ°μ λ©μλ Virtual Method
- λΆλͺ¨ ν΄λμ€ λλ μνΌ ν΄λμ€μμ μ μ
- λ©μλμ λν κΈ°λ³Έ λμμ΄ λΆλͺ¨ ν΄λμ€μμ ꡬνλ¨
- μμ ν΄λμ€ λλ μλΈ ν΄λμ€μμλ μ΄ κ°μ λ©μλλ₯Ό μ¬μ μν μ μμ
π μ μ λ°μΈλ©
- μ»΄νμΌ μκ°μ λ³μλ ν¨μ νΈμΆ λμμ κ²°μ νκ³ , μ»΄νμΌλ¬κ° μ½λλ₯Ό μμ±ν λ ν΄λΉ λ°μΈλ©μ κ³ μ μν΄
- μ€ν μκ°μ λ°μΈλ© μ 보λ₯Ό λ³κ²½νμ§ μμΌλ©°, ν¨μλ λ³μκ° νΈμΆλ λ νμ λμΌν λμμ κ°λ¦¬ν€κ² νλκ²
- νΈμΆλμμ κ³ μ νλ κ²
π λμ λ°μΈλ©
- λ°νμ λ°μΈλ©μ΄λΌκ³ λ λΆλ¦
- μ€ν μκ°μ κ°μ²΄μ μ€μ νμ
μ κΈ°λ°μΌλ‘ ν¨μ νΈμΆ λμμ κ²°μ ν¨
π μΈλΌμΈ κΈ°λ²
- ν¨μ νΈμΆμ ν΄λΉ ν¨μμ λ³Έλ¬ΈμΌλ‘ μ§μ λ체νλ κ²
- ν¨μ νΈμΆμ λ°λ₯Έ μ€λ²ν€λκ° κ°μ
- μ μ λ°μΈλ©μ νΈμΆ λμμ κ³ μ νλ κ²μ΄κ³ μΈλΌμΈμ λ³Έλ¬Έμ μ§μ λ체νλ κ²μ΄λ―λ‘ μλ‘ λ€λ₯Έ κ°λ
π Static Dispatch
- μ»΄νμΌ μκ°μ μ΄λ€ ν¨μλ₯Ό νΈμΆν κ²μΈμ§ κ²°μ
- μ»΄νμΌλ¬κ° μ½λλ₯Ό μμ±ν λ μ μ λ°μΈλ©μ ν¨
- μ»΄νμΌ νμμ κ²°μ μ΄ λκΈ° λλ¬Έμ μ±λ₯μ μ΄μ μ κ°μ§ μ μμ
- λ°νμμ λ°μΈλ© μ 보 λ³κ²½νμ§ μμ
- ν¨μ μ€λ²λ‘λ©μ μ μ λμ€ν¨μΉ μμ
π Dynamic Dispatch
- λ°νμμ μ΄λ€ λ©μλλ₯Ό νΈμΆ ν μ§ κ²°μ νλ κ²
- swiftμμλ ν΄λμ€λ§λ€ ν¨μ ν¬μΈν°λ€μ λ°°μ΄μΈ vTable(Virtual Method Table)μ΄λΌλ κ²μ μ μ§
- λ°νμ μμ μ ν¨μλ₯Ό κ²°μ ν΄μ μ±λ₯μ μν΄κ° μμ