Object Oriented Programing
๊ฐ์ฒด ์งํฅ (Object-Oriented)
: ํ์ค ์ธ๊ณ์ ๊ฐ์ฒด(Enity)๋ฅผ ๊ธฐ๊ณ์ ๋ถํ์ฒ๋ผ ํ๋์ ๊ฐ์ฒด(Object)๋ก ๋ง๋ค์ด, ๊ธฐ๊ณ์ ์ธ ๋ถํ๋ค์ ์กฐ๋ฆฝํ์ฌ ์ ํ์ ๋ง๋ค ๋ฏ์ด ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐ ํ ๋์๋ ๊ฐ์ฒด๋ค์ ์กฐ๋ฆฝํด์ ์์ฑํ ์ ์๋ ๊ธฐ๋ฒ์ ๋งํ๋ค
๊ฐ์ฒด ์งํฅ์ ๊ตฌ์กฐ์ ๊ธฐ๋ฒ์ ๋ฌธ์ ์ ์ผ๋ก ์ธํ ์ํํธ์จ์ด ์๊ธฐ์ ํด๊ฒฐ์ฑ ์ผ๋ก ์ฑํ
๊ตฌ์กฐ์ ๊ธฐ๋ฒ์ ํ๋ก์์ ์ ๊ทผ๊ฐ์ ๋๊ณ ํ๋์ ์ปค๋ค๋ ์์ ์ ์ฌ๋ฌ ๊ฐ์ ์์ ์์ ์ผ๋ก ๋ถํ ํ๊ณ , ๋ถํ ๋ ๊ฐ๊ฐ์ ์์์ ์ ์ํํ๋ ๋ชจ๋์ ์์ฑํ ๋ค์ ์ด๋ค์ ํ๊ณณ์ ๋ชจ์ ํฐ ์์ ์ ์ํํ๋ ํ๋์ ์๋ฒฝํ ํ๋ก๊ทธ๋จ์ผ๋ก ์์ฑํ๋ ๊ธฐ๋ฒ
๊ตฌ์กฐ์ ๊ธฐ๋ฒ์ ๋ฌธ์ ์ ์ ์ ์ง๋ณด์๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ๊ฐ๋ฐ ๊ณต์ ์๋ง ์ง์ค, ์ถ๊ฐ์ ์ธ ์๊ตฌ์ฌํญ์ ๋์ํ๊ธฐ ์ด๋ ค์ฐ๋ฉฐ, ์ฌ์ฌ์ฉ์ด ์ด๋ ค์ ์ด์ ์ ๊ฐ๋ฐํ ์ ์ฌํ ์ํํธ์จ์ด๋ฅผ ๋ค์ ๊ฐ๋ฐํ ๋๋ ์๊ฐ๊ณผ ์ธ๋ ฅ์ด ๋์ผํ๊ฒ ์๋ชจ ๋๋ค
๊ฐ์ฒด ์งํฅ์ ์ํํธ์จ์ด์ ์ฌ์ฌ์ฉ ๋ฐ ํ์ฅ์ด ์ฉ์ดํ์ฌ ๊ณ ํ์ง์ ์ํํธ์จ์ด๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์๊ณ ์ ์ง ๋ณด์๊ฐ ์ฝ๋ค
๊ฐ์ฒด ์งํฅ์ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๋จ๊ณ์ , ๊ณ์ธต์ ์ผ๋ก ํํํ๊ณ , ๋ฉํฐ๋ฏธ๋์ด ๋ฐ์ดํฐ ๋ฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ง์
ํ์ค ์ธ๊ณ๋ฅผ ๋ชจํํํ๋ฏ๋ก ์ฌ์ฉ์์ ๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ์ดํดํ ์ ์๋ค
์ฃผ์ ๊ตฌ์ฑ ์์์ ๊ฐ๋ ์ ๊ฐ์ฒด, ํด๋์ค, ์บก์ํ, ์์, ๋คํ์ฑ์ด ์๋ค
๊ฐ์ฒด (Object)
: ๊ฐ์ฒด๋ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ๋ฌถ์ด ๋์ (์บก์ํํ) ํ๋์ ์ํํธ์จ์ด ๋ชจ๋์ด๋ค ๊ฐ์ฒด์ ํน์ฑ
๊ฐ์ฒด๋ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ณ ๊ฐ๋ฅํ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋ค
๊ฐ์ฒด๊ฐ ๊ฐ์ง ์ ์๋ ์กฐ๊ฑด์ ์ํ(State)๋ผ๊ณ ํ๋๋ฐ, ์ผ๋ฐ์ ์ผ๋ก ์ํ๋ ์๊ฐ์ ๋ฐ๋ผ ๋ณํ๋ค
๊ฐ์ฒด์ ๊ฐ์ฒด๋ ์ํธ ์ฐ๊ด์ฑ์ ์ํ ๊ด๊ณ๊ฐ ํ์ฑ๋๋ค
๊ฐ์ฒด๊ฐ ๋ฐ์ํ ์ ์๋ ๋ฉ์์ง์ ์งํฉ์ ํ์๋ผ๊ณ ํ๋ฉฐ, ๊ฐ์ฒด๋ ํ์์ ํน์ง์ ๋ํ๋ผ ์ ์๋ค
๊ฐ์ฒด๋ ์ผ์ ํ ๊ธฐ์ต์ฅ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค
๊ฐ์ฒด์ ๋ฉ์๋๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ๋ฐ์์ ๋ ์ ํด์ง ๊ธฐ๋ฅ์ ์ํํ๋ค
ํด๋์ค(Class)
: ๊ณตํต๋ ์์ฑ๊ณผ ์ฐ์ฐ(ํ์)์ ๊ฐ๋ ๊ฐ์ฒด์ ์งํฉ์ผ๋ก, ๊ฐ์ฒด์ ์ผ๋ฐ์ ์ธ ํ์ ์ ์๋ฏธํ๋ค
ํด๋์ค๋ ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ค์ด ๊ฐ๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ์ ์ํ๊ณ ์๋ ํ์ด๋ค
ํด๋์ค์ ์ํ ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค(Instance)๋ผ ํ๋ฉฐ, ํด๋์ค๋ก๋ถํฐ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ธ์คํด์คํ(Instantiation)๋ผ๊ณ ํ๋ค
๋์ผ ํด๋์ค์ ์ํ ๊ฐ๊ฐ์ ๊ฐ์ฒด(์ธ์คํด์ค)๋ค์ ๊ณตํต๋ ์์ฑ๊ณผ ํ์๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๊ทธ ์์ฑ์ ๋ํ ์ ๋ณด๊ฐ ์๋ก ๋ฌ๋ผ์ ๋์ผ ๊ธฐ๋ฅ์ ํ๋ ์ฌ๋ฌ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๋ํ๋ด๊ฒ ๋๋ค
์ต์์ ํด๋์ค๋ ์์ ํด๋์ค๋ฅผ ๊ฐ์ง ์๋ ํด๋์ค๋ฅผ ์๋ฏธํ๋ค
์ํผ ํด๋์ค(Super Class)๋ ํน์ ํด๋์ค์ ์์(๋ถ๋ชจ) ํด๋์ค์ด๊ณ , ์๋ธ ํด๋์ค (Sub Class)๋ ํน์ ํด๋์ค์ ํ์(์์) ํด๋์ค๋ฅผ ์๋ฏธํ๋ค
์บก์ํ(Encapsulation)
: ๋ฐ์ดํฐ(์์ฑ)๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ํ๋๋ก ๋ฌถ๋ ๊ฒ์ ์๋ฏธํ๋ค
์บก์ํ๋ ๊ฐ์ฒด๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์ธํ ์ธ๋ถ ๋ด์ฉ์ด ์ํ(์ ๋ณด ์๋)๋์ด ์ธ๋ถ์์์ ์ ๊ทผ ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ถ ๋ชจ๋์ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ํ๊ธ ํจ๊ณผ๊ฐ ์ ๋ค
์บก์ํ๋ ๊ฐ์ฒด๋ค์ ์ฌ์ฌ์ฉ์ด ์ฉ์ดํ๋ค
๊ฐ์ฒด๋ค ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์๋ ๊ฐ์ฒด์ ์ธ๋ถ ๋ด์ฉ์ ์ ํ์๊ฐ ์์ผ๋ฏ๋ก ์ธํฐํ์ด์ค๊ฐ ๋จ์ํด์ง๊ณ , ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋ฎ์ ์ง๋ค
์์(Inheritance)
: ์ด๋ฏธ ์ ์๋ ์์ ํด๋์ค(๋ถ๋ชจ ํด๋์ค)์ ๋ชจ๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ํ์ ํด๋์ค(์์ ํด๋์ค)๊ฐ ๋ฌผ๋ ค๋ฐ๋ ๊ฒ
์์์ ์ด์ฉํ๋ฉด ํ์ ํด๋์ค๋ ์์ ํด๋์ค์ ๋ชจ๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ์์ ์ ํด๋์ค ๋ด์์ ๋ค์ ์ ์ํ์ง ์๊ณ ์๋ ์ฆ์ ์์ ์ ์์ฑ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค
ํ์ ํด๋์ค๋ ์์ ํด๋์ค๋ก๋ถํฐ ์์๋ฐ์ ์์ฑ๊ณผ ์ฐ์ฐ ์ธ์ ์๋ก์ด ์์ฑ๊ณผ ์ฐ์ฐ์ ์ฒจ๊ฐํ์ฌ ์ฌ์ฉํ ์ ์๋ค,
์์ ํด๋์ค์ ์์ฑ๊ณผ ์ฐ์ฐ์ ํ์ ํด๋์ค๊ฐ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ํด๋์ค์ ์ฌ์ฌ์ฉ, ์ฆ ์ํํธ์จ์ด์ ์ฌ์ฌ์ฉใ ์ ๋์ด๋ ์ค์ํ ๊ฐ๋ ์ด๋ค
๋ค์ค ์์์ ํ ๊ฐ์ ํด๋์ค๊ฐ ๋ ๊ฐ์ด์์ ์์ ํด๋์ค๋ก๋ถํฐ ์์ฑ๊ณผ ์ฐ์ฐ์ ์์๋ฐ๋ ๊ฒ์ด๋ค
๋คํ์ฑ(Polymorphism)
: ๋ฉ์์ง์ ์ํด ๊ฐ์ฒด(ํด๋์ค)๊ฐ ์ฐ์ฐ์ ์ํํ๊ฒ ๋ ๋ ํ๋์ ๋ฉ์์ง์ ๋ํด ๊ฐ๊ฐ์ ๊ฐ์ฒด(ํด๋์ค)๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ํ ๋ฐฉ๋ฒ(ํน์ฑ)์ผ๋ก ์๋ตํ ์ ์๋ ๋ฅ๋ ฅ์ ์๋ฏธํ๋ค
๊ฐ์ฒด(ํด๋์ค)๋ค์ ๋์ผํ ๋ฉ์๋ ๋ช ์ ์ฌ์ฉํ๋ฉฐ ๊ฐ์ ์๋ฏธ์ ์๋ต์ ํ๋ค
์์ฉ ํ๋ก๊ทธ๋จ ์์์ ํ๋์ ํจ์๋ ์ฐ์ฐ์๊ฐ ๋ ๊ฐ ์ด์์ ์๋ก ๋ค๋ฅธ ํด๋์ค์ ์ธ์คํด์ค๋ค์ ๊ฐ์ ํด๋์ค์ ์ํ ์ธ์คํด์ค์ฒ๋ผ ์ํ ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค
Last updated
Was this helpful?