π μ€λμ νμ΅ ν€μλ
- ν΄λμ€(class)
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
π κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄λ?
νμ€ μΈκ³μμ μ΄λ€ μ νμ λ§λ€ λ, λΆνμ λ¨Όμ κ°λ°νκ³ μ΄ λΆνλ€μ νλμ© μ‘°λ¦½ν΄μ μμ±λ μ νμ λ§λ€ λ―μ΄, μννΈμ¨μ΄λ₯Ό κ°λ°ν λμλ λΆνμ ν΄λΉνλ κ°μ²΄λ€μ λ¨Όμ λ§λ€κ³ , μ΄κ²λ€μ νλμ© μ‘°λ¦½ν΄μ μμ±λ νλ‘κ·Έλ¨μ λ§λλ κΈ°λ²μ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(OOP-Object Oriented Programming)μ΄λΌκ³ νλ€.
π κ°μ²΄λ?
κ°μ²΄(Object)λ 물리μ μΌλ‘ μ‘΄μ¬νκ±°λ μΆμμ μΌλ‘ μκ°ν μ μλ κ² μ€μμ μμ μ μμ±μ κ°μ§κ³ μκ³ λ€λ₯Έ κ²κ³Ό μλ³ κ°λ₯ν κ²μ λ§νλ€.
- μμ±κ³Ό νμλ₯Ό κ°μ§κ³ μλ€.
μμ±μ νλ, νμλ λ©μλλ‘ κ΅¬ννλ€.
- νμ€ μΈκ³μ μλ κ°μ²΄λ₯Ό μννΈμ¨μ΄μ κ°μ²΄λ‘ μ€κ³νλ κ²μ 'κ°μ²΄ λͺ¨λΈλ§'μ΄λΌ νλ€.
νλμ λ©μλλ₯Ό μ μνλ κ³Όμ μ΄λ€.
- λ 립μ μΈ λ κ°μ²΄κ° μλ‘ μνΈ μμ©μ νλ€.
μννΈμ¨μ΄μμλ λ©μλλ₯Ό ν΅ν΄ μνΈ μμ©μ νλ€.
- μννΈμ¨μ΄ κ°μ²΄ κ°μ κ΄κ³
μ¬μ© κ΄κ³(μλ‘ λ 립μ μΈ κ΄κ³, ex-μ¬λκ³Ό μλμ°¨)
ν¬ν¨ κ΄κ³(μνλ κ΄κ³, ex-μλμ°¨μ νμ΄μ΄)
μμ κ΄κ³(λ¬Όλ €λ°λ κ΄κ³, ex-곡ν΅μ κΈ°κ³ μμ€ν μ λΆν)
π κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μ₯λ¨μ λ° νΉμ§
π μ₯μ : μ½λκ° κ°κ²°ν΄μ§λ€. μ½λ μ¬μ¬μ©μ±μ΄ λμμ§λ€. μ μ§λ³΄μκ° μ¬μμ§λ€.
π λ¨μ : κ°μ²΄λ€μ μ‘°ν©νκΈ° λλ¬Έμ νλ‘κ·Έλ¨μ μ€κ³ν λ λ§μ κ³ λ―Όκ³Ό μκ°μ ν¬μν΄μΌ νλ€. μ²λ¦¬ μκ°μ΄ λΉκ΅μ μ€λ κ±Έλ¦°λ€.
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ 4κ°μ§ νΉμ§
- μΊ‘μν(Encapsulation)
- μλ‘ μ°κ΄ μλ μμ±κ³Ό κΈ°λ₯λ€μ νλμ μΊ‘μλ‘ λ§λ€μ΄ λ°μ΄ν°λ₯Ό μΈλΆλ‘λΆν° 보νΈνλ κ²μ΄λ€.
- λ΄λΆμ 무μμ΄ κ΅¬νλμλμ§ μΈλΆμμ λ³Ό μ μκ² νλ€.
- μΈλΆμμ μ§μ μ κ·Όν μ μμ΄, 보μμ μΈ‘λ©΄μμ μ’λ€.
- ν΄λμ€λ λ©€λ²μ μ κ·Όμ μ΄μλ₯Ό ν΅ν΄ μ κ·Όν΄μΌνλ€.
- μμ(Inheritance)
- λΆλͺ¨ κ°μ²΄μ μμ κ°μ²΄κ° μ‘΄μ¬νλ€.(μμ -> νμ)
- μμ κ°μ²΄λ λΆλͺ¨ κ°μ²΄κ° κ°μ§κ³ μλ νλμ λ©μλλ₯Ό λ¬Όλ €λ°μ μ¬μ©ν μ μλ€.
- μ½λμ μ€λ³΅μ΄ μ€μ΄λ λ€.
- λ€νμ±(Polymorphism)
- μ΄λ€ κ°μ²΄μ μμ±μ΄λ κΈ°λ₯μ΄ μν©μ λ°λΌ μ¬λ¬ κ°μ§ ννλ₯Ό κ°μ§ μ μλ μ±μ§μ΄λ€.
- κ°μ μ΄λ¦μ λ©μλκ° μν©μ λ°λΌ λ€λ₯Έ μν μ μννλ€.
- νλμ νμμ λν΄ κ° κ°μ²΄κ° κ°μ§κ³ μλ κ³ μ ν νΉμ±μ λ°λΌ μ¬κ΅¬μ±ν μ μλ€.
- λνμ μΈ μλ‘, λ©μλ μ€λ²λΌμ΄λ©(overriding)κ³Ό μ€λ²λ‘λ©(overloading)μ΄ μλ€.
- μΆμν(Abstraction)
- κ°μ²΄μ 곡ν΅μ μΈ μμ±κ³Ό κΈ°λ₯μ μΆμΆνμ¬ μ μνλ€.
- λΆνμν μΈλΆ μ¬νλ€μ μ κ±°νμ¬, κ°μ₯ λ³Έμ§μ μ΄κ³ 곡ν΅μ μΈ λΆλΆλ§ μΆμΆνμ¬ νννλ€.
- 곡ν΅μ μΈ κ²μ λͺ¨μ μμ κ°λ μΌλ‘ μλ‘κ² κ°μ²΄λ₯Ό λͺ¨λΈλ§νλ€.