์บก์ํ ๋ณด์์ฝ์
์ค์ํ ๋ฐ์ดํฐ ๋๋ ๊ธฐ๋ฅ์ฑ์ ๋ถ์ถฉ๋ถํ๊ฒ ์บก์ํํ๊ฑฐ๋ ์๋ชป ์ฌ์ฉํจ์ผ๋ก์จ ๋ฐ์ํ๋ ๋ณด์์ฝ์ ์ผ๋ก ์ ๋ณด ๋ ธ์ถ, ๊ถํ ๋ฌธ์ ๋ฑ์ด ๋ฐ์
- ์๋ชป๋ ์ธ์ ์ ์ํ ๋ฐ์ดํฐ ์ ๋ณด ๋ ธ์ถ
- ์ ๊ฑฐ๋์ง ์๊ณ ๋จ์ ๋๋ฒ๊ทธ ์ฝ๋
- Public ๋ฉ์๋๋ก๋ถํฐ ๋ฐํ๋ Private ๋ฐฐ์ด
- Private ๋ฐฐ์ด์ Public ๋ฐ์ดํฐ ํ ๋น
* ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP; Object Oriented Programming)
: ํ๋ก๊ทธ๋จ์ ๋จ์ํ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ผ๋ก ๋๋๋ ๊ฒ์ด ์๋๋ผ,
'๊ฐ์ฒด'๋ผ๋ ๊ธฐ๋ณธ ๋จ์๋ก ๋๋๊ณ ๊ฐ์ฒด๋ค์ ์ํธ์์ฉ์ผ๋ก ์์ ํ๋ ๋ฐฉ์
ํน์ง | ์ค๋ช |
์บก์ํ (Encapsulation) |
- ์๋ก ๊ด๋ จ์ฑ์ด ๋ง์ ๋ฐ์ดํฐ์ ์ด๋ฅผ ์ฐธ์กฐํ๋ ํจ์๋ค์ ํ๋๋ก ๋ฌถ์ด ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด ์งํฅ ํน์ฑ - ์ ๋ณด ์๋ : ์บก์ํ์์ ํ๋จ๊ณ ๋ ๋์๊ฐ Class ๋ด๋ถ ์ ๋ณด๋ฅผ ์๋ํ๊ณ ์ธ๋ถ๋ก๋ถํฐ์ ์ ๊ทผ์ ์ฐจ๋จํ์ฌ ๋ฉค๋ฒ ๋ณ์ ๋ด์ฉ์ ๋ณดํธํ๋ ๋ณด์์ ์ธ ๊ธฐ๋ฅ(public, protected, private) |
์ถ์ํ (Abstraction) |
- ์ค์ ์ธ๊ณ์ ํ์ํ ํน์ฑ์ผ๋ก ๊ฐ๊ฒฐํ๊ณ ๋ช
ํํ ๋ชจ๋ธ๋ก ๊ตฌํํ์ฌ ์ ์ง ๋ณด์์ ์ฉ์ด์ฑ์ ๋์ด๋ ํน์ฑ (๊ณผ์ / ๋ฐ์ดํฐ / ์ ์ด ์ถ์ํ) |
์์์ฑ (Inheritance) |
- ์ฌ ์ฌ์ฉ์ฑ์ ์ฆ๋๋ฅผ ์ํ์ฌ ๊ณตํต์ ์ธ ์์ฑ๊ณผ ํ์๋ฅผ ์์ ํด๋์ค(๋ถ๋ชจ)์ ์ ์ํ๊ณ ํ์ ํด๋์ค(์์)๊ฐ ํด๋น ๋ด์ฉ์ ์์๋ฐ์ ๊ทธ๋๋ก ํ์ฉํ๊ฒ ํ ์ ์๋ ํน์ง |
๋คํ์ฑ (Polymorphism) |
- ํ๊ฐ์ง ํ์
์ ๋ํด ๋ค์ํ ํ์
์ ๋์
ํ๊ฑฐ๋ ์ฐธ์กฐํ๋ ๊ฒ - ์ฆ, ์ ์ฐ์ฑ์ ๋ถ์ฌํ ์ฑ์ง(Overriding, Overloading ๋ฉ์๋ ๋คํ์ฑ) |
* ์บก์ํ
- ํน์ง
- ๋ด๋๋ค -> ๋ณ๊ฒฝ๋๋ ๋ฒ์๋ฅผ ์ค์ผ ์ ์์, ๋ฌถ์ ๋จ์๋ก ๋ค๋ฅธ ๊ณณ์ ์ฌ์ฉ ๊ฐ๋ฅ(์ฌ์ฌ์ฉ ์ด์ง)
- ์จ๊ธด๋ค -> ๊ฒฐํฉ๋ ๋ฎ์ถค
- ๋ณดํธํ๋ค -> ๋ถ์์ฉ ์ ํ ๊ฐ์, ์์ ๋ณ๊ฒฝ ํต์
- ์ ๋ณด์๋
- private : ํด๋์ค ๋ด๋ถ(๋ฉ์๋)์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- public : ์ด๋์๋ ์ ๊ทผ ๊ฐ๋ฅ(์ ๊ทผ์ ํX)
- default : ๋์ผ ํจํค์ง ๋ด์์์ ์ ๊ทผ ํ์ฉ (์ ๊ทผ์ ์ด์ ์ ์ธํ์ง ์๋ ๊ฒฝ์ฐ, ์๋ ์ค์ )
- protect : private + ์์๊ด๊ณ์ ์์ผ๋ฉด ์ ๊ทผ์ ํ์ฉ
* ์๋ชป๋ ์ธ์ ์ ์ํ ๋ฐ์ดํฐ ์ ๋ณด ๋ ธ์ถ
1. ์์ธ
- ๋ค์ค ์ค๋ ๋ ํ๊ฒฝ์์๋ ์ฑ๊ธํค ๊ฐ์ฒด ํ๋์ ๊ฒฝ์์กฐ๊ฑด(Race Condition) ๋ฐ์ ๊ฐ๋ฅ
- Java์ ์๋ธ๋ฆฟ(Servlet) ๋ฑ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฉค๋ฒ๋ณ์๊ฐ ํฌํจ๋๋ฉฐ, ์๋ก ๋ค๋ฅธ ์ธ์ ์์ ๋ฐ์ดํฐ๊ฐ ๊ณต์ ๋๋ ๊ฒฝ์ฐ ๋ฐ์
2. ์ํฅ
- ์๋ธ๋ฆฟ, jsp, Controller ๋ฑ ์ฑ๊ธํค์ผ๋ก ์กด์ฌํ๋ ๊ฐ์ฒด๋ค์ ๋ฉค๋ฒ ๋ณ์๊ฐ ์ฌ๋ฌ ์ค๋ ๋์ ์ํด ๊ณต์ ๋๋ฉด์ ๋ค๋ฅธ ์ค๋ ๋์๊ฒ ์ ๋ณด๋ฅผ ๋ ธ์ถ
3. ๋์
- ์ฑ๊ธํค ํจํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋ณ์ ๋ฒ์(Scope)์ ์ฃผ์ํ์ฌ ์ฌ์ฉ
- Java์์ HttpServlet ํด๋์ค์ ํ์ํด๋์ค๋ jsp, Controller์์ ๋ฉค๋ฒ ํ๋ ์ ์ธ์ ๊ธ์งํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ง์ญ ๋ณ์ ์ ์ธํ์ฌ ์ฌ์ฉ
* ์ ๊ฑฐ๋์ง ์๊ณ ๋จ์ ๋๋ฒ๊ทธ ์ฝ๋
1. ์์ธ
- ๋๋ฒ๊น ์ ๋ชฉ์ ์ผ๋ก ์ฝ์ ๋ ์ฝ๋๊ฐ ์ ๊ฑฐ๋์ง ์๊ณ ๋จ์์๋ ๊ฒฝ์ฐ ๋ฐ์
2. ์ํฅ
- ๋๋ฒ๊ทธ ์ฝ๋๋ ์ค์ ๋ฑ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๋ด๊ฑฐ๋ ์์คํ ์ ์ ์ดํ๊ฒ ํ์ฉํ๋ ๋ถ๋ถ์ ๋ด๊ณ ์์ ์ ์์
- ๊ณต๊ฒฉ์๊ฐ ์๋ณ ๊ณผ์ ์ ์ฐํํ๊ฑฐ๋, ์๋ํ์ง ์์ ์ ๋ณด์ ์ ์ด ์ ๋ณด๊ฐ ๋ ธ์ถ๋ ์ ์์
3. ๋์
- ์ํํธ์จ์ด ๋ฐฐํฌ ์ , ๋ฐ๋์ ๋๋ฒ๊ทธ ์ฝ๋๋ฅผ ํ์ธ ๋ฐ ์ญ์
- Java ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ, ์น ์์ฉํ๋ก๊ทธ๋จ์ ์ ์ํ ๋ ๋๋ฒ๊ทธ ์ฉ๋์ ์ฝ๋๋ฅผ main()์ ๊ฐ๋ฐํ ํ, ๋๋ฒ๊น ์ด ๋๋๋ฉด main() ๋ฉ์๋ ์ญ์
* Public ๋ฉ์๋๋ก๋ถํฐ ๋ฐํ๋ Private ๋ฐฐ์ด
1. ์์ธ
- private์ผ๋ก ์ ์ธ๋ ๋ฐฐ์ด์ public์ผ๋ก ์ ์ธ๋ ๋ฉ์๋๋ฅผ ํตํด ๋ฐํํ๋ ๊ฒฝ์ฐ ๋ฐ์
2. ์ํฅ
- ๋ฐฐ์ด ์ฃผ์๊ฐ์ด ์ธ๋ถ์ ๊ณต๊ฐ๋์ด ๊ถํ์ด ์๋ ์ฌ์ฉ์๊ฐ ์บก์ํ๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ ์ผ๋ก ์์ ๊ฐ๋ฅ
3. ๋์
- private๋ก ์ ์ธ๋ ๋ฐฐ์ด์ public ๋ฉ์๋๋ฅผ ํตํด์ ๋ฐํํ์ง ์๋๋ก ์กฐ์น
- ํ์ํ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ ๋ณต์ ๋ณธ์ ๋ฐํํ๊ฑฐ๋, ์์ ์ ์ ์ดํ๋ ๋ณ๋์ public ๋ฉ์๋๋ฅผ ์ ์ธํ์ฌ ์ฌ์ฉ
- ๋ฐฐ์ด์ ์์๊ฐ String ํ์ ๋ฑ๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ์ด ๋์ง ์๋ ๊ฒฝ์ฐ์๋ Private๋ฐฐ์ด์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค๊ณ ์ด๋ฅผ ๋ฐํํ๋๋ก ์์ฑ
* Private ๋ฐฐ์ด์ Public ๋ฐ์ดํฐ ํ ๋น
1. ์์ธ
- public์ผ๋ก ์ ์ธ๋ ๋ฐ์ดํฐ ๋๋ ๋ฉ์๋์ ์ธ์๋ฅผ private ๋ฐฐ์ด์ ์ ์ฅํ ๊ฒฝ์ฐ ๋ฐ์
2. ์ํฅ
- private ๋ฐฐ์ด์ ์ธ๋ถ์์ ์ง์ ์ ๊ทผํ์ฌ ๋ฐฐ์ด ์์ ๊ณผ ๊ฐ์ฒด ์์ฑ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
3. ๋์
- public์ผ๋ก ์ ์ธ๋ ๋ฉ์๋์ ์ธ์๋ฅผ private ์ ์ธ๋ ๋ฐฐ์ด์ ์ ์ฅํ์ง ์๋๋ก ์กฐ์น
- ์ ๋ ฅ๋ public ๋ฐฐ์ด์ reference๊ฐ ์๋, ๋ฐฐ์ด์ "๊ฐ"์ private ๋ฐฐ์ด์ ํ ๋นํ์ฌ private ๋ฉค๋ฒ๋ก์์ ์ ๊ทผ๊ถํ์ ์ ์ง
- ๋ฐฐ์ด ๊ฐ์ฒด์ ์์๊ฐ String ํ์ ๋ฑ๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋ ๊ฒฝ์ฐ์๋ ์ธ์๋ก ๋ค์ด์จ ๋ฐฐ์ด์ ๋ณต์ฌ๋ณธ์ ์์ฑํ์ฌ ํ ๋น
'software engineering > ์ํํธ์จ์ด๊ฐ๋ฐ๋ณด์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Secure] API ์ค์ฉ ๋ณด์์ฝ์ (0) | 2023.11.07 |
---|---|
[Secure] ์ฝ๋ ์ค๋ฅ ๋ณด์ ์ฝ์ (0) | 2023.10.30 |
[Secure] ์๋ฌ ์ฒ๋ฆฌ ๋ณด์ ์ฝ์ (0) | 2023.10.30 |
[Secure] ์๊ฐ ๋ฐ ์ํ ๋ณด์ ์ฝ์ (0) | 2023.10.30 |
[Secure] ๋ณด์ ๊ธฐ๋ฅ ๋ณด์ ์ฝ์ (0) | 2023.10.30 |