TIL) κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°, OOP, μΊ‘μν, μΆμν, μμ, λ€νμ±
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° vs. μ μ°¨ μ§ν₯ νλ‘κ·Έλλ°
μ μ°¨ μ§ν₯ νλ‘κ·Έλλ° = λ¨μν λ³κ°μ λ³μμ ν¨μλ‘ μμ°¨μ μΌλ‘ μλ
μ μ°¨μ μΈμ΄ = μμ°¨μ μΈ λͺ λ Ήμ μ‘°ν© ex) μ΄κΈ°μ C, ν¬νΈλ
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° = λ°μ΄ν°μ μ κ·Ό, λ°μ΄ν°μ μ²λ¦¬ κ³Όμ μμ λν λͺ¨νμ λ§λ€μ΄λΈλ€. ('ν΄λμ€'λΌλ λ°μ΄ν° λͺ¨λΈμ μ²μ¬μ§μ μ¬μ©ν΄μ μ½λλ₯Ό μμ±νλ€. )
κ·Έλμ λ°μ΄ν°μ κΈ°λ₯μ΄ λ³κ°λ‘ μ·¨κΈλμ§ μκ³ , ν λ²μ λ¬Άμ¬μ μ²λ¦¬ν μ μκ² λλ€. // λ©μλμ μμ±μ΄ μ‘΄μ¬νλ€.
νλ μΈμ΄λ€μ λλΆλΆ κ°μ²΄ μ§ν₯μ νΉμ§μ κ°μ§κ³ μλ€.
OOPλ νλ‘κ·Έλ¨ μ€κ³ μ² νμ΄λ€.
OOPμ λͺ¨λ κ²μ 'κ°μ²΄'λ‘ κ·Έλ£Ήνλλ€. // μ΄ κ°μ²΄λ νλ² λ§λ€κ³ λλ©΄, λ©λͺ¨λ¦¬μμμ λ°νλκΈ° μ κΉμ§ κ°μ²΄ λ΄μ λͺ¨λ κ²μ΄ μ μ§λλ€.
OOPμ μ¬μ¬μ©μ±μ μ»μ μ μλ€.
ν΄λμ€λ μΈλΆ μ¬ν(μμ±)μ΄ λ€μ΄κ°μ§ μμ μ²μ¬μ§μ΄λ€.
μΈλΆ μ¬νλ§ λ£λλ€λ©΄ κ°μ²΄κ° λλ€. μ¬κΈ°μ κ°μ²΄λ jsμ κ°μ²΄ (object)κ° μλκ³ ν΄λμ€λ₯Ό ν΅ν΄ λ§λ€μ΄μ§ κ°μ²΄μ΄λ€. μ΄λ₯Ό μ€μ¬μ μΈμ€ν΄μ€λΌκ³ λΆλ₯Έλ€.
=> μμ±μλ μΈλΆ μ¬νμ λ£μ΄μ£Όλ μν μ νλ€. ν¨μμ μΈμλ₯Ό λ£λ―μ΄ μμ±μ λ£μ μ μλ€.
μ½κ² μλ₯Ό λ€μλ©΄!!
class Car = ν΄λμ€μ μ΄λ¦
μλμ°¨ μμ, κ°κ²©, μλ ₯ λ±λ±μ κ³ μ ν μμ± = μμ±
μμ, νμ§, μ μ§, λ©μΆ€ λ± μλμ°¨μ κΈ°λ₯ = λ©μλ
κ°μ²΄ μ§ν₯μ μ€μμ± = μ ν리μΌμ΄μ μ λ§λ€ λ μ’μ μ€κ³λ₯Ό νκΈ° μν΄μ κΌ μ΄ν΄νκ³ μμ©ν΄μΌνλ€.
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μ£Όμ κ°λ // OOP Basic Concepts
OOP(object oriented programming)
1. Encapsulation (μΊ‘μν)
2. Abstraction (μΆμν)
3. Inheritance (μμ)
4. Polymorphism (λ€νμ±)
1. Encapsulation (μΊ‘μν) // μ½λκ° λ³΅μ‘νμ§ μκ² νκ³ , μ¬μ¬μ©μ±μ λμΈλ€.
- λ°μ΄ν°(μμ±)μ κΈ°λ₯ (λ©μλ)λ€μ΄ λμ¨νκ² κ²°ν©
- μλμ νΉμ§λ κ°μ§κ³ μλ€. // λ΄λΆ λ°μ΄ν°λ λ΄λΆ ꡬνμ΄ μΈλΆλ‘ λ ΈμΆλμ§ μλλ‘ λ§λλ κ².
- κ·Έλμ μλνμ νΉμ§μ μ΄λ €μ μ½λλ₯Ό μμ±νλ©΄ κ°μ²΄ λ΄ λ©μλμ ꡬνλ§ μμ νκ³ , λ ΈμΆλ λ©μλλ₯Ό μ¬μ©νλ μ½λ νλ¦μ λ°λμ§ μλλ‘ λ§λ€ μ μλ€. ==> ν΄λ‘μ λͺ¨λ ν¨ν΄μ μ¬μ©
- λμ¨ν κ²°ν©(loose coupling)μ μ 리νλ€ = μΈμ λ μ§ κ΅¬νμ μμ ν μ μλ€.
2. Abstraction (μΆμν) // μ½λκ° λ³΅μ‘νμ§ μκ² νκ³ , λ¨μνλ μ¬μ©μΌλ‘ λ³νμ λν μν₯μ μ΅μννλ€.
- λ΄λΆ ꡬνμ μμ£Ό 볡μ‘νμ§λ§, μ€μ λ‘ λ ΈμΆλλ λΆλΆμ λ¨μνκ² λ§λ λ€λ κ°λ (μΈν°νμ΄μ€λ₯Ό λ¨μν)
- λ무 λ§μ κΈ°λ₯λ€μ΄ λ ΈμΆλμ§ μκΈ°μ μμμΉ λͺ»ν μ¬μ©μ λ³νκ° μΌμ΄λλ κ²μ μ΅μννλ€.
- ν΄λμ€ μ μμ, λ©μλμ μμ±λ§ μ μν κ²μ μΈν°νμ΄μ€λΌκ³ λΆλ₯Έλ€.
3. Inheritance (μμ) // λΆνμν μ½λλ₯Ό μ€μ¬μ μ¬μ¬μ©μ±μ λμΈλ€.
- λΆλͺ¨ ν΄λμ€μ νΉμ§μ μμ ν΄λμ€κ° λ¬Όλ €λ°λ κ²
- μ¦, κΈ°λ³Έ ν΄λμ€(base class)μ νΉμ§μ νμ ν΄λμ€(derived class)κ° μμλ°λλ€.
4. Polymorphism (λ€νμ±) // λμΌν λ©μλμ λν΄ if 쑰건문 λμ κ°μ²΄μ νΉμ±μ λ§κ² λ¬λ¦¬ μμ±νλ κ² κ°λ₯νλ€.
- κ°μ μ΄λ¦μ κ°μ§ λ©μλμ¬λ λ€λ₯Έ λ°©μμΌλ‘ ꡬνλ μ μλ€.
- μλ₯Όλ€λ©΄ μκ³ λΌμ€ν μ΄μΈ λ§λ€κΈ°μμ renderλ λ©μλκ° μ‘°κΈμ© λ€λ₯΄κ² μλνλ€.