New Score :0
High Score :0
Run Best
NICE BUSINESS TYPE INDICATOR
3. ๊ธ์ ์ ์น๊ตฌ์๊ฒ ๋น๋ ธ๋๋ฐ ์ค๋์ด ๋์ ์ฃผ๊ธฐ๋ก ํ๋ .. ๊ทธ๋ฐ๋ฐ ์นด๋๊ฐ์ ๋ด์ผํ๋ ๋ ๋ ์ค๋์ธ๋ฐ... ์ด๊ฑธ ์ด์ฉ๋...
4. ์ฐ๋ฆฌ ํ์ฌ๋ ์ค์ํ ์์ฌ ๊ฒฐ์ ์ ํ ๋?
5. ์ด์ฌํ ์ผํ ๋๋ฅผ ์ํ ์ ๋ฌผ์ ์ฃผ๊ณ ์ถ๋ค. ์ด๋ค๊ฒ ์ข์๊น?
6. ์ํ์์ ํฌ์์ํ์ ์ถ์ฒ๋ฐ์๋ค. ์ด๋ค๊ฑธ ๊ฐ์ ํ์ง?
7. ํ์ฌ์์์ ๋๋?
8. ๊ฟ์์ ๊นจ์ด๋๋ 20๋ ์ ์ผ๋ก ๋์๊ฐ๋ค. ๋น์ ์ด ์ ์ผ ๋จผ์ ํ๋์ผ์?
9. ๋ด๊ฐ ์ธ์ฌ ๋ด๋น์๋ผ๋ฉด ์ ๊ท ์ ์ฌ์ ์ฑ์ฉ ์ ์ ์ผ ์ค์ํ๊ฒ ๋ณด๋๊ฒ์?
10. ํ์ฌ์ ์ ๋ง ์ซ์ดํ๋ ๋๋ฃ๊ฐ ์๋ค๋ฉด?
11. ๊ฐ๋ํ ์ง์ ๊ฐ์ฅ์ด ๋์๋ค.. ์๋ ์ ์์ผ ๋ ์ ๋ฌผ์?
12. ํ์ ํ์ฌ ์ถ๊ทผ ์คํ์ผ์?
13.ํ์ฌ ์ฒด์ก๋ํ ํ๋ ๋ ์ด๋ค. ์ค๋ ๋ญํ์ง?
14. ๋์ ์ ๋ฌด ์คํ์ผ์?
์ฑํฐ
- ๊ฐ์ฒด์งํฅ์ ํ์๊ณผ ์ญ์ฌ (The Birth and History of Object-Oriented Programming)
- ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ํน์ง (Characteristics of Object-Oriented Languages)
- ๊ฐ์ฒด, ํด๋์ค, ์ธ์คํด์ค (Objects, Classes, Instances)
- ์บก์ํ์ ์ ๋ณด ์๋ (Encapsulation and Information Hiding)
- ์์ (Inheritance)
- ๋คํ์ฑ (Polymorphism)
- SOLID ์์น (SOLID Principles)
- ๊ฐ์ฒด ์งํฅ ์ค๊ณ (Object-Oriented Design)
- ๋์์ธ ํจํด (Design Patterns)
- ํ ์คํธ์ ๋๋ฒ๊น (Testing and Debugging)
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด (Object-Oriented Programming Languages)
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (Functional Programming and Object-Oriented Programming)
- ๊ฐ์ฒด ์งํฅ์ ์ฅ๋จ์ (Advantages and Disadvantages of Object-Oriented Programming)
- ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์๊ฐํ๊ธฐ (Thinking Object-Oriented)
- ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ๋ฌธ์ ํด๊ฒฐํ๊ธฐ (Solving Problems Object-Oriented)
์ฑ ์๊ฐ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ์ฌ ํ๋ก๊ทธ๋๋ฐ ๋ถ์ผ์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํจ๋ฌ๋ค์ ์ค ํ๋์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ ํ๋ก๊ทธ๋๋จธ๋ค์ด ๊ฐ์ฒด์งํฅ์ ๋ํด ์๋ชป ์ดํดํ๊ณ ์๊ฑฐ๋, ์ด๋ฅผ ์ฌ์ฉํ๋ฉด์๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ์ง ๋ชปํ๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด ์ฑ ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์คํด์ ์ง์ค์ ๋ช ํํ ํ๊ธฐ ์ํด ์ฐ์ฌ์ก์ต๋๋ค.
์ฑ ์์๋ ๊ฐ์ฒด์งํฅ์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ ์์ํ์ฌ ์บก์ํ, ์์, ๋คํ์ฑ ๋ฑ ๊ฐ์ฒด์งํฅ์ ์ฃผ์ ํน์ง๋ค์ ์์ธํ ๋ค๋ฃจ๊ณ ์์ต๋๋ค. ๋ํ SOLID ์์น, ๊ฐ์ฒด์งํฅ ์ค๊ณ, ๋์์ธ ํจํด ๋ฑ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ค์ํ ๊ฐ๋ ๋ค์ ์์ธํ๊ฒ ์ค๋ช ํ๊ณ ์์ต๋๋ค.
์ฑ ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ๋จ์ ์ ๋ถ์ํ๊ณ , ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์๊ฐํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค. ๋ํ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์ ๋ฅผ ํตํด ์ดํด๋ณด๋ฉด์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ณด๋ค ์ค์ฉ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ๋์์ค๋๋ค.
Chapter 1: ๊ฐ์ฒด์งํฅ์ ํ์๊ณผ ์ญ์ฌ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ 1960๋ ๋ ๋ง๋ถํฐ 1970๋ ๋ ์ด๋ฐ์ ๊ฐ๋ฐ๋ ์๋ฎฌ๋ผ(Simula) ์ธ์ด์์ ์์๋์์ต๋๋ค. ์๋ฎฌ๋ผ๋ ๊ฐ์ฒด์งํฅ ์ธ์ด์ ์์กฐ๋ก ์๋ ค์ ธ ์์ผ๋ฉฐ, ์ดํ์๋ ์ค๋ชฐํ ํฌ(Smalltalk), ์๋ฐ(Java), C++ ๋ฑ ๋ค์ํ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ค์ด ๊ฐ๋ฐ๋์์ต๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์กด์ ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋นํด ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋จผ์ ๊ฐ์ฒด์งํฅ์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ์ค๋๋ค. ๊ฐ์ฒด์งํฅ์์๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ์ธ์คํด์คํํ์ฌ ์ฌ์ฉํ๋ฏ๋ก, ๋น์ทํ ๊ธฐ๋ฅ์ ํ๋ ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋ํ ์ฝ๋์ ์ ์ง๋ณด์์ฑ๋ ๋์์ง๋๋ค. ๊ฐ์ฒด์งํฅ์์๋ ๊ฐ์ฒด๋ค์ด ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋ฏ๋ก, ํ๋์ ๊ฐ์ฒด๋ฅผ ์์ ํด๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ค์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ์ด๋ฌํ ํน์ง์ผ๋ก ์ธํด ๋ํ ํ๋ก์ ํธ์์ ๊ฐ์ฒด์งํฅ์ด ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
ํ์ง๋ง ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด์๋ ์ฌ๋ฌ ๊ฐ์ง ์คํด๋ ์กด์ฌํฉ๋๋ค. ๊ฐ์ฅ ๋ํ์ ์ธ ๊ฒ์ "๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ผ ํ๋ค"๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ฌ์ค์ด ์๋๋๋ค. ๊ฐ์ฒด์งํฅ์์๋ ํจ์๋ ๋ณ์๋ ๊ฐ์ฒด๋ก ๋ง๋ค ์ ์์ง๋ง, ๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด๋ก ๋ง๋๋ ๊ฒ์ด ๋ฐ๋์งํ์ง ์์ ์ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ์คํด๋ ์์์ ์ค์ฉ์ ๋๋ค. ์์์ ๋จ๋ฐํ๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ์ ํด์น๊ณ ๋ณต์ก๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด ์ฑ ์์๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์คํด๋ฅผ ํด์ํ๊ณ , ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ค๋๋ค.
Chapter 2: ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ํน์ง
๊ฐ์ฒด์งํฅ ์ธ์ด๋ ๊ฐ์ฒด๋ฅผ ์ค์ฌ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ๋ ์ธ์ด์ ๋๋ค. ์ด๋ฌํ ์ธ์ด๋ ๋ช ๊ฐ์ง ๊ณตํต์ ์ธ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋จผ์ ํด๋์ค(class)์ ์ธ์คํด์ค(instance)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค๊ณ๋ ์ญํ ์ ํ๋ฉฐ, ์ธ์คํด์ค๋ ํด๋์ค๋ฅผ ์ค์ฒดํํ ๊ฐ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค. ๊ฐ์ฒด์งํฅ ์ธ์ด์์๋ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.
๋ํ ๊ฐ์ฒด์งํฅ ์ธ์ด์์๋ ์บก์ํ(encapsulation)์ ์ ๋ณด ์๋(information hiding)์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์บก์ํ๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ํ๋์ ๋จ์๋ก ๋ฌถ์ด์ ์ธ๋ถ์์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ณดํธํ๋ ๊ฒ์ ๋๋ค. ์ ๋ณด ์๋์ ๊ฐ์ฒด์ ๋ด๋ถ ๋์ ๋ฐฉ์์ ์ธ๋ถ์์ ๋ณผ ์ ์๋๋ก ์จ๊ธฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ํ ๊ฐ์ฒด์งํฅ ์ธ์ด์์๋ ์์(inheritance)๊ณผ ๋คํ์ฑ(polymorphism)๋ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์์์ ๋ถ๋ชจ ํด๋์ค์ ํน์ฑ์ ์์ ํด๋์ค๊ฐ ๋ฌผ๋ ค๋ฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋คํ์ฑ์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ํด๋์ค์์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ํน์ง๋ค์ด ๊ฐ์ฒด์งํฅ ์ธ์ด์ ์ฅ์ ์ค ํ๋๋ก ๊ผฝํ๋๋ค.
Chapter 3: ๊ฐ์ฒด, ํด๋์ค, ์ธ์คํด์ค
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๊ฐ์ฒด, ํด๋์ค, ์ธ์คํด์ค๊ฐ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ๊ฐ์ฒด๋ ํ์ค ์ธ๊ณ์ ๊ฐ์ฒด๋ฅผ ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ก ์ฎ๊ธด ๊ฒ์ด๋ฉฐ, ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ํ ์ญํ ์ ํฉ๋๋ค. ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ํด๋์ค๋ฅผ ๋จผ์ ์ ์ํ๊ณ , ์ด๋ฅผ ์ธ์คํด์คํํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
๊ฐ์ฒด๋ ์์ฑ(attribute)๊ณผ ๋ฉ์๋(method)๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ์์ฑ์ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ฉ์๋๋ ๊ฐ์ฒด์ ๋์์ ๋ํ๋ ๋๋ค. ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๋ฉ์๋์ ์ ๊ทผํ์ฌ ์กฐ์ํ ์ ์์ต๋๋ค.
ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค๊ณ๋ ์ญํ ์ ํฉ๋๋ค. ํด๋์ค๋ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ , ์ด๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ํด๋์ค๋ฅผ ๋จผ์ ์ ์ํด์ผ ํ๋ฉฐ, ์ด๋ฅผ ์ธ์คํด์คํํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
์ธ์คํด์ค๋ ํด๋์ค๋ฅผ ์ค์ฒดํํ ๊ฐ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค. ํด๋์ค๋ฅผ ์ธ์คํด์คํํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ฉด, ์ด ๊ฐ์ฒด๋ ํด๋์ค์์ ์ ์ํ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ธ์คํด์ค๋ ํด๋์ค์์ ์ ์ํ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๊ณต์ ํ์ง๋ง, ๊ฐ๊ฐ์ ์ธ์คํด์ค๋ ๊ทธ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ์ด ์ค์ํฉ๋๋ค. ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ํธ์์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ์คํํฉ๋๋ค. ์ด๋ฌํ ์ํธ์์ฉ์ ๊ฐ์ฒด ๊ฐ์ ๋ฉ์์ง ์ ๋ฌ(message passing)์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ , ์ด๋ฅผ ์์ ํ ๊ฐ์ฒด๋ ์ด์ ๋ํ ์๋ต์ ๋ณด๋ด๋ ์์ผ๋ก ์ํธ์์ฉํฉ๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ์ํ ๋ณ๊ฒฝ์ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ด๋ฃจ์ด์ง๋๋ค. ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด, ํด๋น ๋ฉ์๋์์ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ์ ์ด์ฉ๋ฉ๋๋ค.
Chapter 4: ์บก์ํ์ ์ ๋ณด ์๋
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์บก์ํ์ ์ ๋ณด ์๋์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์บก์ํ๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ํ๋์ ๋จ์๋ก ๋ฌถ์ด์ ์ธ๋ถ์์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์บก์ํ๋ ๊ฐ์ฒด๋ฅผ ๋ณดํธํ๊ณ , ๊ฐ์ฒด์ ๋ด๋ถ ๋์ ๋ฐฉ์์ ์จ๊ธฐ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์บก์ํ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๋ฅผ ์กฐ์ํ๋ ์ฝ๋์์๋ ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ ํ์๊ฐ ์์ต๋๋ค. ์ฆ, ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ ํ์ ์์ด ๊ฐ์ฒด์ ๋ฉ์๋๋ง ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋์ ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌํ์ ๋ถ๋ฆฌ์์ผ์ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค.
์ ๋ณด ์๋์ ์บก์ํ์ ๋ฐ์ ํ ๊ด๋ จ์ด ์์ต๋๋ค. ์ ๋ณด ์๋์ ๊ฐ์ฒด์ ๋ด๋ถ ์ํ๋ฅผ ์ธ๋ถ์์ ๋ณผ ์ ์๋๋ก ์จ๊ธฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ ๋ณด ์๋์ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด์ ๋ด๋ถ ์ํ๋ฅผ ๋ณดํธํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ์ฒด์ ์์ ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์ ๋ณด ์๋์ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด์ ๋ด๋ถ ์ํ๋ฅผ ์กฐ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์ ํ๋ฉ๋๋ค. ์ธ๋ถ์์๋ ๊ฐ์ฒด์ ๋ฉ์๋๋ง ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด์ ์์ ์ฑ์ ๋ณด์ฅํ ์ ์์ผ๋ฉฐ, ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌํ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ์ธ๋ถ ์ฝ๋์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํ ์ ์์ต๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์บก์ํ์ ์ ๋ณด ์๋์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ๋ณดํธ์ ์์ ์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฌํ ๊ฐ๋ ์ ์ ์ดํดํ๊ณ ์ ์ ํ ์ฌ์ฉํ๋ฉด, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์์ ์ ์ด๊ณ ์ ์ง๋ณด์์ฑ์ด ๋์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
Chapter 5: ์์๊ณผ ๋คํ์ฑ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์์๊ณผ ๋คํ์ฑ์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์์์ ๋ถ๋ชจ ํด๋์ค์ ํน์ฑ์ ์์ ํด๋์ค๊ฐ ๋ฌผ๋ ค๋ฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ ๋ชจ๋ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์์๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ฑฐ๋, ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋คํ์ฑ์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ํด๋์ค์์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฆ, ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋๋ผ๋ ๋ค๋ฅธ ๋์์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์์๊ณผ ๋คํ์ฑ์ ์ฌ์ฉํ๋ฉด, ๊ธฐ์กด์ ํด๋์ค๋ฅผ ์์ ํ์ง ์๊ณ ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด๋ ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค. ๋ํ ์์๊ณผ ๋คํ์ฑ์ ์ ์ ํ ์ฌ์ฉํ๋ฉด, ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ์์๊ณผ ๋คํ์ฑ์ ์ฌ์ฉํ์ฌ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๋จ์ํํ๊ณ , ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๊ฒ์ด ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
Chapter 6: ์ถ์ํ์ ์ธํฐํ์ด์ค
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ถ์ํ์ ์ธํฐํ์ด์ค๊ฐ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์ถ์ํ๋ ๊ฐ์ฒด์์ ๊ณตํต์ ์ธ ํน์ฑ์ ์ถ์ถํ์ฌ ์ผ๋ฐ์ ์ธ ๊ฐ๋ ์ผ๋ก ํํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ถ์ํ๋ฅผ ํตํด ๊ฐ์ฒด์ ๊ณตํต์ ์ ํ์ ํ์ฌ ์ผ๋ฐ์ ์ธ ๊ฐ๋ ์ผ๋ก ํํํ ์ ์์ต๋๋ค.
์ธํฐํ์ด์ค๋ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ํธ์์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ธํฐํ์ด์ค๋ ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ์ ๋จ์ํํ๊ณ , ์ ์ฐ์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค. ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ํธ์์ฉํ ๋ ํด๋น ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌํ์ ๋ํด ์ ํ์๊ฐ ์์ต๋๋ค. ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌํ์ ๊ฐ์ถค์ผ๋ก์จ ์ ์ง๋ณด์์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ถ์ํ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ ํ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ์ ๋จ์ํํ๊ณ , ์ ์ฐ์ฑ์ ๋์ด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์์ ์ ์ด๊ณ ์ ์ง๋ณด์์ฑ์ด ๋์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
Chapter 7: ์์ธ ์ฒ๋ฆฌ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์์ธ ์ฒ๋ฆฌ๊ฐ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์์ธ๋ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ์์์น ๋ชปํ ์ํฉ์ด ๋ฐ์ํ ๋ ๋ฐ์ํ๋ ์ค๋ฅ์ ๋๋ค. ์์ธ ์ฒ๋ฆฌ๋ ์ด๋ฌํ ์์ธ ์ํฉ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์์ธ ์ฒ๋ฆฌ๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ด ์์ธ ์ํฉ์ ๋์ฒํ ์ ์์ต๋๋ค. ์์ธ ์ฒ๋ฆฌ๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ ๊ฒ์ ๋ง์ ์ ์์ต๋๋ค. ์์ธ ์ฒ๋ฆฌ๋ try-catch ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ด๋ฃจ์ด์ง๋๋ค. try ๋ธ๋ก์์ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด, catch ๋ธ๋ก์์ ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์์ธ ์ฒ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ ์์ ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค. ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ ์ ํ ์ฌ์ฉํ๋ฉด, ์์์น ๋ชปํ ์ํฉ์ ๋์ฒํ ์ ์์ผ๋ฉฐ, ํ๋ก๊ทธ๋จ์ ์์ ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
Chapter 8: ๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ๋์์ ์คํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ๋์ผ ์ ์์ต๋๋ค.
๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์คํ๋๊ธฐ ๋๋ฌธ์, ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ค๋ ๋ ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๋ ๊ฒฝ์ ์ํ์ ๋ํ ์ฒ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฅผ ์ํด ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์ค๋ ๋ ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๋ ๊ฒฝ์ ์ํ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ๋์ผ ์ ์์ง๋ง, ๋๊ธฐํ ๋ฌธ์ ๋๋ฌธ์ ์ฝ๋์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํฉ๋๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ ํ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ๋์ด๋ฉด์๋ ์ฝ๋์ ๋ณต์ก์ฑ์ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
Chapter 9: ๋ฐ์ฝ๋ ์ดํฐ ํจํด
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ๊ฐ์ฒด์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๋์ ์ผ๋ก ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ์ฌ์ฉํ๋ฉด, ๊ฐ์ฒด๋ฅผ ์์ ํ์ง ์๊ณ ๋ ๊ธฐ์กด ๊ฐ์ฒด์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ์์์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๊ธฐ์กด ๊ฐ์ฒด์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด๋ ์ฝ๋์ ์ ์ฐ์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค. ๋ํ ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น ์ค์์ ๊ฐ๋ฐฉ-ํ์ ์์น(OCP)์ ์งํต๋๋ค. ์ฆ, ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ์ฌ์ฉํ๋ฉด, ๊ฐ์ฒด์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค. ๊ฐ์ฒด์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ ์ฉํ๋ฉด, ๊ฐ์ฒด์ ๊ธฐ๋ฅ์ด ๋งค์ฐ ๋ณต์กํด์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ์ฌ์ฉํ ๋๋, ๊ฐ์ฒด์ ๋ณต์ก์ฑ์ ์ต์ํํ๊ณ , ๊ฐ๊ฐ์ ๋ฐ์ฝ๋ ์ดํฐ๊ฐ ๋จ์ํ๊ฒ ๊ตฌํ๋ ์ ์๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.
Chapter 10: ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณต์ฅ(factory)์ ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ ์ฌ์ฉํ๋ฉด, ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ ์ ์ง๋ณด์์ฑ๊ณผ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค.
ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ ์ถ์ ํฉํ ๋ฆฌ ํจํด๊ณผ ํจ๊ป ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์ถ์ ํฉํ ๋ฆฌ ํจํด์ ๊ด๋ จ๋ ๊ฐ์ฒด๋ค์ ํจ๊ป ์์ฑํ๋ ํฉํ ๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ถ์ ํฉํ ๋ฆฌ ํจํด์ ์ฌ์ฉํ๋ฉด, ๊ด๋ จ๋ ๊ฐ์ฒด๋ค์ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด๊ณผ ์ถ์ ํฉํ ๋ฆฌ ํจํด์ ์ฌ์ฉํ๋ฉด, ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณต์ฅ์ ๋ง๋ค๊ณ , ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ ์ง๋ณด์์ฑ๊ณผ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ๋ํ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด๊ณผ ์ถ์ ํฉํ ๋ฆฌ ํจํด์ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น ์ค์์ ์์กด์ฑ ์ญ์ ์์น(DIP)์ ์งํต๋๋ค. ์ฆ, ์ถ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ ๊ฒ์ ๋๋ค.
Chapter 11: MVC ํจํด
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ MVC ํจํด์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. MVC ํจํด์ ๋ชจ๋ธ(Model), ๋ทฐ(View), ์ปจํธ๋กค๋ฌ(Controller)๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด ํจํด์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ํ๋ก๊ทธ๋จ์ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค.
๋ชจ๋ธ์ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํฉ๋๋ค. ๋ทฐ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ด๋นํฉ๋๋ค. ์ปจํธ๋กค๋ฌ๋ ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์ฐ๊ฒฐํ๊ณ , ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ฒ๋ฆฌํฉ๋๋ค. MVC ํจํด์ ๊ฐ๊ฐ์ ์ญํ ์ ๋ถ๋ฆฌํจ์ผ๋ก์จ, ๊ฐ๊ฐ์ ๋ถ๋ถ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ๋ํ, ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ๊ฒ ๊ตฌ๋ถํ๊ณ , ์ ์ง๋ณด์์ฑ๊ณผ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
MVC ํจํด์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ๋ทฐ๋ HTML, CSS, JavaScript ๋ฑ์ผ๋ก ๊ตฌํ๋์ด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ด๋นํฉ๋๋ค. ์ปจํธ๋กค๋ฌ๋ URL ๋งคํ๊ณผ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํฉ๋๋ค.
MVC ํจํด์ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น ์ค์์ ๋จ์ผ ์ฑ ์ ์์น(SRP)์ ์งํต๋๋ค. ๊ฐ๊ฐ์ ์ญํ ์ ๋ถ๋ฆฌํ์ฌ, ํด๋์ค์ ์ญํ ์ด ๋ช ํํ๊ฒ ๊ตฌ๋ถ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์ ์ง๋ณด์์ฑ๊ณผ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
Chapter 12: ์๋น์ค ๋ก์ผ์ดํฐ ํจํด
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์๋น์ค ๋ก์ผ์ดํฐ ํจํด์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์๋น์ค ๋ก์ผ์ดํฐ ํจํด์ ์๋น์ค๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ ์ ๋ด๋นํ๋ ํด๋์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์๋น์ค ๋ก์ผ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ฉด, ์๋น์ค์ ์์น๋ฅผ ์ค์ ์ง์ค์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์๋น์ค ๋ก์ผ์ดํฐ ํจํด์ ์์กด์ฑ ์ญ์ ์์น(DIP)์ ์งํค๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค. ๊ฐ์ฒด๊ฐ ์ง์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฐธ์กฐํ๋ฉด, ๊ฒฐํฉ๋๊ฐ ๋์์ ธ ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง๋๋ค. ์๋น์ค ๋ก์ผ์ดํฐ ํจํด์ ์ฌ์ฉํ๋ฉด, ๊ฐ์ฒด๊ฐ ์ง์ ์๋น์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฐธ์กฐํ์ง ์๊ณ , ์๋น์ค ๋ก์ผ์ดํฐ๋ฅผ ํตํด ์๋น์ค๋ฅผ ์ฐพ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋น์ค ๋ก์ผ์ดํฐ ํจํด์ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ ์๋ง์ ์๋น์ค๊ฐ ์กด์ฌํ๋ฉฐ, ์ด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ์ค์ ์ง์ค์ ์ผ๋ก ์๋น์ค๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค. ์๋น์ค ๋ก์ผ์ดํฐ ํจํด์ ์ฌ์ฉํ๋ฉด, ์๋น์ค์ ์์น๋ฅผ ์ค์ ์ง์ค์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์๋น์ค ๋ก์ผ์ดํฐ ํจํด์ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น ์ค์์ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น(ISP)์ ์งํต๋๋ค. ์๋น์ค ๋ก์ผ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ, ๊ฐ์ฒด์ ์๋น์ค ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ , ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
Chapter 13: ์ปค๋งจ๋ ํจํด
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ปค๋งจ๋ ํจํด์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์ปค๋งจ๋ ํจํด์ ์คํํ ๊ธฐ๋ฅ์ ์บก์ํํ์ฌ ๊ฐ์ฒด๋ก ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฅผ ํตํด ์คํํ ๊ธฐ๋ฅ์ ๊ฐ์ฒด๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ปค๋งจ๋ ํจํด์ ์คํํ ๊ธฐ๋ฅ์ ์ธํฐํ์ด์ค๋ก ์ ์ํ๊ณ , ์คํํ ๊ธฐ๋ฅ์ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ์ด ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ ๋ฌํ๋ฉด, ์ ๋ฌ๋ฐ์ ๊ฐ์ฒด๋ ์คํํ ๊ธฐ๋ฅ์ ๊ฐ์ฒด์ ์ ์ฅํ๊ณ , ํ์ํ ๋ ์คํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์คํํ ๊ธฐ๋ฅ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ปค๋งจ๋ ํจํด์ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น ์ค์์ ๊ฐ๋ฐฉ-ํ์ ์์น(OCP)์ ์งํต๋๋ค. ์คํํ ๊ธฐ๋ฅ์ ์บก์ํํ์ฌ ๊ฐ์ฒด๋ก ๋ง๋๋ ๊ฒ์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ ๋๋ค. ๋ํ, ์คํํ ๊ธฐ๋ฅ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์, ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์ปค๋งจ๋ ํจํด์ ํ์คํ ๋ฆฌ ๊ด๋ฆฌ, ์ทจ์ ๊ธฐ๋ฅ, ๋ค์ค ์คํ ๋ฑ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ์ ์ ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ๋์ฑ ์ ์ฐํ๊ฒ ๋์ฒํ ์ ์์ต๋๋ค.
Chapter 14: ์ต์ ๋ฒ ํจํด
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ต์ ๋ฒ ํจํด์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์ต์ ๋ฒ ํจํด์ ๊ฐ์ฒด์ ์ํ ๋ณํ๋ฅผ ๊ฐ์งํ๊ณ , ์ด์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ฒด๋ค์๊ฒ ํต์งํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด๋ค ๊ฐ์ ๋์จํ ๊ฒฐํฉ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
์ต์ ๋ฒ ํจํด์ ํ ๊ฐ์ฒด๊ฐ ๋ค์์ ๊ฐ์ฒด์๊ฒ ์์ ์ ์ํ๋ฅผ ์๋ฆฌ๊ณ ์ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋, ์ํ๋ฅผ ๊ฐ์ํ๋ ๊ฐ์ฒด๋ฅผ ์ต์ ๋ฒ(observer)๋ผ ํ๊ณ , ์ํ ๋ณํ๋ฅผ ๊ฐ์งํ๋ ๊ฐ์ฒด๋ฅผ ์๋ธ์ ํธ(subject)๋ผ๊ณ ํฉ๋๋ค. ์ต์ ๋ฒ ํจํด์ ์๋ธ์ ํธ์ ์ต์ ๋ฒ ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ๋๋ฌธ์, ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค.
์ต์ ๋ฒ ํจํด์ ์๋ฐ์์๋ ์๋ฐ ๋น์ฆ ์ปดํฌ๋ํธ ๋ชจ๋ธ์์๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฐ ๋น์ฆ ์ปดํฌ๋ํธ ๋ชจ๋ธ์์๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ ๊ฐ์ฒด๋ฅผ ์ด๋ฒคํธ ์์ค(event source)๋ผ ํ๊ณ , ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด๋ฅผ ์ด๋ฒคํธ ๋ฆฌ์ค๋(event listener)๋ผ๊ณ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด๋ค ๊ฐ์ ์ํธ์์ฉ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ต์ ๋ฒ ํจํด์ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น ์ค์์ ๊ฐ๋ฐฉ-ํ์ ์์น(OCP)์ ์งํต๋๋ค. ์ฆ, ์๋ธ์ ํธ์ ์ต์ ๋ฒ๋ ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ ์ง๋ณด์์ฑ๊ณผ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
Chapter 15: ์ ๋ต ํจํด
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ ๋ต ํจํด์ด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์ ๋ต ํจํด์ ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ์ฌ, ์คํ ์๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์ ์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์ ๋ต ํจํด์ ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ์ฌ, ์คํ ์๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์ ์ฐ์ฑ์ ๋์ด๊ณ , ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ์ ๋ต ํจํด์ ์ฌ์ฉํ๋ฉด, ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ์ฌ, ์ ์ฐํ ์ค๊ณ๋ฅผ ํ ์ ์์ต๋๋ค.
์ ๋ต ํจํด์ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น ์ค์์ ๊ฐ๋ฐฉ-ํ์ ์์น(OCP)์ ์งํต๋๋ค. ์ฆ, ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ์ฌ, ์๋ก์ด ์๊ณ ๋ฆฌ์ฆ์ ์ถ๊ฐํ๊ฑฐ๋, ๊ธฐ์กด ์๊ณ ๋ฆฌ์ฆ์ ์์ ํ ๋, ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ , ์๋ก์ด ์ฝ๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ ์ง๋ณด์์ฑ๊ณผ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์ ๋ต ํจํด์ ๋คํ์ฑ์ ์ด์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ๊ฐ์ฒด๋ ๋ชจ๋ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ฉฐ, ์คํ ์๊ฐ์ ์ ์ ํ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ฒด๋ฅผ ์ ํํ์ฌ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์คํ ์๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์, ํ๋ก๊ทธ๋จ์ ์ ์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์ ๋ต ํจํด์ ์๋ฐ์์๋ ์ปฌ๋ ์ ํ๋ ์์ํฌ์์๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ปฌ๋ ์ ํ๋ ์์ํฌ์์๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ๋, Comparator ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ต ํจํด์ ๊ตฌํํฉ๋๋ค.
์ข ํฉ์ ์ผ๋ก, ๊ฐ์ฒด์งํฅ์ ์คํด์ ์ง์ค ์ฑ ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ ๊ณผ ์์น์ ์ค๋ช ํ๊ณ , ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ฐ์ํ๋ ์คํด์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ง์ค์ ์ ์ํฉ๋๋ค. ์ด ์ฑ ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฒ์ ์ ํ๋ ์ด๋ณด์๋ถํฐ, ์ ๋ฌธ๊ฐ๊น์ง ๋ชจ๋ ์ดํดํ ์ ์๋ ์ฑ ์ผ๋ก, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์ดํด๋ฅผ ๋์ด๋ ๋ฐ์ ํฐ ๋์์ด ๋ฉ๋๋ค.
Chapter 16: ๊ฐ์ฒด์งํฅ์ ๊ธฐ๋ณธ ๊ฐ๋
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ค์ ์งํฉ์ผ๋ก ๋ณธ๋ค๋ ๊ฐ๋ ์ ๋๋ค. ์ด ๋, ๊ฐ์ฒด๋ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฉ์๋(method)๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ์ ํตํด ํ๋ก๊ทธ๋จ์ ๊ตฌํํฉ๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ฐ์ดํฐ์ ๋ฉ์๋๋ฅผ ํ๋์ ๋จ์๋ก ์บก์ํํ์ฌ, ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐ์ดํฐ ์ค์ฌ์ ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ๋ ๋ฌ๋ฆฌ, ๊ฐ์ฒด๋ฅผ ์ค์ฌ์ผ๋ก ํ๋ก๊ทธ๋จ์ ๊ตฌํํฉ๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์์, ์บก์ํ, ๋คํ์ฑ์ด๋ผ๋ ์ธ ๊ฐ์ง ๊ฐ๋ ์ด ์ค์ํฉ๋๋ค. ์์์ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์์ ํด๋์ค๊ฐ ๋ฌผ๋ ค๋ฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์บก์ํ๋ ๋ฐ์ดํฐ์ ๋ฉ์๋๋ฅผ ํ๋์ ๋จ์๋ก ๋ฌถ์ด, ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋คํ์ฑ์ ํ๋์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ์ ์๋๋ก ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ์ ํตํด ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์, ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์ต๋๋ค. ๋ํ, ๊ฐ์ฒด๋ฅผ ์ค์ฌ์ผ๋ก ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์, ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ธฐ ์ฝ๊ณ , ์ ์ฐํ ์ค๊ณ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ข ํฉ์ ์ผ๋ก, ๊ฐ์ฒด์งํฅ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋ฐ์ดํฐ์ ๋ฉ์๋๋ฅผ ํ๋์ ๋จ์๋ก ์บก์ํํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ์ ํตํด ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ ๊ฒ์ ๋๋ค. ๊ฐ์ฒด์งํฅ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๋ ๊ฒ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ดํดํ๋ ๋ฐ์ ํ์์ ์ ๋๋ค.
Chapter 17: ๊ฐ์ฒด์งํฅ์ ์คํด
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ ๊ทน์ ์ธ ์ค๊ณ์ ๊ณํ์ด ํ์ํฉ๋๋ค. ํ์ง๋ง ๋ง์ ์ฌ๋๋ค์ด ๊ฐ์ฒด์งํฅ์ ์คํดํ๊ณ ์์ต๋๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์๋ชป ์ฌ์ฉํ๋ฉด, ์ฝ๋์ ๋ณต์ก๋๊ฐ ๋์์ง๊ณ , ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ค์ํ ๊ฐ๋ ์ธ ์บก์ํ, ์์, ๋คํ์ฑ์ ์๋ชป ์ดํดํ๋ฉด, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์๋ชป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์บก์ํ๋ฅผ ์์ ํ๊ฒ ๊ตฌํํ์ง ์์ผ๋ฉด, ๊ฐ์ฒด์ ๋ฐ์ดํฐ๊ฐ ์ธ๋ถ์์ ์ง์ ์์ ๋ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ฐ์ฒด์งํฅ์ ๊ธฐ๋ณธ ์์น์ ์๋ฐฐํ๋ ๊ฒ์ ๋๋ค.
๋ํ, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์์์ ์ฌ์ฉํ์ฌ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ ๋๋ค. ํ์ง๋ง ์์์ ์๋ชป ์ฌ์ฉํ๋ฉด, ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง๊ณ , ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
๋ํ, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๋คํ์ฑ์ ์ฌ์ฉํ์ฌ ํ๋์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋คํ์ฑ์ ์๋ชป ์ฌ์ฉํ๋ฉด, ์ฝ๋๊ฐ ๋ณต์กํด์ง๊ณ , ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์๋ชป ์ฌ์ฉํ๋ฉด, ์ฝ๋์ ๋ณต์ก๋๊ฐ ๋์์ง๊ณ , ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง๋๋ค. ์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋จ์ด๋จ๋ฆฌ๊ณ , ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ๋์ ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ ๋๋, ์ค์ํ ๊ฐ๋ ์ธ ์บก์ํ, ์์, ๋คํ์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ , ์ ๊ทน์ ์ธ ์ค๊ณ์ ๊ณํ์ด ํ์ํฉ๋๋ค.
์ข ํฉ์ ์ผ๋ก, ๊ฐ์ฒด์งํฅ์ ์คํด๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์๋ชป ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ ๋์ ๋๋ค. ๊ฐ์ฒด์งํฅ์ ์คํด๋ฅผ ์ดํดํ๊ณ , ์ฌ๋ฐ๋ฅธ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ , ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค.
Chapter 18: ๊ฐ์ฒด์งํฅ์ ์ง์ค
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ ๊ทน์ ์ธ ์ค๊ณ์ ๊ณํ์ด ํ์ํฉ๋๋ค. ํ์ง๋ง ๋ง์ ์ฌ๋๋ค์ด ๊ฐ์ฒด์งํฅ์ ์คํดํ๊ณ ์์ต๋๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด, ์ฝ๋์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๊ณ , ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ค์ํ ๊ฐ๋ ์ธ ์บก์ํ, ์์, ๋คํ์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด, ์ฝ๋์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ ์ ์์ต๋๋ค. ์บก์ํ๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ฐ์ฒด์ ๋ฐ์ดํฐ์ ๋ฉ์๋๋ฅผ ํ๋์ ๋จ์๋ก ์บก์ํํ์ฌ, ์ธ๋ถ์์ ์ง์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ณ , ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๋ํ, ์์์ ์ฌ์ฉํ๋ฉด, ๊ณตํต๋ ์ฝ๋๋ฅผ ๋ถ๋ชจ ํด๋์ค์ ์์ฑํ๊ณ , ์์ ํด๋์ค์์ ์์๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ์ค๋ณต์ ์ค์ด๊ณ , ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๋ํ, ๋คํ์ฑ์ ์ฌ์ฉํ๋ฉด, ํ๋์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ์ ์ฐ์ฑ์ ๋์ด๊ณ , ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ , ์๋ก์ด ์ฝ๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด, ์ฝ๋์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ ์ ์์ต๋๋ค. ์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ , ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๋ฐ์ ํฐ ์ญํ ์ ํฉ๋๋ค. ๋ํ, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถ์ํค๋ ๋ฐ์๋ ํฐ ์ญํ ์ ํฉ๋๋ค.
์ข ํฉ์ ์ผ๋ก, ๊ฐ์ฒด์งํฅ์ ์ง์ค์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด, ์ฝ๋์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๊ณ , ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ฐ์ฒด์งํฅ์ ์ง์ค์ ์ดํดํ๊ณ , ์ ๊ทน์ ์ธ ์ค๊ณ์ ๊ณํ์ ํตํด ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถ์ํค๊ณ , ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ๋์์ด ๋ฉ๋๋ค.
Chapter 19: ์ ๋ต ํจํด
์ ๋ต ํจํด์ ๊ฐ์ฒด์งํฅ ๋์์ธ ํจํด ์ค ํ๋๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์ ์ํ๊ณ , ๊ฐ๊ฐ์ ์บก์ํํ์ฌ, ์๋ก ๊ต์ฒด ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ง๋๋ ํจํด์ ๋๋ค. ์ ๋ต ํจํด์ ์ฌ์ฉํ๋ฉด, ์คํ ์ค์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์์ต๋๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ ์ ์ฐ์ฑ์ ๋์ด๋ ๋ฐ์ ํฐ ๋์์ด ๋ฉ๋๋ค.
์ ๋ต ํจํด์ ์บก์ํ์ ๋คํ์ฑ์ ์ด์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ๊ฐ์ฒด๋ ๋ชจ๋ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ฉฐ, ์คํ ์๊ฐ์ ์ ์ ํ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ฒด๋ฅผ ์ ํํ์ฌ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์คํ ์๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์, ํ๋ก๊ทธ๋จ์ ์ ์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์ ๋ต ํจํด์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋คํ์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ ์์ ๋๋ค. ํ๋์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์, ์คํ ์ค์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์์ต๋๋ค. ์ด๋ ์ฝ๋์ ์ ์ฐ์ฑ์ ๋์ด๊ณ , ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ , ์๋ก์ด ์ฝ๋๋ฅผ ์ถ๊ฐํ ์ ์๋๋ก ํฉ๋๋ค.
์ ๋ต ํจํด์ ์๋ฐ์์๋ ์ปฌ๋ ์ ํ๋ ์์ํฌ์์๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ปฌ๋ ์ ํ๋ ์์ํฌ์์๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ๋, Comparator ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ต ํจํด์ ๊ตฌํํฉ๋๋ค.
์ข ํฉ์ ์ผ๋ก, ์ ๋ต ํจํด์ ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ์ฌ, ์คํ ์ค์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์๋๋ก ํ๋ ํจํด์ ๋๋ค. ์ ๋ต ํจํด์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋คํ์ฑ์ ์ฌ์ฉํ๋ ์ข์ ์์ ๋๋ค. ์ ๋ต ํจํด์ ์ดํดํ๊ณ , ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๋ฉด, ํ๋ก๊ทธ๋จ์ ์ ์ฐ์ฑ์ ๋์ผ ์ ์์ผ๋ฉฐ, ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.