Helloπ I'm Dona!:)
κ°μ²΄ μ§ν₯νλ‘κ·Έλλ° μμ΄λ‘λ OOP(Object-Oriented-Programming)λ₯Ό μ 리ν΄λ³΄μ! π‘
π κ°μ²΄λ?
μ°μ , μν€λ°±κ³Όλ₯Ό λ¨Όμ λ―μ΄λ³΄λ©΄ μλμ κ°μ΄ μ μνκ³ μλ€.
μ»΄ν¨ν° κ³Όνμμ κ°μ²΄ λλ μ€λΈμ νΈ(object)λ ν΄λμ€μμ μ μν κ²μ ν λλ‘ λ©λͺ¨λ¦¬(μ€μ μ μ₯곡κ°)μ ν λΉλ κ²μΌλ‘ νλ‘κ·Έλ¨μμ μ¬μ©λλ λ°μ΄ν° λλ μλ³μμ μν΄ μ°Έμ‘°λλ 곡κ°μ μλ―Ένλ©°, λ³μ, μλ£ κ΅¬μ‘°, ν¨μ λλ λ©μλκ° λ μ μλ€. νλ‘κ·Έλλ° μΈμ΄λ λ³μλ₯Ό μ΄μ©ν΄ κ°μ²΄μ μ κ·Όνλ―λ‘ κ°μ²΄μ λ³μλΌλ μ©μ΄λ μ’ μ’ ν¨κ» μ¬μ©λλ€. κ·Έλ¬λ λ©λͺ¨λ¦¬κ° ν λΉλκΈ° μ κΉμ§ κ°μ²΄λ μ‘΄μ¬νμ§ μλλ€.
ν΄λμ€? λ©λͺ¨λ¦¬? μλ³μ? μ΄λ €μ΄ λ§μ΄ μλ© μλλ°, μ½κ² μ μνλ©΄ μλμ κ°μ΄ μκ°ν μ μλ€
νμ€μ΄λ κ°μμ΄λ μμ±κ³Ό νλμΌλ‘ μ΄λ£¨μ΄μ§ λͺ¨λ κ²!
μ°λ¦¬κ° μμ£Ό νλ SNSλ₯Ό μλ‘ λ€λ©΄, μλΉμ€λ₯Ό μ¬μ©νλ μ μ λ μ΄λ©μΌ, μμ΄λ, λΉλ°λ²νΈ, νλ‘μ λ±μ μμ±κ³Ό μ’μμ, κ²μκΈ μ λ‘λ λ±μ νλμΌλ‘ μ΄λ£¨μ΄μ§ κ°μ²΄λΌκ³ ν μ μλ€.
μ΄λ―Έμ§λ μ§μ pptλ‘ μ μνμμ΅λλ€, μ¬μ©νμ€ λλ μΆμ²λ₯Ό λ°νμ£ΌμΈμ! :)
π ν΄λμ€μ κ°μ²΄ κ·Έλ¦¬κ³ μΈμ€ν΄μ€
κ°μ²΄λ μμ±(λ³μ) + νλ(λ©μλ)λ‘ μ΄λ£¨μ΄μ§ λͺ¨λ κ²! μ΄λΌκ³ μ μνλ€. ν΄λμ€μ μΈμ€ν΄μ€ κ·Έλ¦¬κ³ κ°μ²΄μ κ΄κ³λ λΉμ λ₯Ό ν΅ν΄ λ°°μ보μ
- ν΄λμ€(Class) : μ΄λ ν λ³μμ λ©μλλ₯Ό κ°μ§λ λͺ μΈμ, κ°μ²΄μ ν = μ€κ³λ λλ λΆμ΄λΉ΅ νμ΄λΌκ³ μκ°νμ
- κ°μ²΄(Object) : λμ, ν΄λμ€λ‘ ꡬνν μ΄λ€ κ²(μ μλ§ ν κ²) = λΆμ΄λΉ΅ μ체
- μΈμ€ν΄μ€(Instance) : κ°μ²΄λ₯Ό μ€μ²΄ν μν¨ κ²(κ°μ²΄μ μ μλ₯Ό μ€μ²΄νν κ²) = λΆμ΄λΉ΅λ μ’ λ₯κ° λ§λ€. ν₯ λΆμ΄λΉ΅, μν¬λ¦Ό λΆμ΄λΉ΅, μμ¬λΉ λΆμ΄λΉ΅ λ±λ± π
μ΄λ―Έμ§λ μ§μ pptλ‘ μ μνμμ΅λλ€, μ¬μ©νμ€ λλ μΆμ²λ₯Ό λ°νμ£ΌμΈμ! :)
μ°Έκ³ : μΈμ€ν΄μ€ μν€λ°±κ³Ό
μ°Έκ³ λ‘ λ©μλλ ν¨μμΈλ°, ν΄λμ€ μμμ μ μλ κ°μ²΄μ νλμ λνλ΄λ ν¨μλ₯Ό λ©μλλΌκ³ λΆλ₯Έλ€!
π κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)μ΄λ?
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(μμ΄: Object-Oriented Programming, OOP)μ μ»΄ν¨ν° νλ‘κ·Έλλ°μ ν¨λ¬λ€μ μ€ νλμ΄λ€. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ»΄ν¨ν° νλ‘κ·Έλ¨μ λͺ λ Ήμ΄μ λͺ©λ‘μΌλ‘ 보λ μκ°μμ λ²μ΄λ μ¬λ¬ κ°μ λ 립λ λ¨μ, μ¦ "κ°μ²΄"λ€μ λͺ¨μμΌλ‘ νμ νκ³ μ νλ κ²μ΄λ€. κ°κ°μ κ°μ²΄λ λ©μμ§λ₯Ό μ£Όκ³ λ°κ³ , λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μλ€. - μν€λ°±κ³Ό
- νλ‘κ·Έλ¨μ μ¬λ¬ κ°μ λ 립λ κ°μ²΄λ€κ³Ό κ·Έ κ°μ²΄λ€ κ°μ μνΈμμ©μΌλ‘ νμ νλ νλ‘κ·Έλλ° μ κ·Όλ²
- νλ‘κ·Έλλ°μ κ°μ²΄λ€κ³Ό κ°μ²΄λ€ κ°μ μν΅μΌλ‘ λ°λΌλ³΄λ κ²
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ STEP
- νλ‘κ·Έλ¨μ νμν κ°μ²΄ μ νκΈ°
- ν΄λΉ κ°μ²΄λ€μ μμ±κ³Ό νλ μ νκΈ°
- κ°μ²΄ κ° μν΅ λ°©λ² μ νκΈ°
- νμ΄μ¬μ μμ κ°μ²΄ μ§ν₯ μΈμ΄(Pure Object Oriented Language)μ΄λ€ = νμ΄μ¬μ λͺ¨λ κ²μ κ°μ²΄μ΄λ€
β‘οΈ νμ΄μ¬μ μ μ, λ¬Έμμ΄, 리μ€νΈ, λμ λ리, νν λ±μ λͺ¨λ μλ£νμ μ΄λ€ ν΄λμ€μ μΈμ€ν΄μ€λΌλ κ²!
μλμ μ¬μ§μ²λΌ pythonμμ κ°κ°μ μλ£νλ€μ typeμ printνλ©΄ classμ μ΄λ¦μ νμΈ ν μ μλ€.
μμλ‘ λ£μ 2, 'str', [] λ±μ λͺ¨λ ν΄λΉ ν΄λμ€μ μΈμ€ν΄μ€λΌκ³ ν μ μλ€π
π κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° vs μ μ°¨ μ§ν₯ νλ‘κ·Έλλ°μ μ°¨μ΄μ
1. μ μ°¨ μ§ν₯ νλ‘κ·Έλλ°
- νλ‘κ·Έλ¨ μμμ μλ‘ κ΄λ ¨λ λμλ€λ§μ λ¬Άμ΄μ κ΄λ¦¬(ν΄λμ€)
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°κ³Ό λ¬λ¦¬ ‘κ°μ²΄’λΌλ κ°λ μ΄ μκ³ , λμ ‘ν¨μ’λΌλ κ°λ μ μλ€.
- νλ‘κ·Έλ¨μ λ§λ€ λ, λ°μ΄ν°μ ν¨μλ₯Ό ν©μΉ μ μλ€.
- νλ‘κ·Έλ¨μ λͺ λ Ήμ΄λ€μ μμλλ‘ μ€ννλ κ²μΌλ‘ λ³Έλ€.
2. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
- κ΄λ ¨λ λμλ€μ κ΄λ ¨λ λ°μ΄ν°μλ ν¨κ» λ¬Άμ΄μ κ΄λ¦¬
- νλ‘κ·Έλ¨μ λ§λ€ λ, λ°μ΄ν°μ ν¨μλ₯Ό ν©μΉ μ μλ€.
- νλ‘κ·Έλ¨λ€μ κ°μ²΄λ€μ΄ μμλλ‘ μν΅νλ κ³Όμ μΌλ‘ λ³Έλ€.
3. νμ΄μ¬ μ½λλ‘ λ껴보λ μ°¨μ΄
# μ μ°¨ μ§ν₯ νλ‘κ·Έλλ°
# λ°λ³΅μ μΌλ‘ μ¬μ©νλ μ½λλ₯Ό ν¨μλ‘ μ μνλ€
def print_person_info(person_name, person_age, person_gender):
# μ¬λμ μ΄λ¦, λμ΄, μ±λ³μ νλΌλ―Έν°λ‘ λ°μΌλ©΄ λ°μ μ 보λ₯Ό μ΄ν΄ν μ μλ λ¬Έμμ΄λ‘ μΆλ ₯ν΄μ£Όλ ν¨μ
print("μ¬λ ν λͺ
μ μκ°ν©λλ€")
print(f"{person_name}λμ {person_age}μ΄μ΄κ³ {person_gender}μ
λλ€")
def is_underage(person_age):
# μ¬λμ λμ΄λ₯Ό νλΌλ―Έν°λ‘ λ°μμ λ―Έμ±λ
μμΈμ§λ₯Ό 리ν΄ν΄μ£Όλ ν¨μ
return person_age < 20
# donaμ μ 보
dona_name = "dona"
dona_age = 10
dona_gender = "μ¬μ"
# mimiμ μ 보
mimi_name = "mimi"
mimi_age = 20
mimi_gender = "μ¬μ"
# dona/mimi μ 보 μΆλ ₯
print_person_info(dona_name, dona_age, dona_gender)
print_person_info(mimi_name, mimi_age, mimi_gender)
# dona/mimiκ° λ―Έμ±λ
μμΈμ§ μΆλ ₯
print(is_underage(dona_age))
print(is_underage(mimi_age))
# out
μ¬λ ν λͺ
μ μκ°ν©λλ€
donaλμ 10μ΄μ΄κ³ μ¬μμ
λλ€
μ¬λ ν λͺ
μ μκ°ν©λλ€
mimiλμ 20μ΄μ΄κ³ μ¬μμ
λλ€
True
False
# κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
# μμ±κ³Ό νλμ κ°λ κ°μ²΄λ€μ΄ νλμ νλ λ°©μμΌλ‘ μμ±νλ€
class Person:
# μ¬λμ λνλ΄λ ν΄λμ€
def __init__(self, name, age, gender):
# μ¬λμ μ΄λ¦, λμ΄, μ±λ³μ μμ±μΌλ‘ κ°λλ€
self.name = name
self.age = age
self.gender = gender
def print_info(self):
# μμ μ μ 보λ₯Ό μΆλ ₯νλ λ©μλ
print("μ¬λ ν λͺ
μ μκ°ν©λλ€")
print(f"{self.name}λμ {self.age}μ΄μ΄κ³ {self.gender}μ
λλ€")
def is_underage(self):
# μ¬λμ λμ΄λ₯Ό νλΌλ―Έν°λ‘ λ°μμ λ―Έμ±λ
μμΈμ§λ₯Ό 리ν΄ν΄μ£Όλ λ©μλ
return self.age < 20
# dona/mimiμ λνλ΄λ κ°μ²΄ μμ±
dona = Person("dona", 10, "μ¬μ")
mimi = Person("mimi", 20, "μ¬μ")
# dona/mimi μ 보 μΆλ ₯
dona.print_info()
mimi.print_info()
# dona/mimiκ° λ―Έμ±λ
μμΈμ§ μΆλ ₯
print(dona.is_underage())
print(mimi.is_underage())
# out
μ¬λ ν λͺ
μ μκ°ν©λλ€
donaλμ 10μ΄μ΄κ³ μ¬μμ
λλ€
μ¬λ ν λͺ
μ μκ°ν©λλ€
mimiλμ 20μ΄μ΄κ³ μ¬μμ
λλ€
True
False
μ½λμμλ λκ»΄μ§λ―μ΄, νμ€ν κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄ 짧μ보μΈλ€.
λ³΄ν΅ λ³΅μ‘ν νλ‘κ·Έλ¨μΌμλ‘ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μΌλ‘ νλ κ²μ΄ λ λμ κ²½μ°κ° λ§λ€κ³ νλ€.
μ€λμ μ¬κΈ°κΉμ§! λ€μ ν¬μ€ν μλ μΈμ€ν΄μ€ λ³μμ ν΄λμ€ λ³μλ₯Ό μ½λμ ν¨κ» μ 리ν΄λ³΄μ! π
π Reference
- μν€λ°±κ³Ό
- μ½λμ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
π‘ ν΄λΉ λΈλ‘κ·Έ OOP series