๊ฐ์ฒด์งํฅ์ด ๋์ค๊ฒ ๋ ๋ฐฐ๊ฒฝ
• 1970๋
๋ ์ด์ ์๋ ์ค๊ณ์์ด ํ์ํ ๋๋ง๋ค ๊ฐ๋ฐํ๋ ๋ฐฉ์์ผ๋ก ์งํ
→ ์๊ฐ์ด ์ง๋๋ฉด์ ์ค๋ณต์ฝ๋ ์ฆ๊ฐ, ์ ์ง๋ณด์์ ์ด๋ ค์ ๋ฐ์์ผ๋ก ์ ๋ขฐ๋ ๋ฐ๋ฅ ๋ฐ ์ฑ๋ฅ ์ ํ ๋ฑ์ ์ด์๊ฐ ๋ฐ์ํ๊ฒ๋จ
• 1970๋
๋ ์ดํ, ํ๋ก๊ทธ๋จ์ ์ชผ๊ฐ์ด ๊ฐ๋ฐํ๋ ๊ตฌ์กฐ์ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ด ๋ง์ด ์ฌ์ฉ (๋ถ์ - ์ค๊ณ - ๊ฐ๋ฐ - ํ
์คํธ)
→ ์ฌ์ฉ์ ์๊ตฌ์ฌํญ์ด ๋ช
ํํ๊ณ ๋ณํ๊ฐ ๋ง์ด ์์ ํ๊ฒฝ์์๋ ํจ์จ์ ์ด๋, ์๋ช
์ฃผ๊ธฐ ๊ฐ ๋จ๊ณ๋ณ(ex. ๋ฌผํ๊ตฌ๋งค..๋ฌผํ์กฐํ..๋ฌผํ์ญ์ ..)๋ก ์์ฐ์ค๋ฝ๊ฒ ์๋ก ์ฐ๊ฒฐ๋์ง ์๊ณ , ํ๋ก๊ทธ๋จ ๋ด๋ถ ๊ธฐ๋ฅ๋ค์ ๋ฐ์ดํฐ์ ๋ณต์กํ์ฌ ์ฝํ์์ด ์ํํธ์จ์ด๋ฅผ ๋ณ๊ฒฝํ๋๊ฒ ์ฝ์ง ์์
→ ์ ์ง๋ณด์ ๋น์ฉ ์ฆ๊ฐ
→ ๊ฐ์ฒด์งํฅ์ด ๋์ค๊ฒ๋จ
• ๊ฐ์ฒด์งํฅ์ ํ์ค์ธ๊ณ์ ์กด์ฌํ๋ ์ค์ฒด ๋ฐ ๊ฐ๋
๋ค์ ๊ฐ์ฒด๋ผ๋ ๋
๋ฆฝ๋ ๋จ์๋ก ๊ตฌ์ฑ & ๋ฉ์ธ์ง๋ก ์ํธ์์ฉ & ๊ฐ์ฒด์งํฅ ์์คํ
์ ๊ฐ์ํํ๊ณ ๋ช
์ธํํ๊ณ ๋ฌธ์ํํ๊ฒ์ด UML
๊ฐ์ฒด์งํฅ ์์
• ๊ฐ์ฒด(Object) : ์์ฑ๊ณผ ํ๋์ ๊ฐ์ง๊ณ ์๋๊ฒ
→ (์๋ฃ(=์์ฑ(๋ณ์) + ๊ฐ(๋ณ์๊ฐ)=ํด๋์ค์์ ์ ์) ๋ฐ ์คํผ๋ ์ด์
(=ํด๋์ค์ ํฌํจ๋์ด์๋ ๋ฉ์๋))
• ํด๋์ค(Class) : ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ ๊ตฌ์กฐ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ
• ๋ฉ์ธ์ง(Message) : ์ด๋ค ํ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ํน์ ์์
์ ์์ฒญํ๋ ์ ํธ
→ ์์ ๊ฐ์ฒด ์ด๋ฆ + ์ํํ ์คํผ๋ ์ด์
์ด๋ฆ + ์ ๋ฌ๋๋ ๋งค๊ฐ๋ณ์
๊ฐ์ฒด์งํฅ ํน์ฑ
• ์บก์ํ(Encapsulation) : ํด๋น ๊ธฐ๋ฅ์ ๋์์ ๋ํ ํ๋ฆ์ ์์ธํ๊ฒ ์ํ์ ์์ด, ์ธ๋ถ์์ ์ํ๋ ๊ธฐ๋ฅ๋ค์ ์ํํ๋๋ก ์ง์ํ๋๊ฒ.
→ ์ธ๋ถ์์ ๊ฐ์ฒด ๋ด ์ง์ ์ ๊ทผ X
→ ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋ ์คํผ๋ ์ด์
์ ํตํด ๊ด๋ จ ๋ฐ์ดํฐ์ ์ ๊ทผ (์ด๋ก์จ ๋จ์ํ๊ณ ๋ช
ํํ๊ฒ ํํ๊ฐ๋ฅ)
→ ์ ๋ณด์๋์ด ๊ฐ๋ฅ
• ์์(Inheritance) : ํ๋ก๊ทธ๋จ์ ํ์ฅ ๊ฐ๋ฅํ๋๋ก ํด์ฃผ๋ ์๋จ
→ ์ฌ์ฌ์ฉ ๋ฐ ํ์ฅ์ฑ
→ ์ผ๋ฐํ(Generalization) : ํ์ํด๋์ค์ ๊ณตํต์ ํน์ฑ์ ์ถ์ํํ์ฌ ์์ ํด๋์ค๋ก ์ ์ํ๋๊ฒ (ํ์ -> ์์)
→ ํน์ํ(Specialization) : ์์ ํด๋์ค์ ์์ฑ์ ์์๋ฐ์ ํ์ ํด๋์ค์ ์ค์ฒดํ (์์ -> ํ์)
• ์ถ์ํ(Abstraction) : ํน์ ์ธก๋ฉด์ ๊ฐ์กฐํ์ฌ ๋ํ๋ธ๊ฒ. ์ค์ธ๊ณ์ํฉ์ ๊ฐ๊ฒฐํ๊ณ ๋ช
ํํ๊ฒ ๋ชจ๋ธ๋งํ์ฌ ์ด๊ฒ์ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌํ(=์ค์ฒดํ)
• ๋คํ์ฑ(Polymorphism) : ์ฌ๋ฌํด๋์ค์ ๊ฐ์ ๋ฉ์๋๋ช
์ ์ฌ์ฉํ๋, ๋์์ด ๋ค๋ฅธ ์ผ์ด์ค (์ค๋ฒ๋ผ์ด๋ฉ)
>>> ์บก์ํ์ ์ถ์ํ๋ฅผ ํค๊น๋ฆฌ๋ฉด ์๋ ๋ฏ!
์บก์ํ๋ ๊ฒฐ๊ณผ์ ํ๋๋ง ๋ฐ๋ผ๋ณด๋๊ฒ์ด๋ฉด(ํธ์ถํ๋์์ ์
์ฅ์์ ๋ด๋ถ์ฌ์ ์ ์ํ์ ์๋ค!), ์ถ์ํ๋ ๊ตฌ์ฒดํ๋ฅผ ํ๊ธฐ ์ํ ์๋จ์ ์์์ผ๋ก ๋ด์ผํ ๋ฏ