๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ์ด๋ ?
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (Object-Oriented Programming, OOP)์ ํ๋ก๊ทธ๋๋ฐ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํ ์์ผ ์ํ์ ํ์๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ก ๋ง๋ค๊ณ , ๊ฐ์ฒด๋ค๊ฐ์ ์ ๊ธฐ์ ์ธ ์ํธ์์ฉ์ ํตํด ๋ก์ง์ ๊ตฌ์ฑํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ.
(์ฐธ๊ณ ๋ก, ์ ์ฐจ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ ์์ฐจ์ ์ธ ์ฒ๋ฆฌ๊ฐ ์ค์์๋๋ฉฐ ํ๋ก๊ทธ๋จ ์ ์ฒด๊ฐ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋๋๋ก ๋ง๋ ํ๋ก๊ทธ๋๋ฐ, ๋ฐ๋ณต๋๋ ๋์์ ํจ์ ๋ฐ ํ๋ก์์ ํํ๋ก ๋ชจ๋ํํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์)
๊ฑฐ๊ธฐ์ ๋, ๊ฐ์ฒด(๋๋ ํด๋์ค)๋?
ํด๋์ค : ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ถ์ํ๋ฅผ ๊ฑฐ์ณ ์ง๋จ์ ์ํ๋ ์์ฑ(attribute)๊ณผ ํ์๋ฅผ ๋ณ์์ ๋ฉ์๋๋ก ์ ์ํ ๊ฒ
๊ฐ์ฒด(์ธ์คํด์ค) : ํด๋์ค์์ ์ ์ํ ๊ฒ์ ํ ๋๋ก ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋ ๊ฒ์ผ๋ก ์ค์ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง (4๊ฐ์ง)
1. ์ถ์ํ (Abstraction)
: ๊ฐ์ฒด๋ค๋ผ๋ฆฌ ๊ณตํต์ ์ธ ํน์ง(๊ธฐ๋ฅ, ์์ฑ)์ ์ถ์ถํ์ฌ ์ ์. ์ฆ, ํด๋์ค๋ฅผ ์ ์ํ๋ ๊ฒ.
ex) ๊ฐ์ฒด1(์ผ์ฑํฐ), ๊ฐ์ฒด2(์์ดํฐ), ๊ฐ์ฒด3(LGํฐ)... => ํด๋์ค(ํด๋ํฐ)
์ถํ ๋ค๋ฅธ ๋ธ๋๋๊ฐ ์ถ๊ฐ๋ ์ ์๋ค. ์ด ๋, ์ถ์ํ๋ก 'ํด๋ํฐ'์ ๊ตฌํํด๋์ผ๋ฉด ๋ค๋ฅธ ๊ณณ์ ์ฝ๋๋ ์์ ํ ํ์ ์์ด ์ถ๊ฐ๋ก ๋ง๋ค ๋ถ๋ถ๋ง ์๋ก ์์ฑํด์ฃผ๋ฉด ๋๋ค.
2. ์์ (Ingeritance)
: ์ด๋ฏธ ์ ์๋ ์์ ํด๋์ค(๋ถ๋ชจํด๋์ค)์ ๋ชจ๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ํ์ ํด๋์ค(์์ํด๋์ค)๊ฐ ๋ฌผ๋ ค๋ฐ์.
๊ธฐ์กด ์ฝ๋ ์ฌํ์ฉ, ์ฝ๋ ์ค๋ณต ์ ๊ฑฐ. ์์ฐ์ฑ ๋์.
3. ๋คํ์ฑ (Polymorphism)
: ํ๋์ ๋ณ์ ๋๋ ํจ์๊ฐ ์ํฉ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์. ๊ฐ์ ์ฐ๊ฒฐ๋ ๊ฐ์ฒด์ ์์กด.
ex) ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ, ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ
4. ์บก์ํ (Encapsultation)
: ๊ด๋ จ์๋ ๋ฐ์ดํฐ์ ๋ฉ์๋๋ฅผ ํ๋์ ๋จ์๋ก ๋ฌถ์ด, ์ธ๋ถ์์ ์ฝ๊ฒ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํจ. ๋ฐ์ดํฐ ์๋/๋ณดํธ.
ex) ์ ๊ทผ ์ ํ์ private
๋ํ์ ์ธ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
JAVA, Python, C++, C# ..
์ฅ์ ๊ณผ ๋จ์
์ฅ์ : ๋ํ ํ๋ก์ ํธ์ ์ ํฉ. ์ ์ง๋ณด์์ ์ฉ์ด. ์ฝ๋ ์ฌ์ฌ์ฉ์ ์ฉ์ด.
๋จ์ : ์๋๊ฐ ์๋์ ์ผ๋ก ๋๋ฆผ. ๊ฐ์ฒด ์๊ฐ ๋ง์์ง์ ๋ฐ๋ผ ์ฉ๋์ด ์ปค์ง. ์ฝ๋๋ฅผ ์ค๊ณํ๊ณ ์์ฑํ๋๋ฐ์ ๋ง์ ์๊ฐ ์์.
getter, setter๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
getter, setter๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ์๋๋ฅผ ํตํด์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์, ๋ฉ์๋ ์์์ ๋งค๊ฐ๋ณ์ ๊ฐ์ด ์ด๋ค ์ฌ๋ฐ๋ฅด์ง ์์ ์ ๋ ฅ์ ๋ํด ์ฌ์ ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ์ ํํ๊ฑฐ๋ ์กฐ์ ํ ์ ์๋ค.
์ ํ๋ธ ๋ณด๋ค๊ฐ ์ดํดํ๊ธฐ ์ฌ์ด ๊ฐ์ฒด์งํฅ ๊ฐ๋ ์ฐธ๊ณ !!



์ข์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋? (๋คํ์ฑ.. SOLID ์์น..)
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ ์ฉ์ดํ๊ฒ ๋ง๋ ๋ค! * ์๋ฐ ์ธ์ด์ ๋คํ์ฑ(Polymorphism)- ์ญํ ๊ณผ ๊ตฌํ์ผ๋ก ๊ตฌ๋ถํด๋ณด์ex) ์ด์ ์ - ์๋์ฐจ์ด์ ์๋ ์๋์ฐจ์ ์ข ๋ฅ๊ฐ ๋ฐ๊ปด๋ ์ด์ ์
rabo93.tistory.com
'๋ฐฑ์๋(Back-End) ๊ฐ๋ฐ > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA๋? ์๋ฐ์ ๊ตฌ๋ ์๋ฆฌ (JVM์ ํน์ง) (1) | 2025.01.19 |
---|---|
์ฟ ํค(Cookie) vs ์ธ์ (Session) (0) | 2025.01.19 |
์๋ฐ(JAVA) ์์ฝ ์ ๋ฆฌ (0) | 2025.01.10 |
form ํ๊ทธ ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ผ๋ฏธํฐ ํ์์ผ๋ก ํ๊บผ๋ฒ์ ๋ฆฌํด๋ฐ๊ธฐ($("form").serialize() ํจ์) (0) | 2025.01.08 |
์ธ์ (Session) vs ์ฟ ํค(Cookie) (0) | 2024.11.18 |