Object-Oriented Programming
๐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ๋ค์ฏ ๊ฐ์ง ์ค์ํ ์ค๊ณ ์์น์ SOLID ์์น์ด๋ผ๊ณ ํ๋ค.
*๋๋ณด๊ธฐ๋ ๊ด๋ จ ์์์
1. Single Responsibility Principle (๋จ์ผ ์ฑ ์ ์์น)
- ํ๋์ ํด๋์ค๋ ๋จ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค.
- ์ฆ, ์ฌ๋ฌ ๊ธฐ๋ฅ์ ํ ํด๋์ค์์ ์ฒ๋ฆฌํ์ง ์๋๋ค.
๋๋ณด๊ธฐ
โ ์ ๋ณด ์ ์ฅ ๊ธฐ๋ฅ๊ณผ ์ ๋ณด ์ถ๋ ฅ ๊ธฐ๋ฅ์ ๋ณ๋์ ํด๋์ค๋ก ๋ถ๋ฆฌ
2. Open/Closed Principle (๊ฐ๋ฐฉ-ํ์ ์์น)
- ํ์ฅ์๋ ์ด๋ ค ์๊ณ , ์์ ์๋ ๋ซํ ์์ด์ผ ํ๋ค.
- ์ฆ, ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋๋ก ์ค๊ณํ๋ค.
๋๋ณด๊ธฐ
โ ์กฐ๊ฑด๋ฌธ ๋์ , ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ๊ธฐ๋ฅ์ ํ์ฅ
3. Liskov Substitution Principle (๋ฆฌ์ค์ฝํ ์นํ ์์น)
- ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค๋ฅผ ๋์ฒดํ ์ ์์ด์ผ ํ๋ค.
- ์ฆ, ๋ถ๋ชจ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์์ ์์ ํด๋์ค๋ฅผ ๋ฃ์ ์ ์๊ฒ ํ๋ค.
๋๋ณด๊ธฐ
โ Rectangle์ ์์ํ Square๊ฐ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ ์์ ์ผ๋ก ๋์ํ๋๋ก ๋ณด์ฅ
4. Interface Segregation Principle (์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น)
- ํด๋ผ์ด์ธํธ๊ฐ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค์ ์์กดํ์ง ์๋๋ก ํ๋ค.
- ์ฆ, ํฐ ์ธํฐํ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์์ ์ธํฐํ์ด์ค๋ก ๋๋๋ค.
๋๋ณด๊ธฐ
โ Animal ์ธํฐํ์ด์ค์ fly() ๋ฉ์๋๋ฅผ ๋ฃ์ง ์๊ณ , Bird ์ธํฐํ์ด์ค์์๋ง fly()๋ฅผ ์ ์
5. Dependency Inversion Principle (์์กด ์ญ์ ์์น)
- ๊ณ ์์ค ๋ชจ๋(๋น์ฆ๋์ค ๋ก์ง)์ด ์ ์์ค ๋ชจ๋(๋ฐ์ดํฐ๋ฒ ์ด์ค)์ ์์กดํ์ง ์๋๋ก ํ๋ค.
- ์ฆ, ์ถ์ํ(์ธํฐํ์ด์ค)์ ์์กดํด์ผ ํ๊ณ , ๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ฒด์ ์์กดํ์ง ์๋๋ค.
๋๋ณด๊ธฐ
โ Database ํด๋์ค๋ฅผ ์ง์ ์ฌ์ฉํ์ง ์๊ณ , ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด ๊ตฌํ ํด๋์ค๋ฅผ ์ฃผ์
'MAIN > Java & Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ฉ๋ชจ] DTO์ record (0) | 2025.04.06 |
|---|---|
| ๋ฌด๋ถ๋ณํ Getter & Setter ์ฌ์ฉ์ OOP ์์น์ ์๋ฐฐํ๋ค. (0) | 2025.03.27 |
| [Java] ์ ๋ค๋ฆญ๊ณผ ๋ช ๋ช ๊ด๋ก (1) | 2025.03.24 |
| [Java] Stream API vs for-loop: Which One is More Efficient? (1) | 2025.02.25 |
| [Java] BOJ 18870: ์ขํ ์์ถ๊ณผ ๋ญํน ์๊ณ ๋ฆฌ์ฆ (1) | 2025.02.24 |