๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
1. ์ญ์ฌ
- ๊ฐ์ฒด์งํฅ(OO, Object-Oriented) ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ง๋ฐฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์๋ฆฌ์ก๊ธฐ ์ด์ ์ ๋๋ฆฌ ์ฌ์ฉ๋ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ FORTRAN, COBOL ๋ฑ์ด๋ค. C ์ธ์ด๋ 1972๋ ์ Bell Labs์ Dennis Ritchie๊ฐ ๊ฐ ๋ฐํ ๋ฒ์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. C ํ์ค์ 1983๋ ์ ์์๋์ด 1988๋ ์ ์ฒ์์ผ๋ก ํ์คํ๋์์ผ๋ฉฐ, ์ด๋ฅผ ANSI C ๋๋ ISO C๋ผ ํ๋ค. ๊ทธ ์ดํ C99, C11์ผ๋ก ํ์ค์ด ์ผ๋ถ ๊ฐ์ ๋์๋ค. C ์ธ์ด๋ ์ด์์ฒด์ ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ์ธ์ด๋ก ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด์ง๋ง ํ๋์จ์ด์ ๋ฐ์ ํ ์์ค์ ์์๋ ํฌํจ๋์ด ์๋ค. ๋ํ ๋น์ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋ฐํ๋ ์์ฉ์ด ๋งค์ฐ ์ ํ์ ์ด์๋ค. ์ง๊ธ์ 4์ฐจ ์ฐ์ ํ๋ช , ๋น ๋ฐ์ดํฐ, ์ธ๊ณต์ง๋ฅ, ์ฌ๋ฌผ์ธํฐ๋ท(IoT, Internet of Things) ์๋์๋ ๋น๊ตํ๊ธฐ๊ฐ ์ด๋ ต๋ค. ์ด๋ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๊ฐ์ง๊ฒ ๋๋ ํน์ฑ์ ๊ทธ ์ธ์ด๋ฅผ ๊ฐ๋ฐํ๊ฒ ๋ ๋ชฉ์ ๊ณผ ๊ฐ๋ฐ ์์ ์ ์ปดํจํ ํ๊ฒฝ์ ๋ง์ ์ํฅ์ ๋ฐ์ ์๋ฐ์ ์๋ค.
- ์ ๋ณดํ ์๋์ ๋ฐ์ ์ ๋ฐ๋ผ ํจ์๊ฐ ์ค์ฌ์ด ๋๋ ๋ชจ๋ํ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ผ๋ก๋ ๊ทธ ์ดํ ์๊ตฌ๋ ๋ค์ํ ์์ฉ์ ๊ฐ ๋ฐํ๋๋ฐ ์ด๋ ค์์ด ์์๋ค. ๋ํ ์ธ๊ฐ์ด ์๊ฐํ๋ ์๊ฐ์ ๊ทธ๋๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ํํํ ์ ์์๊ณ , ํ๋ก๊ทธ๋๋จธ๋ ์์ ์ ๋จธ๋ฆฌ์์ ์๋ ์๊ฐ์ ์ปดํจํฐ์ ์๊ฐ์ผ๋ก ์ ํํด์ผ ํ๋ ์ด๋ ค์๋ ์์๋ค. ์ด์ ๋ณดํต ์ฌ๋์ด ์๊ฐํ๋ ์๊ฐ ์ ๊ทธ๋๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ฎ๊ธธ ์ ์๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด ์์ฐ์ค๋ฝ๊ฒ ์ง๋ฐฐ์ ์ธ ๊ฐ๋ฐ ํจ๋ฌ๋ค์์ด ๋์๋ค. 90๋ ๋ ์ด๋ฐ ๋ง์ดํฌ๋ก์ํ ์๋์ฐ ์์ฉ์ ๊ฐ๋ฐ ๋ถ๊ณผ ํจ๊ป ๋๊ฐ์ ๋ํ๋ด๊ธฐ ์์ํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ์ง๋ง 30๋ ์ด ์ง๋ ์ง๊ธ๋ ๋๋๊ฒ ๋ฐ์ ํ IT ํ๊ฒฝ์๋ ๋ถ๊ตฌํ๊ณ ์ฌ์ ํ ์ง๋ฐฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ผ๋ก ์๋ฆฌ ์ก๊ณ ์๋ค.
2. ๊ฐ์ฒด์งํฅ ํน์ง
์ฐ๋ฆฌ๋ ์ด๋ค ์ฌ๋ฌผ์ ์ธ์ํ ๋ ๊ทธ ์ฌ๋ฌผ์ ํน์ฑ๊ณผ ๊ทธ ์ฌ๋ฌผ์ ๊ฐ์ง๊ณ ํ ์ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง ํ์ ํ๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด ๋ฌธ(door)์ด ์์ผ๋ฉด ๋ฌธ์ ํฌ๊ธฐ, ๋ฌธ์ ์์น, ๋ฌธ์ ํ์ฌ ์ํ์ ๊ฐ์ ํน์ฑ๊ณผ ๋ฌธ์ ๊ฐ์ง๊ณ ํ ์ ์๋ ๋ฌธ ์ด๊ธฐ, ๋ฌธ ๋ซ๊ธฐ์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ธ์ํ๊ฒ ๋๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ฌธ์ ํน์ฑ๊ณผ ๊ธฐ๋ฅ์ ์ฐ๋ฆฌ๊ฐ ์ค์ ์ธ์ํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ํํํ ์ ์๊ฒ ํด์ค๋ค.
2.1 ๊ฐ์ฒด์ ํด๋์ค
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ์ ๊ฐ์ฒด(object)์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๋ค ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด์งํฅ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ ๊ฒฝ์ฐ ์ด ํ๋ก๊ทธ๋จ์์ ๋ชจ๋ธ๋งํด์ผ ํ๋ ๊ฐ์ฒด๊ฐ ์ด๋ค ๊ฒ์ด ์๋์ง ์ฐพ์์ผ ํ๋ฉฐ, ์ด๋ค ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ๊ตฌ์กฐํํ์ฌ์ผ ํ๋ค. ํ๋ก๊ทธ๋จ์ ์ด๋ค ๊ฐ์ฒด๋ฅผ ํ์ํ ์์ ์ ์์ฑํ์ฌ ์๋ก ์ํธ์์ฉํ๋๋ก ํ์ฌ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ด ๋์๋๋๋ก ํด์ผ ํ๋ค. ๊ฐ์ฒด์งํฅ ๊ฐ๋
์์ ๊ฐ์ฒด๋ ์ํ, ํ์, ์๋ณ์, 3๊ฐ์ง ์์๋ฅผ ๊ฐ์ง๋ค. ์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ด ์ํ์ด๋ค. ๋์ผํ ์ข
๋ฅ์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ์ ์์ง๋ง ๊ฐ ๊ฐ์ฒด์ ์ํ๋ ๋ค๋ฅผ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์ฌ๋ฌ ๊ฐ์์ง๊ฐ ์์ผ๋ฉด ์ด๋ค ๊ฐ์์ง๋ ๋ฐฐ๊ฐ ๊ณ ํ ์ ์๊ณ , ์ด๋ค ๊ฐ์์ง๋ ํ์ฌ ์กธ๋ฆด ์ ์๋ค.
๊ฐ์ฒด๋ ํ์ฌ ์ํ์ ๋ฐ๋ผ ํ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค. ์ด์ ์ค๋ช
์์ ๊ฐ์์ง์๊ฒ ๊ฐ์์ ์ฃผ๋๋ผ๋ ๊ฐ์์ง ์ ์ํ์ ๋ฐ๋ผ ๊ฐ์์ ๋จน์ง ์์ ์ ์๊ณ , ๋จน๋ ์๋ ๋ค๋ฅผ ์ ์๋ค. ์ด๊ฒ์ด ๊ฐ์ฒด์งํฅ์ ํต์ฌ์ด๋ค. ๋ฐ๋ผ์ ๊ฐ์ฒด์ ํ์๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ์ด์ฉํด์ผ ํ๋ฉฐ, ์ํ๋ฅผ ์ด์ฉํ์ง ์๋ ๊ฒ์ ๊ฐ์ฒด์ ํ์๋ก ๋ถ๋ฅํ์ง ์๋๋ค. ํ ์ข
๋ฅ์ ๊ฐ์ฒด ๊ฐ ์ฌ๋ฌ ๊ฐ ์กด์ฌํ ์ ์๊ณ , ํ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ ๋ฒ ์กฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ์๋ณ์๊ฐ ํ์ํ๋ค. ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ณ์๊ฐ ์๋ณ์ ์ญํ ์ ํ๋ค.
2.2 ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋ง๋๋ ๊ฒ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ค๊ณ ํ์ฌ ํ๋ก๊ทธ๋จ์ ํ์ํ ๋ชจ๋ ์์(๋ฐ์ดํฐ์ ๊ธฐ๋ฅ)๋ฅผ ๊ฐ์ฒด๋ก ๋ชจ๋ธ ๋งํด์ผ ํ๋ ๊ฒ์ ์๋๋ค. ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํ์์ ๋ ํจ๊ณผ์ ์ธ ๊ฒ๋ง ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด ํ์, ๊ฐ์์ง, ๋ฌธ๊ณผ ๊ฐ์ ์ผ์ ๊ฐ์ฒด๋ฅผ ์๋ ๊ทธ๋๋ก ํ๋ก๊ทธ๋จ ๋ด์ ๋ชจ๋ธ๋งํด์ผ ํ๋ฉด ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํ๋ ๊ฒ์ด ๋งค์ฐ ํจ๊ณผ์ ์ด๋ค. ์ผ์ ๊ฐ์ฒด๋ฟ๋ง ์๋๋ผ ๊ธฐ์กด C์์ ๊ตฌ์กฐ์ฒด๋ก ๋ชจ๋ธ๋งํ ๋ณตํฉํ์
์ ๋ฐ์ดํฐ์ด๋ฉด ๊ฐ์ฒด์งํฅ์์๋ ์ด๋ฅผ ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํ๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฟ๋ง ์๋๋ผ ์ด ๋ฐ์ดํฐ๋ฅผ ์กฐ์, ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ํด๋์ค์ ๋ฉ์๋๋ก ํจ๊ป ์ ์ํ์ฌ ์ฌ์ฉํ๋ค.
ํ๋ก๊ทธ๋จ์์ ํ์ํ ๋ฐ์ดํฐ๋ฟ๋ง ์๋๋ผ ํ์ํ ๊ธฐ๋ฅ๋ ๊ธฐ๋ฅ์ ํน์ฑ์ ๋ฐ๋ผ ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํ ์ ์๋ค. ํนํ ๊ธฐ๋ฅ์ด ๊ณผ๊ฑฐ์ ๋ํ ๊ธฐ์ต์ด ํ์ํ๋ฉด ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํ๋ ๊ฒ์ด ๋งค์ฐ ํจ๊ณผ์ ์ด๋ค. ์ฌ๊ธฐ์ ๊ณผ๊ฑฐ์ ๋ํ ๊ธฐ์ต์ด๋ ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉ ์ด๋ ฅ์ด๋ ์ด์ ์ ์ด๋๊น์ง ์ํํ์๋์ง๋ฅผ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ์ฃผ์ด์ง ๋ฌธ์ฅ์์ ๊ฐ ๋จ์ด๋ฅผ ๋ถ์ํ๋ ๊ธฐ๋ฅ์ธ๋ฐ, ์์ฒญํ ๋๋ง๋ค ๋ฌธ์ฅ์ ๊ตฌ์ฑํ๋ ๊ฐ ๋จ์ด๋ฅผ ์ฐจ๋ก๋ก ์ฃผ์ด์ผ ํ๋ฉด ์ง๊ธ๊น์ง ์ฒ๋ฆฌํ ์์น์ ๋ฌธ์ฅ์ ๊ธฐ์ตํ๊ณ ์์ด์ผ ํ๋ฏ๋ก ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํ๊ธฐ์ ์ ํฉํ ๊ธฐ๋ฅ์ด๋ค.
๋ณดํต ์ธ์๋ง ๊ฐ์ง๊ณ ๊ธฐ๋ฅ์ ์จ์ ํ ๊ตฌํํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ฉด ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํ ํ์๊ฐ ์๋ค. ์๋ฅผ ๋ค์ด sqrt, pow์ ๊ฐ์ ์ํ ํจ์๋ ๊ณผ๊ฑฐ์ ๋ํ ๊ธฐ์ต์ด ํ์ ์๊ณ ์ธ์๋ง ๊ฐ์ง๊ณ ํ์ํ ๊ณ์ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํ์ง ์๋๋ค. ๋ ๋ค๋ฅธ ์๋ก ๋ฌธ์์ด์์ ํน์ ๋ฌธ์์ ์ฒซ ๋ฒ์งธ ๋ฑ์ฅ ์์น๋ฅผ ์ฐพ๋ ๊ธฐ๋ฅ์ ์๊ฐํ์ฌ ๋ณด์. ์ด ๊ธฐ๋ฅ๋ ๋ฌธ์์ด๊ณผ ๋ฌธ์๋ฅผ ์ธ์๋ก ๋ฐ์ ๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ๋ฐ ํจ์๋ก ์ ์ํ ์ ์๋ค.
class StringUtill{
public static int indexOf(STring str, char c) {}
}
ํ์ง๋ง ์ธ์ ์ค ๋ณตํฉ ํ์
์ด ์์ผ๋ฉด ๊ทธ ์ธ์๋ฅผ ์ค์ฌ์ผ๋ก ๊ธฐ๋ฅ์ ํธ์ถํ๋ ํํ๋ก ์ ์ํ ์ ์๋ค. ๊ฐ์ฒด์งํฅ์ ๋ฐ์ด ํฐ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ํ๋์ ํ๋ก ์ ์ํ์ฌ ์ฌ์ฉํ๋ค๋ ์ธก๋ฉด์์ indexOf ๊ธฐ๋ฅ์ ๋ฌธ์์ด์ ๋ฉ์๋๋ก ๊ตฌํํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
์ธ์๋ง ๊ฐ์ง๊ณ ์จ์ ํ ๊ตฌํํ ์ ์๋ ๊ธฐ๋ฅ์ด๋๋ผ๋ ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ํ์ํ ์ธ์ ์ค ํ๋๋ฅผ ์ค์ฌ์ผ๋ก ๊ทธ ์ธ์ ํ์
์ ๋ฉ์๋๋ก ๊ตฌํํ์ฌ ์ฌ์ฉํ ์ ์๋ค. ์ด๋ ํด๋น ์ธ์๋ ํด๋์ค๋ก ์ ์ํ๊ธฐ ์ ํฉํ ๋ณตํฉํ์
์ด๊ฑฐ๋ ๋
ผ๋ฆฌ์ ์ผ๋ก ์ ํ์
์ ์ ์ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ํ์ํ ์ธ์3์ด์ด์ผ ํ๋ค.
๋ ๊ฐ์ง ๋ฐฉ๋ฒ ์ค ์ด๋ ๊ฒ์ด ๋ ์ข์ ๋ฐฉ๋ฒ์ธ์ง๋ ๋จ์ ํ๊ธฐ ์ด๋ ต๋ค. ์ธ์ด์ ํน์ฑ, ํ์
์ ํน์ฑ, ์ฝ๋ ์ค๋ณต์ด๋ผ๋ ์ธก๋ฉด์์ ์ดํด๋ณด์์ผ ํ๋ค. ์๋ฅผ ๋ค์ด indexOf๊ฐ ๋ง์ ๋ณตํฉํ์
์์ ๋์ผ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ตฌํ๋ ์ ์๋ ๊ธฐ๋ฅ์ด๋ฉด ๊ฐ ํ์
๋ง๋ค ์ค๋ณตํ์ฌ ์ ์ํ์ง ์๊ณ ๋ฒ์ฉ ํจ์๋ก ์ ์ํ๋ ๊ฒ์ด ๋ ํจ๊ณผ์ ์ด๋ค.
'๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (OOP)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[OOP] ๊ฐ์ฒด์งํฅ ์ค๊ณ ์๋ฆฌ (0) | 2021.08.16 |
---|