Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
Tags
- react
- ํ ์ดํ๋ก์ ํธ
- KDT
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ๋ก์ ํธ
- HTML
- ๊ฐ๋ฐ
- mongodb
- ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉ์ ํ
- ํ๋ก ํธ์๋
- ๋ฐฑ์ค
- ๋๋ฆผ์ฝ๋ฉ
- Python
- heapq
- node.js
- ๋ ธ๋ง๋์ฝ๋
- javascript
- error
- JS
- ํฌ๋กค๋ง
- ์ฝ๋ฉํ ์คํธ
- ๊ทธ๋ฆฌ๋
- ์ฝ๋ฉ
- ๊ตญ๋น์ง์
- ๋ชจ๊ฐ์ฝ
- fe
- CSS
- ํ์ด์ฌ
- Til
Archives
- Today
- Total
๐ฑ → ๐ณ
[Java] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ๋ณธ๋ฌธ
728x90
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ด๋?
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ: OOP(Object Oriented Programing)
์ ์ฐจ์งํฅ์ -> ๊ฐ์ฒด์งํฅ์
๊ฐ์ฒด: ๋์ (๋ถ์ด๋นต)ํด๋์ค: ๊ณตํต๋ ์์ฑ๋ค์ ์ ์ (๋ถ์ด๋นต ํ) OOP: ๊ฐ์ฒด๋ค์ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐํ ํ๋ก๊ทธ๋๋ฐ
OOP์ 4๊ฐ์ง ํน์ง
- ์ถ์ํ
- ์ถ์ํ๋ ๊ฐ์ฒด๋ค์ ๊ณตํต๋ ํน์ง์ ํ์ ํด ์ ์ํด ๋์ ์ค๊ณ ๊ธฐ๋ฒ
- ๋ชฉ์ ๊ณผ ๊ด๋ จ์ด ์๋ ๋ถ๋ถ์ ์ ๊ฑฐํ์ฌ ํ์ํ ๋ถ๋ถ๋ง์ ํํํ๊ธฐ ์ํ ๊ฐ๋ ์ด๋ค.
- ์บก์ํ
- ํ๋์ ๊ฐ์ฒด์ ๋ํด ๊ทธ ๊ฐ์ฒด๊ฐ ํน์ ํ ๋ชฉ์ ์ ์ํ ํ์ํ ๋ณ์๋ ๋ฉ์๋๋ฅผ ํ๋๋ก ๋ฌถ๋ ๊ฒ
- ๋ถํ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ถ ์ ์์: ์ ๋ณด์๋(private)
- ์์
- ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์ ์์ ํด๋์ค์์ ๋ฌผ๋ ค๋ฐ์ ์ฌ์ฉํ๋ ๊ฒ
- ๋จ์ผ ์์ (๋ค์ค ์์์ด ์ธํฐํ์ด์ค์ ๋ชฉ์ ์ ์๋๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ค์ค์์ ๊ธฐ๋ฅ ๊ฐ๋ฅ)
- ์ฝ๋์ ์ค๋ณต์ ์์ ๊ธฐ ์ํจ: ์ฝ๋ ์ฌ์ฌ์ฉ
- ๋คํ์ฑ
- ๋คํ์ฑ์ ํํ๊ฐ ๊ฐ์๋ฐ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ํ๋ ๊ฒ์ ์๋ฏธ
- ์ค๋ฒ๋ก๋ฉ(Overloading) ex) System.out.println()์๋ ๋ค์ํ ํ์ ์ด ๋ค์ด๊ฐ ์ ์์ง๋ง ๋์ผํ๊ฒ ์๋
- ์ค๋ฒ๋ผ์ด๋ฉ(Overriding): ์์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค์์ ์ฌ์ ์
- ํจ์ํ ์ธํฐํ์ด์ค(Funtional Interface)
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ( OOP ) ๊ฐ๋
OOP(Object-Oriented Programming, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ) ์ด๋?[OOP] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object Oriented Programming)์ด๋?๋คํ์ฑ(Polymorphism)์ด๋?
๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5์์น S.O.L.I.D
- SRP(Single Responsibility Principle): ๋จ์ผ ์ฑ
์ ์์น
- ํด๋์ค(๊ฐ์ฒด)๋ ๋จ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค๋ ์์น
- ํ๋ก๊ทธ๋จ์ ์ ์ง๋ณด์ ์ฑ์ ๋์ด๊ธฐ ์ํ ์ค๊ณ ๊ธฐ๋ฒ
- OCP(Open Closed Priciple): ๊ฐ๋ฐฉ ํ์ ์์น
- ํ์ฅ์ ์ด๋ ค์์ด์ผ ํ๋ฉฐ(์ฝ๊ฒ), ์์ (๋ณ๊ฒฝ)์๋ ๋ซํ(์ต์)์์ด์ผ ํ๋ค๋ ์๋ฏธ
- ์ถ์ํ ์ฌ์ฉ์ ํตํ ๊ด๊ณ ๊ตฌ์ถ์ ๊ถ์ฅ
- ๋คํ์ฑ๊ณผ ํ์ฅ์ด๋ผ๋ ๊ฐ์ฒด์งํฅ์ ์ฅ์ ์ ๊ทน๋ํํ๋ ์ค๊ณ ์์น
- LSP(Listov Substitution Priciple): ๋ฆฌ์ค์ฝํ ์นํ ์์น
- ๋ถ๋ชจ ํด๋์ค์ ํ๋ ๊ท์ฝ์ ์์ ํด๋์ค๊ฐ ์๋ฐํ๋ฉด ์ ๋จ
- ISP(Interface Segregation Principle): ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
- ์ธํฐํ์ด์ค์ ๋จ์ผ ์ฑ ์ ์์น
- ์ธํฐํ์ด์ค๋ ํ๋ฒ ๊ตฌ์ฑํ์์ผ๋ฉด ์๋งํด์ ๋ณํ๋ฉด ์๋๋ ์ ์ฑ ๊ฐ๋
- DIP(Dependency Inversion Principle): ์์กด ์ญ์ ์์น
- ์ฐธ์กฐํ๋ ค๋ ๋์์ ์์ ์์(์ถ์ ํด๋์ค or ์ธํฐํ์ด์ค)๋ก ์ฐธ์กฐ
- ๊ฐ ํด๋์ค๊ฐ์ ๊ฒฐํฉ๋(coupling)์ ๋ฎ์ถ๋ ๊ฒ
[OOP] ๐ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น - S.O.L.I.D
728x90
'Server > Java & Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JPA ์์์ฑ ์ปจํ ์คํธ๋? (0) | 2023.06.01 |
---|---|
[Spring boot] properties ์ฌ์ฉ์ "Could not resolve placeholder" ์ค๋ฅ ๋ฐ์ (2) | 2023.05.28 |
Spring์์ Redis๋ก ์บ์ฑ์ฒ๋ฆฌ (0) | 2023.05.16 |
[Spring] save() vs saveAndFlush() (0) | 2023.03.22 |
[Spring] IoC, DI๋? (0) | 2023.03.22 |