- νμ€μΈκ³κ° κ°μ²΄λ€ κ°μ μνΈμμ©μ μν΄ μ΄μλλ―, νλ‘κ·Έλ¨λ κ°μ²΄λΌλ λ 립λ λ¨μλ‘ κ΅¬μ±ν΄ κ°μ²΄λ€ κ° μνΈμμ©μΌλ‘ νλ‘κ·Έλ¨μ΄ μ€νλλλ‘ νλ‘κ·Έλ¨ κ°λ° λ°©λ²
- μ μ°¨ μ§ν₯ νλ‘κ·Έλλ°
- λ°μ΄ν°μ ν¨μ λΆλ¦¬
- ν¨μ μ€μ¬μ νλ‘κ·Έλλ°
- μμ°¨μ νλ¦ μ€μ
- νλ‘κ·Έλλ°μ μμ λ λ μ 체μ μν₯ λ―ΈμΉ κ°λ₯μ±μ΄ λμ
- ν¨μν νλ‘κ·Έλλ°
- μμ ν¨μ
- 곡μ μν, λ³κ²½ κ°λ₯ν λ°μ΄ν°, λΆμμ© μ§μ
- νμ€ μΈκ³μ κ°μ²΄ (Object)
- μ€μνμ μ‘΄μ¬νλ λͺ μ¬νμ λͺ¨λ μ€μ²΄
- μ¬λ¬Ό, κ°λ λ±
- μλ³ κ°λ₯νλ©°, **κ΄λ ¨λ μ 보 (μμ±)μ νμ (κΈ°λ₯)**μ μΈλΆμ μ 곡
- e.g. νμ, μ΄λ¦, νκ³Ό, μ±μ , μκ°
- ν΄λμ€ (Class)
- κ°μ²΄ μΆμν
- νμ€ μΈκ³μ κ°μ²΄λ₯Ό νλ‘κ·Έλ¨μ μΌλ‘ ννν μ²μ¬μ§
- μ 보 μ μ₯μ μν λ³μμ κΈ°λ₯μ μ μν λ©μλλ‘ κ΅¬μ±
- c.f. λ©μλ (method) vs ν¨μ (function) (μΆμ²)
- λ©μλλ κ°μ²΄ κ΄λ ¨
- ν¨μλ κ°μ²΄μ λ 립μ
- e.g. νμ ν΄λμ€μ μ΄λ¦, νκ³Ό μμ±κ³Ό μΆμνκΈ°, μν (μ€κ°κ³ μ¬/κΈ°λ§κ³ μ¬) 보기 κΈ°λ₯ μ μ
class Student: # μμ±μ : μΈμ€ν΄μ€ λ³μ μ΄κΈ°ν # self (this) : νμ¬ μ€ν μ€μΈ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νλ λ° μ¬μ© def __init__(self, name, major): self.name = name self.major = major def attend(self, date, class_name): print("{0}μΌ {1} μμ μ {2}κ° μΆμνμ΅λλ€.", date, class_name, self.name) def take_exam(self, class_name, exam_type): print("{0}κ°/μ΄ {1} μμ {2}μ μμνμ΅λλ€.", self.name, class_name, exam_type)
- μΈμ€ν΄μ€ (Instance)
- μννΈμ¨μ΄ κ°μ²΄
- ν΄λμ€λ‘λΆν° λ©λͺ¨λ¦¬μ μμ±λ μ€μ²΄
- κ³ μ μν μ 보λ₯Ό κ°μ§
- ν΄λμ€μ μ μν κΈ°λ₯ μν κ°λ₯
student = Student('LEE SEUNGEUN', 'Philosophy') - λ©μμ§
- λ©μμ§ μ‘μμ μ ν΅ν΄ μΈμ€ν΄μ€ μνΈμμ©
- κ°μ²΄ λͺ¨λΈλ§
- ν΄λμ€ μ μ
- μΈμ€ν΄μ€ μμ± λ° μ¬μ©
- κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μμ ν΄λμ€κ° μ μλλ©΄ ν΄λμ€ λμ λ°©μμ μ νμ μμ΄ μΈλΆ μΈν°νμ΄μ€μΈ λ©μλλ₯Ό μ¬μ©νκΈ°λ§ νλ©΄ λ¨ (κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μμ ν΄λμ€λ λΈλλ°μ€μ ν΄λΉ)
- μ€κ³ μ μ°¨
- κ°μ²΄ ν보 μΆμΆ
- κ°μ²΄λ μ£Όλ‘ λͺ μ¬νμ
- μΈμ€ν΄μ€ λ³μ μλ³
- ν΄λΉ κ°μ²΄κ° μμ νκΈ° μν΄ νμν μ 보λ₯Ό μΈμ€ν΄μ€ λ³μλ‘ μ€μ
- μΈν°νμ΄μ€ μ€κ³
- κ°μ²΄μ κ΄λ ¨λ λμ¬ν (λμ)μ κ²ν ν΄ μΈν°νμ΄μ€ μ€κ³
- μ£Όμ λ©μλ μ¬μ λΉ
- λ€λ₯Έ κ°μ²΄μ μνΈμμ©νλ λ©μλ λ±μ νν₯μ μ€κ³ (top-down desing)κ³Ό λ¨κ³λ³ κ°μ (stepwise refinement)λ₯Ό ν΅ν΄ μ΄μ λΆμ
- μ€κ³ λ°λ³΅ κ²ν
- μλ‘μ΄ ν΄λμ€μ κΈ°μ‘΄μ ν΄λμ€λ₯Ό μλ€κ°λ€ νλ©° κ²ν
- λμ νμ
- λ¨μν
- λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ κ°μ₯ λ¨μν λ°©λ² κ³ λ―Ό
- κ°μ²΄ ν보 μΆμΆ
- μΊ‘μν (Encapsulation)
- κ°μ²΄κ° μ΄λ»κ² μ¬μ©λλμ§μ κ°μ²΄μ μμΈμ¬νμ λν ꡬνμ ꡬλΆ
- μ₯μ
- λͺ¨λν κ°λ₯
- μ¬μ¬μ©μ±μ λμ
- μΊ‘μν vs μλν (Data Hiding)
- λ°μ΄ν°μ private λλ protected μ κ·Ό μ νμλ₯Ό λΆμμΌλ‘μ¨ λ°μ΄ν°μ λν μ§μ μ μΈ μ κ·Όμ λ§κ³ , λ©μλλ‘μ¨ λ°μ΄ν°μ μ κ·Όνλλ‘ ν¨
- λ©μλλ‘μ¨ λ°μ΄ν° μ κ·Όνλλ‘ ν κ²½μ° λ³μμ κ°μ ν λΉνκΈ° μ μ λ ₯ λ°μ΄ν°λ₯Ό κ²μ¦ν μ μλ€λ μ₯μ μ΄ μμ
- λ€νμ± (Polymorphism)
- κ°μ μ μΈλΆ (signature)λ₯Ό κ°μ§ λ©μλλ₯Ό μ¬λ¬ ν΄λμ€κ° ꡬνν¨
- λ©μλμ μ μΈλΆ (signature)
# Python def attend(self, date, class_name): // Java public static final void main(String [] args) { ... } - μ₯μ
- νλ‘κ·Έλ¨μ μ μ°νκ² λ§λ€μ΄μ€
- μλ°μ κ²½μ° μ€λ²λΌμ΄λ© (μμ κ΄λ ¨)κ³Ό κ΄λ ¨
- μμ (Inheritance)
- μλ‘μ΄ ν΄λμ€ (νμ ν΄λμ€ (subclass)κ° λ¨)κ° κΈ°μ‘΄μ ν΄λμ€λ‘λΆν° λμ΄
- μ₯μ
- κΈ°μ‘΄ ν΄λμ€μ μ½λλ₯Ό μ¬μ¬μ©ν μ μμ
# Python class SuperClass: def __init__(self): self.super_instance_variable = 'I am super' def reusable_method(self): print('hi') class SubClass(SuperClass): def __init__(self, sub_instance_variable): super(self) self.sub_instance_variable = sub_instance_variable- κ°ν κ²°ν© vs λμ¨ν κ²°ν©