๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object-Oriented Programming)
๊ฐ์ฒด ํ์ฑ(์ํ์ ํ์๋ก ์ด๋ฃจ์ด์ง)->๊ฐ์ฒด ์กฐ๋ฆฝ->ํ๋ก๊ทธ๋จ ํ์ฑ
๊ฐ์ฒด๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ
๊ฐ์ฒด๋ ๋ฌด์์ธ๊ฐ?
๊ฐ์ฒด = ๋ณ์(๊ฐ) + ๋ฉ์๋(์คํ ์ฝ๋)
๋ณ์์ ๋ฉ์๋๊ฐ ์๋ก ์ฐ๊ด๋ ๊ฒ๋ค๋ผ๋ฆฌ ๋ฌถ์ด ๋ง๋ ๊ฒ
๋ฉ์๋ : ๋ณ์์ ์ฐ๊ด๋ ๊ธฐ๋ฅ
์๋ก ์ฐ๊ด๋ ๋ณ์์ ๋ฉ์๋๋ฅผ ์ ํ์
ํ๊ณ ๋ฌถ์ด ๊ฐ์ฒด๋ฅผ ํ์ฑํ๋ ๊ฒ์ด ์ค์!
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
[๋ณ์]<------์ํฅ [๋ฉ์๋]
์ฐ๋ฃ๋ ์ฃผํ๊ธฐ๋ฅ
์๋๊ณ
๊ฐ์ฒด -> ๋ถํํ, ์ฌ์ฌ์ฉ์ฑ
-ํด๋์ค
1. ๋ถํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ฒญ์ฌ์ง, ์ค๊ณ๋, ํ
ํ๋ฆฟ
2. ์ถ์ํ์ ๊ณผ์ ์ ํตํด ํ์ฑ
ex)์๋์ฐจ ํด๋์ค
๋ณ์-------๋ฉ์๋
์ฐ๋ฃ๋ ์ฃผํ ๊ธฐ๋ฅ
์๋
๊ฐ์ฒด์งํฅ์ ๊ตฌ์ฑ์์
1.ํด๋์ค
๊ฐ์ ๋ฌธ์ ๋๋ฉ์ธ์ ์ํ๋ ์์ฑ(attribute)๊ณผ ํ์(behavior)๋ฅผ ์ ์
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐ ํ์
2.๊ฐ์ฒด(object)
๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉ๋ ํด๋์ค๋ฅผ ํตํด ํด๋์ค๋ฅผ ํ
ํ๋ฆฟ์ผ๋ก ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์์ ์์ฑ๋ ์ ๋ณด->์ธ์คํด์ค
์์ ๊ณ ์ ์ ์์ฑ์ ๊ฐ์ง๋ฉฐ ํด๋์ค์์ ์ ์ํ ํ์ ์ํ
๊ฐ์ฒด์ ํ์๋ ํด๋์ค์์ ์ ์๋ ํ์์ ๋ํ ์ ์๋ฅผ ๊ณต์ ํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ
3.๋ฉ์๋
๋ฉ์์ง(Message)๋ผ๊ณ ๋ ๋ถ๋ฆ
ํด๋์ค๋ก๋ถํฐ ์์ฑ๋ ๊ฐ์ฒด ์ฌ์ฉ ์ ๊ฐ์ฒด์ ๋ช
๋ น์ ๋ด๋ฆฌ๋ ํ์
->๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค, ๊ฐ์ฒด์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ค
ํ ๊ฐ์ฒด์ ์์ฑ์ ์กฐ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ
๊ฐ์ฒด ๊ฐ์ ํต์ ์ ๋ฉ์์ง ์ ๋ฌ์ ํตํด ์ด๋ฃจ์ด์ง
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ์ ํน์ง
์ถ์ํ : ๊ฐ์ฒด์์ ๊ณตํต๋ ์์ฑ๊ณผ ํ์๋ฅผ ์ถ์ถํ๋ ๊ฒ
์ถ์๋ฐ์ดํฐ ํ์
1. ๋ฐ์ดํฐ ํ์
์ ํํ๊ณผ ์ฐ์ฐ์ ์บก์ํ
2. ์ ๊ทผ ์ ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ ๋ณด๋ฅผ ์๋ํ ์ ์์
์ถ์ ๋ฐ์ดํฐ ํ์
: ํด๋์ค
์ถ์ ๋ฐ์ดํฐ ํ์
์ ์ธ์คํด์ค : ๊ฐ์ฒด
์ถ์ ๋ฐ์ดํฐ ํ์
์์ ์ ์๋ ์ฐ์ฐ : ๋ฉ์๋
์์ : ์๋ก์ด ํด๋์ค๊ฐ ๊ธฐ์กด์ ํด๋์ค์ ๋ฐ์ดํฐ์ ์ฐ์ฐ์ ์ด์ฉํ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฅ
์์ํด๋์ค
์์ฑ | ํ์
โผ
ํ์ํด๋์ค
๊ธฐ์กด์ ํด๋์ค : ๋ถ๋ชจ ํด๋์ค| ๊ธฐ๋ฐํด๋์ค| ์์ ํด๋์ค| ์ํผํด๋์ค
↓ ↓ ↓ ↓
์๋ก์ด ํด๋์ค : ์์ ํด๋์ค| ํ์ํด๋์ค| ํ์ ํด๋์ค| ์๋ธํด๋์ค
*ํ์ ํด๋์ค๋ฅผ ์ด์ฉํด ํ๋ก๊ทธ๋จ์ ์๊ตฌ์ ๋ง์ถ์ด ํด๋์ค ์์ ๊ฐ๋ฅ
*ํด๋์ค ๊ฐ์ ์ข
์ ๊ด๊ณ๋ฅผ ํ์ฑํ์ฌ ๊ฐ์ฒด ์กฐ์งํ
์์์ ํจ๊ณผ๋?
1. ์ฌ์ฌ์ฉ์ผ๋ก ์ธํด ์ฝ๋๊ฐ ์ค์ด๋ฆ - ์์ฑ์ด๋ ํ์๋ฅผ ๋ค์ ์ ์ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ!
2. ๋ฒ์ฉ์ ์ธ ์ฌ์ฉ ๊ฐ๋ฅ
ex)object ํ์
์ ๋งค๊ฐ๋ณ์์๋ string์ด๋ int์ ๊ฐ์ฒด๊ฐ ์ฐ์ฌ๋ ๋ฌธ์ ๋์ง ์์.
----->string๊ณผ int๋ชจ๋ object๋ฅผ ์์ ๋ฐ๊ธฐ ๋๋ฌธ!
3. ์๋ฃ์ ๋ฉ์๋์ ์์ ๋ก์ด ์ฌ์ฉ ๋ฐ ์ถ๊ฐ ๊ธฐ๋ฅ
๋คํ์ฑ : ๋ค์ํ ํํ๋ก ๋ํ๋ผ ์ ์๋ ํน์ง
ํด๋์ค ์์ ๊ฐ์ ์ด๋ฆ์ ์ฌ๋ฌ๊ฐ์ง ํ์a๋ฅผ ๊ฐ๊ณ ์์
ํด๋์ค ์์ํด๋์ค์ ํ์->ํ์ํด๋์ค ์ฌ์ ์
์ด๋ค ํ ์์์ ์ฌ๋ฌ ๊ฐ๋
์ ๋ฃ์ด ๋๋ ๊ฒ
์ค๋ฒ๋ผ์ด๋ฉ : ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๊ฐ ์ฌ๋ฌ ํด๋์ค์์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ํ๋ ๊ฒ
์ค๋ฒ๋ก๋ฉ : ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๊ฐ ์ธ์์ ๊ฐ์๋ ์๋ฃํ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ํ๋ ๊ฒ
๋งค์๋ ์ค๋ฒ๋ผ์ด๋ฉ
: ์์์ผ๋ก ๋ฌผ๋ ค ๋ฐ์ ์๋ฃ๋ ๋ฉ์๋๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ์ง ์๊ณ
ํ์ ํด๋์ค์์ ์๋ก ์ ์ํด ์ฌ์ฉํ๋ ๊ธฐ๋ฒ
1.์์ ํด๋์ค์ ๋ฉ์๋์ ๋์ผํ ์๋ช
(๋งค๊ฐ๋ณ์์ ํ์
, ๊ฐ์, ๋ฆฌํดํ์
)์ ๊ฐ์ ธ์ผ ํจ
-->์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ ํฅ์
๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ
ํด๋์ค ๋ด๋ถ์ ๋์ผํ ์ด๋ฆ์ ํ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ํ๋ ๊ฒ
1. ๋ฉ์๋์ ์ด๋ฆ์ด ๊ฐ๊ณ , ๋งค๊ฐ๋ณ์์ ํ์
๊ณผ ์๋ ์๋ก ๋ฌ๋ผ์ผ ํจ
2. ๋ฆฌํด ํ์
์ ๊ด๊ณํ์ง ์์
3. ๋ฉ์๋ ์ด๋ฆ์ ํ๋๋ก ํต์ผ ๊ฐ๋ฅํ๋ฉฐ, ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋์ ์ฌ๋ฌ ์ข
๋ฅ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ์ ์์
๋์
๋๋ฆฌ ๋ฐ ๋ฆฌ์คํธ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ ์ฝ๋ ์์ฑ
๋์
๋๋ฆฌ ๊ฐ์ฒด : ํ ๋ช
์ ๋ฉค๋ฒ ์ ๋ณด๋ง ๋ค๋ฃธ
๋ฆฌ์คํธ๊ฐ์ฒด์ ๋์
๋๋ฆฌ ๊ฐ์ฒด ์ฌ๋ฌ๊ฐ ๋ง๋ค์ด ๋์
๋๋ฆฌ ๊ฐ์ฒด์ ๊ฐ๊ฐ์ ๋ฉค๋ฒ ์ ๋ณด
๋์
๋๋ฆฌ ๊ฐ์ฒด์ ์์ฑ ๋ฐ ์ ๋ณด ์ถ๋ ฅ
create()ํจ์
๋งค๊ฐ๋ณ์์ ์ธ์๋ฅผ ์ ๋ฌ ๋ฐ์ ๋์
๋๋ฆฌ ๊ฐ์ฒด๋ฅผ ์์ฑ ๋ฐ ๋ฐํํ๋ ํจ์
to_str()ํจ์
์ธ์๋ก ์ ๋ฌ ๋ฐ์ ๋์
๋๋ฆฌ ๊ฐ์ฒด์ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐํํ๋ ํจ์
ํด๋์ค : ๊ฐ์ฒด ์์ฑ์ ์ํ ์ฒญ์ฌ์ง ๋๋ ํ
ํ๋ฆฟ
๋ฉค๋ฒ์ ๊ด๋ จ๋ ์ถ์ ๋ฐ์ดํฐ ํ์
์ด ํ์ํ๋ค๋ฉด
๋ฉค๋ฒ ํด๋์ค ์ค๊ณ→๋ฉค๋ฒ ํด๋์ค ์ ์→๊ฐ์ฒด์์ฑ(ํ๋ก๊ทธ๋จ ์ค์ฌ ์ญํ )
ํด๋์ค ์ ์ ๋ฐ ๊ฐ์ฒด ์์ฑ
ํด๋์ค ์ ์
class ํด๋์ค ๋ช
:
๊ฐ์ฒด ์์ฑ
๋ณ์ = ํด๋์ค๋ช
() → ์์ฑ์ ๋ฉ์๋: ํด๋์ค ์ด๋ฆ๊ณผ ๋์ผํ ๋ฉ์๋
ํด๋์ค์ ์ฝ๋ ๋ธ๋ก ์์ ํ๋์ ๋ฉ์๋๋ฅผ ์ ์ํด ์ฌ์ฉํ ์ ์์
๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ, ๊ทธ๋ฆฌ๊ณ self
์์ฑ์ ๋ฉ์๋ : ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ํธ์ถํ๋ ์์ฑ์ ๋ฉ์๋ → __init__๋ฉ์๋
์๋ฉธ์ ๋ฉ์๋ : ๊ฐ์ฒด๊ฐ ์๋ฉธ๋๊ธฐ ์ ์ ํธ์ถ๋๋ ์๋ฉธ์ ๋ฉ์๋ → __del__๋ฉ์๋
ํด๋์ค ์์ฑ์ ๋ฉ์๋ ์ ์
class ํด๋์ค๋ช
:
def __init__(self, ๋งค๊ฒ๋ณ์๋ชฉ๋ก):
ํด๋์ค ์๋ฉธ์ ๋ฉ์๋ ์ ์ - self๋ฅผ ์ ์ธํ ๋งค๊ฐ๋ณ์๋ ์ฌ์ฉํ์ง ์์, self๋ ๊ฐ์ฒด ๊ณต๊ฐ์ ๊ฐ๋ฆฌํค๋ ์๋ณ์
๊ฐ์ฒด๊ณต๊ฐ์ ํ๋์ ๋ฉ์๋์ ์ ๊ทผํ ๊ฒฝ์ฐ self.์๋ณ์ ํ์ ์ด์ฉ
class ํด๋์ค๋ช
:
def __del__(self):
์ธ์คํด์ค ๋งค์๋
self๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด์ ํ๋ ์ ๋ณด์ ์ ๊ทผํด ํน์ ๋ชฉ์ ์ ๊ธฐ๋ฅ์ ์ํํ๋๋ก ์ ์๋ ๋ฉ์๋
์ธ์คํด์ค ๋ณ์
ํด๋์ค ๋ด์์ self.๋ณ์ ํํ๋ฅผ ๊ฐ์ง๋ ๋ณ์
๊ฐ์ฒด๋ง๋ค ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด ๊ณ ์ ์ ์ ๋ณด
์ธ์คํด์ค ๋ณ์์ ์ ๊ทผ ์ ํ ๊ธฐ๋ฅ
getter/setter ๋ฉ์๋์ ์ ๊ณต ์ฌ๋ถ์ ๋ํ ๊ณ ๋ฏผ ํ์!
getter : ๋ฉค๋ฒ๋ฅผ ์ฝ์ด์ค๋ ๋ฉ์๋
setter : ๋ฉค๋ฒ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฉ์๋
class Person:
self.__name = name
→ํ๋ผ์ด๋น ํ๋ ์์ฑ
๋ฐ์ฝ๋ ์ดํฐ ๊ธฐ๋ฅ
๋ณ์ ์ด๋ฆ๊ณผ ๊ฐ์ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ์ฌ์ฉ
class Person:
@property์ ์ด๋ฆ.setter
def name(self):
ํด๋์ค ๋ณ์
ํด๋์ค ๋ด์์ ํด๋์ค๋ช
.๋ณ์ ํ์์ผ๋ก ์ ์ธ๋ ๋ณ์
ํด๋์ค ๋ณ์์ ์ ์ ๋ฐ ์ ๊ทผ
ํด๋์ค ๋ณ์ ์ ์
class ํด๋์ค๋ช
:
ํด๋์ค๋ณ์ = ๊ฐ
ํด๋์ค ๋ณ์ ์ ๊ทผ
ํด๋์ค๋ช
.ํด๋์ค๋ณ์
ํด๋์ค ๋ฉ์๋
ํด๋์ค๊ฐ ์์ ํ ๋ฉ์๋
ํด๋์ค ๋ฉ์๋์ ์ ์
class ํด๋์ค๋ช
:
@classmathod
def ํด๋์ค๋ฉ์๋(cls, ๋งค๊ฐ๋ณ์๋ชฉ๋ก):
ํด๋์ค ๋ฉ์๋์ ์ฌ์ฉ
ํด๋์ค๋ช
.ํด๋์ค๋ฉ์๋ (๋งค๊ฐ๋ณ์๋ชฉ๋ก)
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ
์ฐ์ฐ์๋ฅผ ์ค๋ณตํด์ ์ ์
ํด๋์ค ์์
๋ถ๋ชจํด๋์ค → ์์ํด๋์ค
๋์์
์ฌ์ฌ์ฉ, ํ์ฅ, ์์
๋ถ๋ชจํด๋์ค๋ ๋ฉค๋ฒ๊ฐ ์์๋๋ ํด๋์ค์ด๊ณ
์์ํด๋์ค๋ ๋ฉค๋ฒ๋ฅผ ์์ํ๋ ํด๋์ค.
ํ์ด์ฌ์ ๋จ์ผ ์์๋ง ์ง์!
ํด๋์ค ์์
class ํด๋์ค๋ช
(๋ถ๋ชจํด๋์ค๋ช
):
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
๋ถ๋ชจ ํด๋์ค์ ์๋ ๋ฉ์๋์ ๋์ผํ ์๋ช
์ ๊ฐ์ง ๋ฉ์๋๋ฅผ ์์ํด๋์ค์์ ๋ค์ ์ ์ํด ์ฌ์ฉํ๋ ๊ฒ
reprํจ์๋ ๊ฐ์ฒด ์ถ๋ ฅ์ ์ฃผ๋ก ์ฌ์ฉ
sortedํจ์๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด ๋์
์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด ์ฌ์ฉ์ ํด๋น ๋ฆฌ์คํธ ๊ฐ์ฒด์ ์๋ ๊ฐ ํญ๋ชฉ์์ ํค๋ฅผ ์ฌ์ฉํ ์ ๋ณด ์ ๋ฌ
'Language > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
python ์ ๋ฆฌ 6 (0) | 2022.04.08 |
---|---|
python ์ ๋ฆฌ 5 (0) | 2022.04.08 |
python ์ ๋ฆฌ 4 (0) | 2022.04.08 |
python ์ ๋ฆฌ 3 (0) | 2022.04.08 |
python ์ ๋ฆฌ 2 (0) | 2022.04.08 |
๋๊ธ