๐ ๊ฐ์ฒด์งํฅ(Object Orient)
1) ๊ฐ๋
์ค ์ธ๊ณ์ ๊ฐ์ฒด๋ฅผ ์์ฑ๊ณผ ๋ฉ์๋๊ฐ ๊ฒฐํฉ๋ ํํ์ ๊ฐ์ฒด๋ก ํํํ๋ ๊ฐ๋ ์ด๋ค.
๊ตฌํ๋์์ ํ๋์ ๊ฐ์ฒด๋ก ๋ณด๊ณ ๊ฐ์ฒด์ ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ๋ก ๋ชจ๋ธ๋งํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค.
2) ๋ฐฐ๊ฒฝ
์์ฐ์ฑ ์ ํ์ ๋ฐ๋ฅธ ์ฌ์ฌ์ฉ์ฑ, ํ์ฅ์ฑ์ ํ์์ ์ํด ๋ฑ์ฅํ์๋ค.
๐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
1) ๊ฐ๋
์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์ ํจ๋ฌ๋ค์ ์ค ํ๋๋ก ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณด๋ ์๊ฐ์์ ๋ฒ์ด๋ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ๋ ๋จ์, ์ฆ '๊ฐ์ฒด'๋ค์ ๋ชจ์์ผ๋ก ํ์ ํ๊ณ ์ ํ๋ ๊ฒ์ด๋ค. ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ค์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
ํ๋ก๊ทธ๋จ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋๊ท๋ชจ SW ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉ๋๋ค. ๊ฐ๋ฐ๊ณผ ๋ณด์๋ ๊ฐํธํ ํธ์ด๋ผ ๋ณด๋ค ์ง๊ด์ ์ธ ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ฅ์ ์ด ์๋ค.
2) ๊ฐ์ฒด์งํฅ์ ๊ตฌ์ฑ์์
1๏ธโฃ ํด๋์ค(Class)
๊ฐ์ ์ข ๋ฅ์ ์ง๋จ์ ์ํ๋ ์์ฑ๊ณผ ํ์๋ฅผ ์ ์ํ ๊ฒ์ด๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐํ
2๏ธโฃ ๊ฐ์ฒด(Object)
ํด๋์ค์ ์ธ์คํด์ค(์ค์ ๋ก ๋ฉ๋ก๋ฆฌ์์ ํ ๋น๋ ๊ฒ)์ ์๋ฏธํ๋ค.
์์ ๊ณ ์ ์ ๋ฐ์ดํฐ(Attribute)๋ฅผ ๊ฐ์ง๋ฉฐ ํด๋์ค์์ ์ ์ํ ํ์๋ฅผ ์ํํ๋ค.
3๏ธโฃ ์์ฑ(Attribute)
๊ฐ์ฒด์ ๋ฐ์ดํฐ
4๏ธโฃ ๋ฉ์๋(Method)
๊ฐ์ฒด์ ํ์๋ฅผ ์๋ฏธ. ํด๋์ค๋ก๋ถํฐ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ.
5๏ธโฃ ๋ฉ์์ง(Message)
๊ฐ์ฒด๊ฐ์ ํต์ ์ ์๋ฏธ.
3) ๊ฐ์ฒด์งํฅ์ ๊ธฐ๋ฒ
์บก์ ํ(Encapsulation)
- ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ํ๋๋ก ๋ฌถ์ด์ ๊ฐ์ฒด๋ก ๊ตฌ์ฑํ๋ค.
- Readability๊ฐ ํฅ์๋์ด ์ ์ง๋ณด์๊ฐ ์ฉ์ด.
- ์ฌ์ฌ์ฉ์ฑ์ด ๋์ S/W ๊ฐ๋ฐ์ด ๊ฐ๋ฅ.
- ์ ๋ณด์๋์ผ๋ก ๋ด๋ถ์๋ฃ์ ์ผ๊ด์ฑ์ด ์ ์ง.
- ๊ฐ์ฒด๊ฐ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉ, ์ข ์์ฑ์ ์ต์ํ.
์ถ์ํ(Abstraction)
- ๊ณตํต ์ฑ์ง์ ์ถ์ถํ์ฌ ์ํผํด๋์ค๋ก ๊ตฌ์ฑํ๋ค.
- ๊ฐ์ฑ ์ค์ฌ์ ์์ ๋ ๋ชจ๋ธ์ ๊ตฌ์ถ.
- ํ์ค ์ธ๊ณ๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํํ.
- ๋ถ์์ ์ด์ ์ด ๋ช ํํด์ง.
๋คํ์ฑ(Polymorphism)
- ๋์ผํ ์ด๋ฆ์ ์ฌ๋ฌ ์คํผ๋ ์ด์ (๋ฉ์๋)์ ๋ค๋ฅธ ์ฌ์์ผ๋ก ์ ์ ๊ฐ๋ฅํ๋ค.
โญ ๋คํ์ฑ์ ์ค๋ฒ๋ผ์ด๋ฉ(๊ฐ์ฅ ์ฐ์ ๋๋)๊ณผ ์ค๋ฒ๋ก๋ฉ(๊ณผ์ ํ๋ค)
๊ตฌ๋ถ | ์ค๋ฒ๋ผ์ด๋ฉ(Overriding) | ์ค๋ฒ๋ก๋ฉ(Overloading) |
๊ฐ๋ | ์์๊ด๊ณ์์ ์์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ํ์ํด๋์ค์์ ์ฌ์ ์ํ๋ค. | ํ๋์ ํด๋์ค ๋ด์์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ฌ๋ฌ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ์ํ๋ค. |
๋ฉ์๋ ๋ช | ์์๊ด๊ณ ๋ด์์ ๋์ผ | ํน์ ํด๋์ค ๋ด์์ ๋์ผ |
๋งค๊ฐ๋ณ์ ๊ฐ์, ํ์ | ๋ฐ๋์ ์ผ์นํด์ผ ํจ. | ๊ฐ์ ๋๋ ํ์ ์ด ๋ค๋ฆ. |
๋ฆฌํด ํ์ | ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผ | ์๊ด์์ |
์ ๊ทผ์ ํ | ๋ฒ์๊ฐ ๊ฐ๊ฑฐ๋ ๋์ด์ผ ํจ. | ์๊ด์์ |
์ ๋ณด์๋(Information Hiding)
- ์บก์ํ๋ ํญ๋ชฉ์ ๋ค๋ฅธ ๊ฐ์ฒด๋ก๋ถํฐ ์จ๊น.
- ๋ฉ์์ง ใ ฃ์ ๋ฌ์ ์ํด ๋ค๋ฅธ ํด๋์ค ๋ด์ ๋ฉ์๋๊ฐ ํธ์ถ๋จ.
์์์ฑ(Inheritance)
- ๋ถ๋ชจ ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์์๋ฐ์ ์ฌ์ฉ.
- ๋ถ๋ชจ์ ์์ ํด๋์ค ๊ฐ์ ๊ด๊ณ๊ฐ ์ํผํด๋์ค์ ์๋ธํด๋์ค๋ก ์ ์ง๋๋ค.
- ๋ถ๋ชจ ํด๋์ค๋ ์ถ์์ ์ด๋ฉฐ, ์์ ํด๋์ค๋ ๊ตฌ์ฒด์ ์ฑ์ง์ ๊ฐ์ง๋ค.
๐ก ๋คํ์ฑ๊ณผ ์์์ฑ ๋น๊ต
๊ตฌ๋ถ | ๋คํ์ฑ | ์์์ฑ |
๊ฐ๋ | ๋์ผ ์ธํฐํ์ด์ค์ ๋ํด ์๋ก ๋ค๋ฅธ ์ฒ๋ฆฌ ๋ฐฉ์์ผ๋ก ๊ตฌํ ๊ฐ๋ฅํ ํน์ฑ์ด๋ค. | ๋ถ๋ชจ ํด๋์ค์ Method, Attribute๋ฅผ ๋ฌผ๋ ค ๋ฐ๋ ํน์ฑ์ด๋ค. |
ํน์ง | ๋์ Binding | ์ ์ Binding |
๊ตฌ์กฐ | ์์ง/์ํ์ ๊ตฌ์กฐ | ์์ง์ ๊ตฌ์กฐ |
์ฅ์ | ๋ช ๋ น์ ๋จ์ํ, ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ, ๋์ ์์ง๋ ์คํ์ด ๊ฐ๋ฅํ๋ค. | ์ฌ์ฌ์ฉ์ฑ ํฅ์, ์ค๋ณต ์ ๊ฑฐ, ์ ์ง๋ณด์์ฑ์ด ํฅ์๋๋ค. |
๋จ์ | ์ฝ๋ ์ค๋ณต ๊ฐ๋ฐ ๊ฐ๋ฅ์ฑ | ๊ณผ๋ํ ์์์ ๊ฒฐํฉ๋ ์์น ์์ธ. |
๐ ๊ฐ์ฒด์งํฅ(Object Orient) ์ค๊ณ์์น
โ ๋จ์ผ ์ฑ ์์ ์์น : ๊ฐ์ฒด๋ ํ๋์ ์ฑ ์๋ง ๋งก์์ผ ํ๋จ. (๋ฎ์ ๊ฒฐํฉ๋, ๋์ ์์ง๋ ์ถ๊ตฌ)
โก ๊ฐ๋ฐฉ ํ์ ์์น : ์ํํธ์จ์ด๋ ํ์ ์๋ ์ด๋ ค์๊ณ , ์์ ์์๋ ๋ซํ์์ด์ผ ํ๋ค.
โข ๋ฆฌ์ค์ฝํ ์นํ์ ์์น : ํ์ ํด๋์ค ๋ฐ ํ์ ๋ค์ ์์ ํ์ ๋ค์ด ์ฌ์ฉ๋๋ ๊ณณ์ ๋์ฒด๋ ์ ์์ด์ผ ํ๋ ์ค๊ณ ์์น์ด๋ค.
โฃ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ์ ์์น : ํ๋์ ์ผ๋ฐ์ ์ธ ์ธํฐํ์ด์ค๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ์ฌ๋ฌ ๊ฐ์ ์ธํฐํ์ด์ค๊ฐ ๋ซ๋ค.
โค ์์กด์ฑ ๋ค์ง๊ธฐ์ ์์น : ์ถ์ํ๋ ๊ฒ์ ์์กดํ๊ฒ ๋ง๋ค๊ณ ๊ตฌ์ฒดํด๋์ค์ ์์กดํ๋๋ก ๋ง๋ค์ง ์๋๋ก ํ๋ค.