ํฐ์คํ ๋ฆฌ ๋ทฐ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ VS ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
10000COW 2022. 12. 7. 16:29๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
๊ฐ์ฒด๋?
์์ ์ ์ํ๋ฅผ ๊ฐ์ง๋ฉฐ ์ญํ ์ ์ํํ๋ ๊ฐ์ฒด
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋?
ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณด๋ ์๊ฐ์์ ๋ฒ์ด๋,
์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ๋ ๋จ์์ธ ๊ฐ์ฒด๋ค์ ๋ชจ์์ผ๋ก ํ์ ํ๊ณ ์ ํ๋ ๊ฒ์ด๋ค.
๊ฐ๊ฐ์ ๊ฐ์ฒด๋ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์, ๋๊ท๋ชจ ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉ๋๋ค.
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ตฌํ ๋ฐฉ๋ฒ
1. ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ณธ์ ์ธ ๋น๋ฉ ๋ธ๋ก์ผ๋ก
2. ๊ฐ ๊ฐ์ฒด๋ ์ด๋ค ํ์ (ํด๋์ค)์ ์ธ์คํด์ค
3. ํด๋์ค๋ ์์(inheritance)์ผ๋ก ์ฐ๊ด
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง
1. ์บก์ํ(Encapsulation) ๐
์๋ก ๊ด๋ จ์๋ ๋ฐ์ดํฐ์ ํจ์๋ฅผ ๊ฐ์ฒด ์์ ํ๋๋ก ๋ฌถ๊ณ
์ธ๋ถ์์ ๋ณด์ผ ํ์๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์จ๊ฒจ๋์ (์ ๋ณด ์๋)
2. ์ถ์ํ(Data Abstraction) ๐ฎ
์ธ๋ถ์์๋ ๋ด๋ถ๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๊ณ , ๋์ํ๋์ง ์ ๊ฒฝ์ฐ์ง ์๊ณ
ํ์ํ ์ธํฐํ์ด์ค ๋๋ ํจ์๋ง ๋ ธ์ถํด ์ฌ์ฉ์๊ฐ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์
3. ์์(Inheritance) ๐ฉ๐ง๐ฆ
์ฐ๊ด๋ ํด๋์ค ๊ฐ์ ์ํ์ ์ฐ๊ด์ฑ์ ๋์ด ํด๋์ค๋ฅผ ์ ์ธ
๋ถ๋ชจ ํด๋์ค์ ๋ฐ์ดํฐ์ ํจ์๋ฅผ ์์ ํด๋์ค๊ฐ ์ฌ์ฌ์ฉํ๊ณ , ์ถ๊ฐ๋ก ํ์ํ ๊ธฐ๋ฅ์ ์์ ๋๋ฆ๋๋ก ์ถ๊ฐํด์ ์ฌ์ฉ์ด ๊ฐ๋ฅํจ.
4. ๋คํ์ฑ(Polymorphism) ๐บ๐ถ๐ท๐ฐ
๊ฐ์ฒด๋ฅผ ์ค๊ณํ ๋ '์ญํ '๊ณผ '๊ตฌํ'์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ๋ค.
์ญํ = ์ธํฐํ์ด์ค
๊ตฌํ = ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค, ๊ตฌํ ๊ฐ์ฒด
์ฆ, ๊ฐ์ฒด๋ฅผ ์ค๊ณํ ๋ ์ญํ (์ธํฐํ์ด์ค)์ ๋จผ์ ๋ถ์ฌํ๊ณ , ๊ทธ ์ญํ ์ ์ํํ๋ ๊ตฌํ ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค.
๋คํ์ฑ์ ๋ณธ์ง์
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ์คํ ์์ ์ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ฒ.
์ฆ, ํด๋ผ์ด์ธํธ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ , ์๋ฒ์ ๊ตฌํ ๊ธฐ๋ฅ์ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค.
overRiding - ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๊ฐ ์๋ก ๋ค๋ฅธ ํด๋์ค์์ ๋ค๋ฅธ ๋์์ ์ํํจ.
overLoading - ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๊ฐ Parameter ์ ํํ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋์์ ์ํํจ.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
๊ณ ์ฐจํจ์๋ฅผ ํ์ฉํด ํจ์ ๋จ์๋ก ์ฎ์ด ๊ฐ๋ ๊ฒ์ 'ํจ์ํ ํ๋ก๊ทธ๋๋ฐ'์ด๋ผ๊ณ ํ๋ค.
ํน์ ํ ์ผ์ ํ๋ ํจ์๋ค ๋ผ๋ฆฌ ์ฎ์ด๋๊ณ , ์ฐ๊ฒฐํ๋ ํ๋ก๊ทธ๋๋ฐ์ธ ๊ฒ์ด๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์๋ ํจ์ ์์ฒด๋ฅผ ์์ํจ์๋ก ๋ง๋๋ ๊ฒ์ด ์ค์ํ๋ค.
์์ํจ์๋ ํจ์ ์์์ ๋ถ๋ณ์ฑ์ ์ ์งํ๋ ๊ฒ์ ๋งํ๋ค.
๋ถ๋ณ์ฑ์ ํจ์ ๋ด๋ถ์์ ์ธ๋ถ๋ก๋ถํฐ ์ฃผ์ด์ง parameter์ ๊ฐ ๋๋ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ง ์์์ผ ํจ์ ๋ปํ๋ค.
๊ฐ ๋๋ ์ํ ๋ณ๊ฒฝ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ์๋ก์ด ๊ฐ ๋๋ ๊ฐ์ฒด(Object)๋ฅผ ๋ง๋ค์ด์ ๋ฐํํด์ผ ํ๋ค.
์์ํจ์๋ก ๋ง๋ฆ์ผ๋ก์ ์๋ฌ๋ ์ค์ด๊ณ , ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง
1. ํ๋ก๊ทธ๋จ์ ํ๋ฆ ํ์
์ ์ ๋ฆฌ
์ต๊ทผ์๋ ๊ธฐ๋ฅ์ด ๋ค์ํด์ง์ ๋ฐ๋ผ ์ฝ๋์ ๋ณต์ก๋๊ฐ ๋์์ง. ๊ทธ๋งํผ ์น์ฌ์ดํธ์์๋ ์ ๊ณตํ๋ ๊ธฐ๋ฅ, ์ฒดํฌํด์ผํ๋ ๊ถํ ๋ฑ ๊ธฐํ ๊ฐ๋ค์ด ๋ง๋ค.
์ด๋ง์ด๋งํ ์ฝ๋์ ์์ผ๋ก ํ๋ก๊ทธ๋จ์ด ๋์ํ๊ณ ์์ผ๋ฏ๋ก ๋ณต์กํ ํ๋ก๊ทธ๋จ์ ์ผ๊ด ์์ฑํ๋ ค๊ณ ํ๋ฉด ๋ํดํ๊ธฐ์ ํจ์ ๋จ์๋ก ์๊ฐํ๋ฉด ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ์กฐ๊ธ ๋ ์ฝ๊ฒ ํ์ด๊ฐ ์ ์๋ค.
2. ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ
์ด๋ค ์คํ
์ ๋ฐ๋ฅธ ๊ธฐ๋ฅ์ ๊ฐ ์์ค๋ง๋ค ์ค๋ณตํด์ ๋ฃ์ด์ค๋ค๋ฉด ์์ ํ ๋ ๊ฐ์ ์ฝ๋๋ฅผ ์ผ์ผ์ด ๋ณ๊ฒฝํด์ค์ผํ๋ ๋ถํธํจ.
ํจ์๋ฅผ ํ์ฉํ๋ฉด ๋นํจ์จ์ฑ์ ํด๊ฒฐํ ์ ์๋ค.
3. ์ฝ๋์ ์์ ์ฑ
๊ฐ๊ฐ ํจ์ ๋จ์๋ก ๋ด๋น์๊ฐ ์ง์ ๋์ด์ ๊ฐ๋ฐํ๋ค๋ฉด ์ฝ๋์ ์์ ์ฑ์ด ์ข์์ง๊ณ , (ํด๋น ๊ธฐ๋ฅ์๋ง ์ง์คํ๊ธฐ ๋๋ฌธ์), ์์ ํ๊ธฐ๊ฐ ์ฉ์ดํ๋ค.
'๐ง๐ปโ๐ป CS > ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SOLID] ์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์น ์์น (1) | 2022.12.20 |
---|---|
ํ ์ด๋ ์ดํดํ๋ ์ปดํ์ผ ์ธ์ด VS ์ธํฐํ๋ฆฌํฐ ์ธ์ด (0) | 2022.12.19 |
๋์ ํ์ดํ(dynamic typing)์ด๋? (0) | 2022.03.15 |
Terminal ๋ช ๋ น์ด (0) | 2022.03.15 |
- Total
- Today
- Yesterday
- ๋ฆฌ์กํธ
- React Query
- state
- ๊ทธ๋ํ
- CSS
- mdn
- github
- ๋ธ๋ผ์ฐ์
- Context API
- JavaScript
- ํ์ด์ฌ
- error
- ์๋ฃ๊ตฌ์กฐ
- useState
- ์ ๋ ฌ
- ์๋ฌ
- react
- ์๋ฐ์คํฌ๋ฆฝํธ
- DB
- zustand
- DOM
- Browser
- ํจ์
- git
- ์๊ณ ๋ฆฌ์ฆ
- leetcode
- Python
- BOJ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Component
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |