์ถ์ฒ
ChatGPT์๊ฒ ์ง๋ฌธํจ.
๋ด์ฉ
ํ์ค ์ธ๊ณ | ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ | |
๊ฐ์ฒด Object ๊ฐ๋ | ํ์ค ์ธ๊ณ์์๋ ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด๋ค. ํ์ค ์ธ๊ณ์ ๋ชจ๋ ๊ฒ๋ค์ ์ํ(ํน์ฑ, ์์ฑ)๊ณผ ํ๋(๋ฉ์๋)๋ฅผ ๊ฐ๋๋ค ex) ์๋์ฐจ, ์ฌ๋, ๋๋ฌผ ๋ฑ๋ฑ |
๊ฐ์ฒด๋ผ๋ ๊ฐ๋
์ผ๋ก ํ์ค ์ธ๊ณ์ ์ฌ๋ฌผ์ ํํํ๋ค. ๊ฐ์ฒด๋ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ํฌํจํ๋ค. ํ์ค ์ธ๊ณ์ ์ฌ๋ฌผ๋ค์ด ์ํ(ํน์ฑ)์ ํ๋์ ๊ฐ๋ ๊ฒ๊ณผ ์ ์ฌํ๋ค. |
์บก์ํ Encapsulation |
๊ฐ์ฒด๋ค์ด ์์ ๋ง์ ๋ด๋ถ ์ํ๋ฅผ ๊ฐ์ง๊ณ ์ธ๋ถ์ ์ํธ์์ฉํ ๋ ํ์ํ ์ ๋ณด๋ง ์ ๊ณตํ๋ค. ex) ์๋์ฐจ์ ์์ง ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ ํ์์์ด ์ด์ ์๋ ํธ๋ค๊ณผ ํ๋ฌ๋ง์ผ๋ก ์ด์ ์ ํ ์ ์๋ค. |
์บก์ํ๋ฅผ ํตํด ๊ฐ์ฒด ๋ด๋ถ๋ฅผ ์จ๊ธฐ๊ณ , ๊ณต๊ฐ๋ ๋ฉ์๋๋ฅผ ํตํด์๋ง ์ ๊ทผํ ์ ์๊ฒ ํ๋ค. ์ด๋ ๊ฒ ๊ฐ์ฒด์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ณ ๋ณต์ก์ฑ์ ์ค์ด๋ ๋ฐ ๋์์ ์ค๋ค. |
์์ Inheritance |
ํน์ ๊ฐ์ฒด๋ค์ด ๋ค๋ฅธ ๊ฐ์ฒด๋ค๋ก๋ถํฐ ์ํ์ ํ๋์ ์์๋ฐ์ ๊ณต์ ํ๋ค. ex) ์์ ๊ฑฐ, ์๋์ฐจ, ๋ฒ์ค ๋ฑ์ ๋ชจ๋ 'ํ ๊ฒ'์ด๋ผ๋ ๊ณตํต์ ์ธ ํน์ฑ(์ํ)์ ํ๋์ ๊ณต์ ํ๋ค. |
์์์ผ๋ก ํด๋์ค ๊ฐ ๊ด๊ณ๋ฅผ ํํํ๊ณ , ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ธ๋ค. ์์์ผ๋ก ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๋ฌผ๋ ค๋ฐ์ ์ ์๋ค. |
๋คํ์ฑ Polymorphism |
๊ฐ์ ๋์์ด๋ผ๋ ๊ฐ์ฒด์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ํ๋ ์ ์๋ค. ex) ๊ฐ์ ๊ณ ์์ด๋ ๋ชจ๋ '๋๋ฌผ'์ ์ํ์ง๋ง, ๊ฐ๊ฐ ๋ค๋ฅธ ์๋ฆฌ๋ฅผ ๋ธ๋ค. |
๋คํ์ฑ์ ํตํด ๊ฐ์ฒด๊ฐ ๋์ผํ ์ธํฐํ์ด์ค ๋๋ ์์๋ ํด๋์ค์ ์ํด ์ ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ์ง๋ง, ์ค์ ๋ก ์คํ๋๋ ๋ฐฉ๋ฒ์ ๊ฐ์ฒด์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๊ตฌํ๋ ์ ์๋ค. |
์ถ์ํ Abstraction |
๋ณต์กํ ์์คํ
์ ์ดํดํ๊ธฐ ์ํด ์ธ๋ถ ์ฌํญ์ ์จ๊ธฐ๊ณ ์ค์ํ ๋ถ๋ถ์๋ง ์ง์คํ๋ค. ex) ์ปดํจํฐ ์ฌ์ฉ ์ ๋ ํ๋ก ์๋ ๋ฐฉ์์ ์ ํ์๊ฐ ์๋ค. |
๋ณต์กํ ์์คํ ์ ๋จ์ํํด์ ํ์ํ ๋ถ๋ถ๋ง ๋ ธ์ถํ๋ค. |
ChatGPT์๊ฒ ํด๋น ๊ธ์ ์ถ์ฒ๋ฅผ ๋ฌผ์๋ค.
OOP์ ํ์ค ์ธ๊ณ ํํ์ ์ถ์ฒ
์์ ๊ฐ๋ ๋ค์ ๋ค์ํ ๋ฌธํ๊ณผ ์ฐ๊ตฌ์์ OOP๊ฐ ํ์ค ์ธ๊ณ๋ฅผ ํํํ๋ ๋ฐฉ์์ผ๋ก ๊ธฐ์ ๋์ด ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ๊ถ์ ์๋ ์ถ์ฒ์ ๋๋ค:
- "Object-Oriented Analysis and Design with Applications" by Grady Booch
- Grady Booch๋ ๊ฐ์ฒด์งํฅ ๋ถ์๊ณผ ์ค๊ณ์ ์ ๊ตฌ์๋ก์, ๊ทธ์ ์ ์์์๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ํ์ค ์ธ๊ณ์ ๋ณต์ก์ฑ์ ๋ชจ๋ธ๋งํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
- "Object-Oriented Software Construction" by Bertrand Meyer
- ์ด ์ฑ ์ OOP์ ํต์ฌ ์๋ฆฌ๋ฅผ ์๊ฐํ๋ฉฐ, ํนํ ์บก์ํ์ ๋ชจ๋ํ์ ์ค์์ฑ์ ๊ฐ์กฐํฉ๋๋ค.
- "Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
- ์ด ์ฑ ์ ๊ฐ์ฒด์งํฅ ์ค๊ณ์ ์ฃผ์ ํจํด์ ์ค๋ช ํ๋ฉฐ, ํ์ค ์ธ๊ณ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
- "Object-Oriented Modeling and Design" by James Rumbaugh
- James Rumbaugh๋ ๊ฐ์ฒด์งํฅ ๋ชจ๋ธ๋ง์ ๊ฐ๋ ์ ์๊ฐํ๋ฉฐ, OOP๊ฐ ์ด๋ป๊ฒ ํ์ค ์ธ๊ณ์ ์์คํ ์ ํํํ ์ ์๋์ง๋ฅผ ์ค๋ช ํฉ๋๋ค.
- "Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development" by Craig Larman
- ์ด ์ฑ ์ UML์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์งํฅ ๋ถ์๊ณผ ์ค๊ณ๋ฅผ ์ค๋ช ํ๋ฉฐ, OOP์ ๋ค์ํ ๊ฐ๋ ์ ํตํด ํ์ค ์ธ๊ณ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค.
- "Object-Oriented Software Engineering: A Use Case Driven Approach" by Ivar Jacobson
- Ivar Jacobson์ ๊ฐ์ฒด์งํฅ ์ํํธ์จ์ด ๊ณตํ์ ๋ฐฉ๋ฒ๋ก ์ ์ค๋ช ํ๋ฉฐ, OOP๊ฐ ์ด๋ป๊ฒ ํ์ค ์ธ๊ณ์ ๋ณต์ก์ฑ์ ๋ค๋ฃจ๋์ง๋ฅผ ์ค๋ช ํฉ๋๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[OOP][Java] ํด๋์ค ๋ ๋ฒจ vs ๊ฐ์ฒด ๋ ๋ฒจ (0) | 2024.07.24 |
---|---|
[Java] ์๋ฐ ํด๋์ค์์ main() ๋ฉ์๋๊ฐ static์ผ๋ก ์ ์ธ๋๋ ์ด์ /์ฅ์ (1) | 2024.07.24 |
[๊ธฐ์ ๋ธ๋ก๊ทธ ์ฝ๊ธฐ] robust + MVI + Jetpack Compose (0) | 2024.06.27 |
[Sample] PictureInPictureKotlin ์ฝ๋ ์ดํผ๊ธฐ - 1 (0) | 2024.06.26 |
[API ๋ฌธ์ํ] API ๋ฌธ์ ๊ธฐ์ ๋ธ๋ก๊ทธ ๊ธ (0) | 2024.04.22 |