ํฐ์คํ ๋ฆฌ ๋ทฐ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ด๋?
*๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ฒด๋ค์ ์งํฉ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ํธ ์์ฉ์ ํํํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ์ทจ๊ธํ์ฌ ๊ฐ์ฒด ๋ด๋ถ์ ์ ์ธ๋ ๋ฉ์๋๋ฅผ ํ์ฉํ๋ *ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ผ๋ก ์ถ์ํ, ์บก์ํ, ์์์ฑ, ๋คํ์ฑ์ด๋ผ๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๋ฌํ ํน์ง๋ค๋ก ์ธํด ํ๋ก๊ทธ๋จ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋๊ท๋ชจ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
*ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋?
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋?
ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์(Programming Paradigm)์ด๋? ํ๋ก๊ทธ๋๋จธ์๊ฒ ํ๋ก๊ทธ๋๋ฐ์ ๊ด์ ์ ๊ฐ๊ฒ ํด์ฃผ๋ ์ญํ ์ ํ๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ : ํ๋ก๊ทธ๋๋จธ๋ค์ด ํ๋ก๊ทธ๋จ์ ์
j-su2.tistory.com
*๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)๋?
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] OOP์ FP
OOP๋? OOP๋ Object Oriented Programming์ ์ฝ์๋ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ปํฉ๋๋ค. class์ object์ ๊ธฐ๋ฐํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์(๋์์ธ ํจํด)์ผ๋ก, ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ผ๋ฆฌ ๋ฌถ์ด์ class๋ฅผ ํ์ฑํ๊ณ ๊ทธ ์์
j-su2.tistory.com
์ด๋ฌํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ค๊ณํ ๋๋ SOLID ์์น์ ์ง์ผ์ฃผ์ด์ผ ํฉ๋๋ค.
SOLID๋?
SOLID๋ ๋ก๋ฒํธ ๋งํด์ด 2000๋ ๋ ์ด๋ฐ์ ๋ช ๋ช ํ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ์ค๊ณ์ ๋ค์ฏ ๊ฐ์ง ๊ธฐ๋ณธ ์์น์ ๋ง์ดํด ํจ๋์ค๊ฐ ๋๋ฌธ์์ด ๊ธฐ์ต์ ๋ก ์๊ฐํ ๊ฒ์ ๋๋ค.
- ํ๋ก๊ทธ๋๋จธ๊ฐ ์๊ฐ์ด ์ง๋๋ ์ ์ง ๋ณด์์ ํ์ฅ์ด ์ฌ์ด ์์คํ ์ ๋ง๋ค๊ฒ ํด์ค
- ์ ์์ผ ์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ ์ ์ํ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ ๋ฐ์ ์ ๋ต์ ์ผ๋ถ
S๋ ๋จ์ผ ์ฑ ์ ์์น, O๋ ๊ฐ๋ฐฉ-ํ์ ์์น, L์ ๋ฆฌ์ค์ฝํ ์นํ ์์น, I๋ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น, D๋ ์์กด ์ญ์ ์์น์ ์๋ฏธํฉ๋๋ค.
๋จ์ผ ์ฑ ์ ์์น(SRP, Single Responsibility Principle)
๋ชจ๋ ํด๋์ค๋ ๊ฐ๊ฐ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ ์์น์ ๋๋ค.
- ๋ณ๊ฒฝ์ด ์์ ๋ ํ๊ธ ํจ๊ณผ๊ฐ ์ ์ผ๋ฉด ์ข์
- ์๋ฅผ ๋ค์ด ๊ฐ์ฒด์ ์์ฑ ๋ถ๋ถ๊ณผ ์ฌ์ฉ ๋ถ๋ถ์ ๋ถ๋ฆฌํ๋ ๊ฒ
๊ฐ๋ฐฉ-ํ์ ์์น(OCP, Open Close Principle)
์ ์ง ๋ณด์ ์ฌํญ์ด ์๊ธด๋ค๋ฉด ์ฝ๋๋ฅผ ์ฝ๊ฒ ํ์ฅํ ์ ์๋๋ก ํ๊ณ ์์ ํ ๋๋ ๋ซํ ์์ด์ผ ํ๋ ์์น์ ๋๋ค.
- ๊ธฐ์กด์ ์ฝ๋๋ ์ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์๋ ํ์ฅ์ ์ฝ๊ฒ ํ ์ ์์ด์ผ ํจ
- ์๋ฅผ ๋ค์ด ๋คํ์ฑ์ ํ์ฉํด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์๋ก์ด ํด๋์ค๋ฅผ ํ๋ ๋ง๋ค์ด ์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํ
- ์ญํ ๊ณผ ๊ตฌํ์ ๋ถ๋ฆฌ
- ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ์ด์ฃผ๋ ๋ณ๋์ ์กฐ๋ฆฝ/์ค์ ์๊ฐ ํ์ํจ
๋ฆฌ์ค์ฝํ ์นํ ์์น(LSP, Liskov Substitution Principle)
ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๊นจ๋จ๋ฆฌ์ง ์์ผ๋ฉด์ ํ์ ํ์ ์ ์ธ์คํด์ค๋ก ๋ฐ๊ฟ ์ ์์ด์ผ ํ๋ ๊ฒ์ ๋๋ค.
- ๋ถ๋ชจ ๊ฐ์ฒด์ ์์ ๊ฐ์ฒด๋ฅผ ๋ฃ์ด๋ ์์คํ ์ด ๋ฌธ์ ์์ด ๋์๊ฐ์ผ ํจ
- ๋คํ์ฑ์์ ํ์ ํด๋์ค๋ ์ธํฐํ์ด์ค ๊ท์ฝ์ ๋ค ์ง์ผ์ผ ํ๋ค๋ ๊ฒ, ๋คํ์ฑ์ ์ง์ํ๊ธฐ ์ํ ์์น, ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ตฌํ์ฒด๋ฅผ ๋ฏฟ๊ณ ์ฌ์ฉํ๋ ค๋ฉด LSP๊ฐ ์ถฉ์กฑ๋์ด์ผ ํจ
- ์๋ฅผ ๋ค์ด ์ปดํ์ผ์ ์ฑ๊ณตํด๋ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ์ ๋ํ ๊ท์ฝ์ ์งํค์ง ์๊ฒ ๊ตฌํํ๋ค๋ฉด LSP๋ฅผ ์๋ฐ!
์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น(ISP, Interface Segregation Principle)
ํ๋์ ์ผ๋ฐ์ ์ธ ์ธํฐํ์ด์ค๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ์ฌ๋ฌ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ์์น์ ๋งํฉ๋๋ค.
- ์ธํฐํ์ด์ค๊ฐ ๋ช ํํด์ง๊ณ , ๋์ฒด ๊ฐ๋ฅ์ฑ์ด ๋์์ง
- ์๋ฅผ ๋ค์ด ์๋์ฐจ๋ ์ด์ /์ ๋น ๊ธฐ๋ฅ์ด ์๊ณ , ์ฌ์ฉ์๋ ์ด์ ์/์ ๋น์ฌ๋ก ๋ถ๋ฆฌํด๋๋ฉด ์ ๋น ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๊ฟ๋ ์ด์ ์์๋ ์ํฅ์ ๋ฏธ์น์ง ์์
์์กด ์ญ์ ์์น(DIP, Dependency Inversion Principle)
DIP์ ํต์ฌ ์๋ฆฌ๋ "์ถ์ํ์ ์์กดํด์ผ์ง, ๊ตฌ์ฒดํ์ ์์กดํ๋ฉด ์๋๋ค" ์ ๋๋ค. ์ฆ, ์์ ๋ณด๋ค ๋ณํ๊ธฐ ์ฌ์ด ๊ฒ์ ์์กดํ๋ ๊ฒ์ ์ถ์ํ๋ ์ธํฐํ์ด์ค๋ ์์ ํด๋์ค๋ฅผ ๋์ด ๋ณํ๊ธฐ ์ฌ์ด ๊ฒ์ ๋ณํ์ ์ํฅ๋ฐ์ง ์๊ฒ ํ๋ ์์น์ ๋งํฉ๋๋ค.
- ์์ ๊ณ์ธต์ ํ์ ๊ณ์ธต์ ๋ณํ์ ๋ํ ๊ตฌํ์ผ๋ก๋ถํฐ ๋ ๋ฆฝํด์ผ ํจ
- ๊ตฌํ ํด๋์ค์ ์์กดํ์ง ๋ง๊ณ ์ธํฐํ์ด์ค์ ์์กดํด์ผ ํจ (๊ตฌํ์ฒด์ ์์กดํ๊ฒ ๋๋ค๋ฉด ๋ณ๊ฒฝ์ด ์์ฃผ ์ด๋ ค์์ง๊ฒ ๋จ)
- ์์กด์ฑ ์ฃผ์ ์ DIP๋ฅผ ๋ฐ๋ฆ
- ์ญํ ์ ์์กดํ๊ฒ ํด์ผํจ
์ ๋ฆฌํ์๋ฉด, ๊ฐ์ฒด ์งํฅ์ ํต์ฌ์ ๋คํ์ฑ์ ํตํด ๋ณ๊ฒฝ์ ์ฉ์ดํ ๊ฐ๋ฐ์ ํ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง, ๋คํ์ฑ ๋ง์ผ๋ก๋ OCP, DIP๋ฅผ ์งํฌ ์ ์๊ธฐ ๋๋ฌธ์ ์คํ๋ง๊ณผ ๊ฐ์ด ๊ฐ์ฒด ์งํฅ ์ค๊ณ๋ฅผ ๋์์ฃผ๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด ํด๊ฒฐํ ์ ์์ต๋๋ค.
[์ถ์ฒ] ๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ
http://www.yes24.com/Product/Goods/108887922
๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ - YES24
๋์์ธ ํจํด, ๋คํธ์ํฌ, ์ด์์ฒด์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์๋ฃ ๊ตฌ์กฐ, ๊ฐ๋ฐ์ ๋ฉด์ ๊ณผ ํฌํธํด๋ฆฌ์ค๊น์ง!CS ์ ๊ณต์ง์ ์ต๋๊ณผ ๋ฉด์ ๋๋น, ์ด ์ฑ ํ ๊ถ์ด๋ฉด ์ถฉ๋ถํ๋ค!๊ฐ๋ฐ์ ๋ฉด์ ์์ ํฐ ๋น์ค์ ์ฐจ์งํ๋ CS(Comp
www.yes24.com
https://ko.wikipedia.org/wiki/SOLID_(%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%EC%84%A4%EA%B3%84)
SOLID (๊ฐ์ฒด ์งํฅ ์ค๊ณ) - ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์
์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์ .
ko.wikipedia.org
[๋ฌด๋ฃ] ์คํ๋ง ์ ๋ฌธ - ์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๋ถํธ, ์น MVC, DB ์ ๊ทผ ๊ธฐ์ - ์ธํ๋ฐ | ๊ฐ์
์คํ๋ง ์ ๋ฌธ์๊ฐ ์์ ๋ฅผ ๋ง๋ค์ด๊ฐ๋ฉด์ ์คํ๋ง ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ ๋ฐ์ ๋น ๋ฅด๊ฒ ํ์ตํ ์ ์์ต๋๋ค., - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ...
www.inflearn.com
์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ | ๊ฐ์
์คํ๋ง ์ ๋ฌธ์๊ฐ ์์ ๋ฅผ ๋ง๋ค์ด๊ฐ๋ฉด์ ์คํ๋ง์ ํต์ฌ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ์คํ๋ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ์คํ ๋ค์ง ์ ์์ต๋๋ค., - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ
www.inflearn.com
'CS > Design Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Design Pattern] DDD(๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ)๋? (0) | 2022.10.26 |
---|---|
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋? (0) | 2022.10.01 |
[Design Pattern] TDD(ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ) (0) | 2022.07.04 |
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] OOP์ FP (0) | 2022.07.03 |
[Design Pattern] GoF(Gang of Four) ๋์์ธ ํจํด ์ข ๋ฅ (0) | 2022.06.28 |
- Total
- Today
- Yesterday
- ๋ฐฑ์ค node.js
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ๋์์ธ ํจํด
- ์๋ฐ
- ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ๋ฐฑ์ค javascript
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ๋กํ ์ฝ
- TDD
- ํฌํฌ์ธํฐ
- ์นด์นด์ค ์ธํด
- Baekjoon
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- map
- ์ ์ญ ๋ณ์
- ๋ ์์ปฌ ํ๊ฒฝ
- git
- ์ฝ๋ฉํ ์คํธ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- http
- ๋คํธ์ํฌ
- ์ด๋ถํ์
- JavaScript
- ๋ฐฑ์ค
- ์๋ฐ์คํฌ๋ฆฝํธ
- fp
- ํ๋กํผํฐ
- ์ด์์ฒด์
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 29 | 30 |