ํค์๋
- OOP(Object Oriented Programming)
- ๊ฐ์ฒด, ํด๋์ค, ์ธ์คํด์ค
- ์์/ํฌํจ
- ์บก์ํ, ์ถ์ํ, ๋คํ์ฑ
OOP(Object Oriented Programming)
ํ์ค์์ ๋ฐ์ํ ์ ์๋ ํน์ object๋ฅผ ์ปดํจํฐ๋ฅผ ํตํด ํํํ๋ ๊ฒ
- ํจ์, ๋ณ์์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ ๋ฐ ํ๋ก๊ทธ๋๋ฐ
- ๊ฐ๋จํ๊ฒ ์ธ์์ ์๋ ๋ชจ๋ ์ค์ฒด๊ฐ ์๋ ๊ฒ๋ค์ ์ปดํจํฐ๋ก ํํํ๋ค๊ณ ์๊ฐํด๋ณด๊ธฐ
- ๊ฐ์ฒด ์งํฅ๋ ๊ฒฐ๊ตญ ์ต์๋น์ฉ์ผ๋ก ์ต๋์ ํจ์จ์ ์ป์ด๋ด๊ธฐ ์ํด ๊ณ ์๋ ๋ฐฉ๋ฒ
- ์ด์ธ์๋ ์์ ์งํฅ, ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ฑ์ด ์์
[OOP] ์ผ์์ํ ์์
์ผ์์ํ์์ ์ ์ฉ์นด๋๋ฅผ ์ฌ์ฉํ๋ ํ์
class Card():
def __init__(self):
self.money = 0
def charge(self, num):
self.money += num
print(f'{self.money}์ ์ถฉ์ ํ์์ต๋๋ค.')
def consume(self, num):
if self.money >= num:
print(f'{num}์ ์ง์ถํ์์ต๋๋ค.')
self.money -= num
print(f'{self.money}์ ๋จ์์ต๋๋ค.')
else:
print(f'์์ก์ด ๋ถ์กฑํฉ๋๋ค')
card = Card()
card.charge(10000)
card.consume(2000)
card.consume(1000)
card.consume(7000)
card.consume(1000)
### ์ถ๋ ฅ๊ฐ
10000์ ์ถฉ์ ํ์์ต๋๋ค.
2000์ ์ง์ถํ์์ต๋๋ค.
8000์ ๋จ์์ต๋๋ค.
1000์ ์ง์ถํ์์ต๋๋ค.
7000์ ๋จ์์ต๋๋ค.
7000์ ์ง์ถํ์์ต๋๋ค.
0์ ๋จ์์ต๋๋ค.
์์ก์ด ๋ถ์กฑํฉ๋๋ค
๊ฐ์ฒด, ํด๋์ค, ์ธ์คํด์ค
๊ฐ์ฒด(Object)
- ์ํํธ์จ์ด ์ธ๊ณ์์ ๊ตฌํํ ๋์
- ํด๋์ค์ ์ ์ธ๋ ๋ชจ์ ๊ทธ๋๋ก์ ์ค์ฒด
- ํด๋์ค์ ์ธ์คํด์ค
- ํด๋์ค์ ํ์
์ผ๋ก ์ ์ธ๋์์ ๋
๊ฐ์ฒด
๋ผ๊ณ ๋ถ๋ฆ
ํด๋์ค(Class)
- ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋ด๊ธฐ์ํ ํ
- ๋ณ์์ ๋ฉ์๋์ ์งํฉ
์ธ์คํด์ค(Instance)
- ํ(ํด๋์ค)์ ๋ฐํ์ผ๋ก ์ํํธ์จ์ด ์ธ๊ณ์ ๊ตฌํ๋ ๊ตฌ์ฒด์ ์ธ ๊ฐ์ฒด
- ์ค์ฒดํ๋ ์ธ์คํด์ค๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋จ
- ์ธ์คํด์ค๋ ๊ฐ์ฒด์ ํฌํจ๋๋ ๊ฐ๋
- ๊ฐ์ฒด๋ ํด๋์ค์ ์ธ์คํด์ค
์์/ํฌํจ
์์
class Person:
def greeting(self):
print('์๋
ํ์ธ์.')
class Student(Person):
def study(self):
print('๊ณต๋ถํ๊ธฐ')
- Person์ Student์ ๋ถ๋ชจ ํด๋์ค์ด๋ฉฐ Student๋ Person์ ์์ ํด๋์ค
- ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ฅ์ ์์ ํด๋์ค์์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์
- ํด๋์ค๊ฐ ๊ฐ์ ์ข ๋ฅ๋ก ๋๋ฑํ ๊ด๊ณ์ผ ๋ ์ฌ์ฉ
- is-a ๊ด๊ณ
ํฌํจ
class Person:
def greeting(self):
print('์๋
ํ์ธ์.')
class PersonList:
def __init__(self):
self.person_list = [] # ๋ฆฌ์คํธ ์์ฑ์ Person ์ธ์คํด์ค๋ฅผ ๋ฃ์ด์ ๊ด๋ฆฌ
def append_person(self, person): # ๋ฆฌ์คํธ ์์ฑ์ Person ์ธ์คํด์ค๋ฅผ ์ถ๊ฐํ๋ ํจ์
self.person_list.append(person)
- PersonList๋ Person์ ๊ฐ๋ ์ ํฌํจํ๊ณ ์์
- ๋๋ฑํ ๊ด๊ณ๊ฐ ์๋ ํฌํจํ๊ณ ์๋ ๊ด๊ณ
- has-a ๊ด๊ณ
์บก์ํ/์ถ์ํ/๋คํ์ฑ
์บก์ํ
- ์ฐ๊ด๋์ด ์๋ ๊ฒ๋ค์ ํ๋๋ก ๋ฌถ์ด์ฃผ๋ ๊ฒ
- ์ฐ๊ด๋์ด์๋ ๋ณ์์ ํจ์๋ฅผ ํ๋์ ํด๋์ค๋ก ๋ฌถ๋๋ค.
- ์บก์ํ๊ฐ ์๋์ด์๋ค๋ ๊ฒ์ ๊ธฐ๋ฅ๋ณ๋ก ํด๋์ค๊ฐ ์ ๋๋์ด์ ธ์๋ค๋ ์๋ฏธ
- ๊ฐ์ฒด ๋ด์ ๋ณ์์ ์ง์ ์ ์ธ ์ ๊ทผ์ ์ ํํ์ฌ ์ ๋ณด์๋๋ ๊ฐ๋ฅ
์ถ์ํ
- ์ด๋ค ์ค์ฒด๋ก๋ถํฐ ๊ณตํต์ ์ธ ๋ถ๋ถ์ด๋ ๊ด์ฌ์๋ ํน์ฑ๋ค๋ง ํ ๊ณณ์ ๋ชจ์ ๊ฒ
- ๊ฐ์ฒด์งํฅ์์์ ์ถ์ํ๋ ํ์ํด๋์ค๋ค์ ์กด์ฌํ๋ ๊ณตํต์ ์ธ ๋ฉ์๋๋ฅผ ์ธํฐํ์ด์ค๋ก ์ ์ํ๋ ๊ฒ์ ์๋ฏธ
- ๋ถ๋ชจํด๋์ค์ ์ ์ํ ํจ์๋ฅผ ์ฌ๋ฌ ์์ ํด๋์ค์์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๊ตฌํํ๊ณ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ์ ๋ด๊ฒ ํ์ฉํ ์ ์์
- ํฐ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์, ์์ฃผ ์ค์ํ ๊ธฐ๋ฅ(ํ์์ ์ธ ๊ธฐ๋ฅ)์ ๋ถ๋ชจ ํด๋์ค์ ๋๊ณ ์์ ํด๋์ค์ ๊ณตํต์ ์ธ ๋ฉ์๋๋ฅผ ๊ตฌํ
๋คํ์ฑ
- ๊ฐ์ ๋ชจ์์ ํจ์๊ฐ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๋ ๊ฒ
- ์ค๋ฒ๋ก๋ฉ(ํจ์์ ์ด๋ฆ์ ๊ฐ์ผ๋ ํจ์์ ๋งค๊ฐ๋ณ์์ ๊ฐ์, ํ์ ๋ฑ์ ๋ค๋ฅด๊ฒ ํ์ฌ ๋ค๋ฅด๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ)
- ์ค๋ฒ๋ผ์ด๋ฉ(์์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค์์ ๋๊ฐ์ ์ด๋ฆ์ผ๋ก ์ฌ์ ์ ; ๋ฎ์ด์ฐ๊ธฐ)
- ์ฆ, ๋ฉ์๋์ ์ด๋ฆ์ ๊ฐ์๋ฐ ์ํฉ์ ๋ฐ๋ผ ํธ์ถ๋๋ ๋ฉ์๋๊ฐ ๋ค๋ฅธ ๊ฒ
๊ฐ๋ ์์ฒด๊ฐ ์ถ์์ ์ด์ง๋ง
์ค์ ํ์ค ์ธ๊ณ์ ์ผ๋ค์ ํ๋ก๊ทธ๋จ ์ธ์ด๋ก ๊ตฌํํ๋ ๊ด์ ์์ ์๊ฐํด๋ณด๊ณ
์์ ์ฝ๋๋ฅผ ๋ง์ด ์ ํ๋ฉด์ ์ดํดํ๊ธฐ
'๐ฟ Data > ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] 96. ์ถ์ ์๋ฃํ(Abstract Data Type ; ADT) (0) | 2022.04.04 |
---|---|
[TIL] 95. python ์๋ฃ๊ตฌ์กฐ ๋ฐ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธ (0) | 2022.03.31 |
[TIL] 93. python ๋ฌธ์ ํด๊ฒฐ (0) | 2022.03.29 |
[TIL] 92. python ๊ธฐ๋ณธ (0) | 2022.03.28 |
[TIL] 85. GAN(Generative Adversarial Networks) (0) | 2022.03.15 |