๐ง๐ปโ๏ธ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋?
์์ง ๋ฉด์ ์ ๋ณธ ์ ์์ง๋ง,, ๋ฉด์ ๋จ๊ณจ ์ง๋ฌธ์ด๋ผ๊ณ ํ๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด ์์๋ณด๋๋ก ํฉ์๋ค.
์ฐ์ ๊ฐ์ฒด๋ ๋ฌด์์ธ๊ฐ?
๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๋๋ ์๋ณ์์ ์ํด ์ฐธ์กฐ๋๋ ๊ณต๊ฐ์ ์๋ฏธํ๋ฉฐ
๊ฐ์ ์ ์ฅํ ๋ณ์์ ์์ ์ ์ํ ํ ๋ฉ์๋(ํจ์)๋ฅผ ์๋ก ์ฐ๊ด๋ ๊ฒ๋ค๋ผ๋ฆฌ ๋ฌถ์ด์ ๋ง๋ ๊ฒ์ด๋ค
๊ฐ์ฒด๊ฐ ๋ ๊ณ ์ ์กฐ๊ฐ์ด๊ณ ๋ ๊ณ ์ ์กฐ๊ฐ์ ์กฐ๋ฆฝํด์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋๋ ๋ฐฉ์์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด '๋์ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ'์ ๋ง๋ค์ด ๋ณธ๋ค๊ณ ๊ฐ์ ํ์.
์ด๋ฅผ ๊ฐ์ฒด์งํฅ์ผ๋ก ๊ตฌํํ๊ฒ ๋๋ฉด ์ฑ ์ ์ ๋ชฉ, ์ ์, ํ์ด์ง์์ ๊ฐ์ ์๋ฃํ ํ๋์ ๋์ถํ๊ธฐ, ๋ฐ๋ฉํ๊ธฐ ๋ฑ์ ๋ฉ์๋๋ฅผ ์ฑ ์ด๋ผ๋ ๊ฐ์ฒด์ ๋ฌถ์ด์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์ถ์์ ์ด์๋ ๋์๋ ์ง๊ด์ ์ผ๋ก ๋ณด์ด๊ฒ ๋์ด ๊ฐ๋ ์ฑ์ด ์ฆ๊ฐํ๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ๊ฐ์ฒด ๊ฐ์ ๋ ๋ฆฝ์ฑ์ด ๋๋ ทํ๊ฒ ์๊ธฐ๊ณ , ์ค๋ณต๋๋ ์ฝ๋์ ์์ด ์ค์ด๋ค๊ฒ ๋๋ค.
๐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ 4๊ฐ์ง ํน์ง
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํฌ๊ฒ ์ถ์ํ, ์บก์ํ, ์์, ๋คํ์ฑ์ ๋ค๊ฐ์ง ํน์ง์ ๊ฐ์ง๋ค.
1. ์ถ์ํ (Abstraction)
๊ฐ์ฒด๋ค์ด ๊ณตํต์ ์ผ๋ก ํ์๋ก ํ๋ ์์ฑ์ด๋ ๋์์ ํ๋๋ก ์ถ์ถํด๋ด๋ ์์
์๋ฅผ๋ค์ด '์๋์ฐจ'๋ผ๋ ์ถ์ํ ์งํฉ์ ๋ง๋ค๊ณ , ์๋์ฐจ๋ค์ด ๊ฐ์ง ๊ณตํต์ ์ธ ํน์ง์ ๋ง๋ค์ด์ ํ์ฉํ๋ค.
'์ฐฝ๋ฌธ์ด ์๋ค, ๋ค๊ฐ์ ๋ฐํด, ์ฐ๋ฃ๊ฐ ๋ค์ด๊ฐ๋ค' ๋ฑ๋ฑ์ด ๊ณตํต์ ํน์ง์ด ๋ ์ ์๊ณ ,
'ํ์ง์ ํ ์ ์๋ค' ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด ๋ค๋ฅธ ์ฝ๋๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ์ถ๊ฐ ๋ถ๋ถ๋ง ์๋ก ๋ง๋ค์ด ์ฃผ๋ฉด ๋๋ค.
2. ์บก์ํ (Encapsulation)
์ ๋ณด ์๋ํ๋ฅผ ํตํด ๋์ ์์ง๋, ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ์ ์งํ ์ ์๋๋ก ์ค๊ณํ๋ ๊ฒ
์ฝ๊ฒ ๋งํ๋ฉด, ํ ๊ณณ์์ ๋ณํ๊ฐ ์ผ์ด๋๋ ๋ค๋ฅธ ๊ณณ์ ๋ฏธ์น๋ ํจ๊ณผ๋ฅผ ์ต์ํ ์ํค๋ ๊ฒ์ด๋ค.
์บก์ํ๋ฅผ ์ดํดํ๋ ค๋ฉด ์ฐ๋ฆฌ๊ฐ ๋จน๋ ์์ฝ์ ๋ ์ฌ๋ฆฌ๋ฉด ๋๋ค. ์์ฝ์ ๋จน์ ๋ ์ค์ํ ๊ฒ์ ์ฝ์ ์ฑ๋ถ์ด๊ณ , ์ฝ์ ๋ง์ด๋ ์๊ฐ์ ์บก์ ์์ผ๋ก ์จ๊ธฐ๋ ๊ฒ. ์ด๋ ๊ฒ ์ธ๋ถ์ ์ธ ๋ด์ฉ์ ์จ๊ธฐ๋ ๊ฒ์ ์ ๋ณด ์๋์ด๋ผ๊ณ ํ๋ค.
3. ์์
์ฌ๋ฌ ๊ฐ์ฒด๋ค์ด ์ง๋ ๊ณตํต๋ ํน์ฑ์ ๋ถ๊ฐ์์ผ ํ๋์ ๋ฒ์น์ผ๋ก ์ฑ๋ฆฝํ๋ ๊ณผ์
๋๊ตฌ๋ ์์์ ๊ฐ๋ ์ ์๊ณ ์๋ค. ๋ถ๋ชจ ํด๋์ค์ ํ๋๋ ๋ฉ์๋๋ฅผ ์์ ํด๋์ค๋ ๊ทธ๋๋ก ๋ฌผ๋ ค๋ฐ๊ฑฐ๋ ๋ค๋ฌ์ด์ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ ๊ฒ ๋ถ๋ชจ ํด๋์ค๋ก๋ถํฐ ํน์ง์ ๋ฌผ๋ ค๋ฐ๊ฒ ๋๋ฉด ์ด๋ฏธ ๊ตฌํ๋ ์ธ๋ถ ๋ด์ฉ์ ๋ค์ ๊ตฌํํ ํ์๊ฐ ์์ด์
์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ํฅ์๋๋ค.
๊ทธ๋ฌ๋ ๋ช ๋ฐฑํ ๋จ์ ๋ ์กด์ฌ(์์ ํด๋์ค์ ๋ณ๊ฒฝ์ด ์ด๋ ต๋ค, ๋ถํ์ํ ํด๋์ค์ ์ฆ๊ฐ, ์์์ด ์๋ชป ์ฌ์ฉ๋ ์ ์๋ค)ํ๊ธฐ ๋๋ฌธ์
์์์ ๋ฐ๋์ ์๋์ ์ํฉ์์ ์ฌ์ฉํด์ผ ํ๋ค.
- is-A ๊ด๊ณ๊ฐ ์ฑ๋ฆฝํ ๋
- ์ฌ์ฌ์ฉ X, ๊ธฐ๋ฅ์ ํ์ฅ ๊ด์ O
์ฌ์ฌ์ฉ์ด ์๋ ๊ธฐ๋ฅ ํ์ ์ ๊ด์ ์ ๋ง๊ทธ๋๋ก ์ดํดํ๋ฉด ๋๊ณ , is-A ๊ด๊ณ๋ [~์~์ด๋ค] ๋ผ๊ณ ๋ถ๋ฅผ ์ ์๋ ๊ด๊ณ์ด๋ค. (์๋ฅผ๋ค๋ฉด ์ฌ๊ณผ๋ ๊ณผ์ผ์ด๋ค.) ์ฆ, ์์ ํด๋์ค๊ฐ ๋ค์ด๊ฐ ๋ฌธ์ฅ์ด ์์ ๋ ์์ ํด๋์ค๋ฅผ ๋ถ๋ชจ ํด๋์ค๋ก ๋์ฒดํ์ฌ๋ ์๋ฏธ๊ฐ ์ฑ๋ฆฝ๋์ด์ผ ํ๋ค.
4. ๋คํ์ฑ (polymorphism)
๋คํ์ฑ์ '์ฌ๋ฌ ํํ๊ฐ ์กด์ฌํ๋ค'๋ผ๋ ๋ป์ด๋ค. ๊ฐ์ฒด์งํฅ์์ ๋คํ์ฑ์ด๋ ํ๋์ ์์์ด๋ ํ์๊ฐ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅธ์๋ฏธ๋ก ํด์๋ ์ ์๋ ํน์ง์ ๋งํ๋ค. ๋คํ์ฑ์ ๊ฐ์ฒด์งํฅ์์ ์์ฃผ ์ค์ํ๊ณ , ํต์ฌ์ด ๋๋ ๊ฐ๋ ์ค ํ๋์ด๋ค.
์๋ก ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๋์ ์ํ ๋ช ๋ น์ ๋ฐ์์ ๋, ๊ฐ์์ ํน์ฑ์ ๋ง๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ๊ฒ์ธ๋ฐ
์ด๋ฅผ ํตํด ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํด์ฃผ๊ณ , ์ ์ฐํจ์ ๊ฐ๊ฒ ํด์ค๋ค.
์ฆ ์ค๋ฒ๋ผ์ด๋ฉ(Overriding), ์ค๋ฒ๋ก๋ฉ(Overloading)์ด ๊ฐ๋ฅํ๋ค๋ ์ด์ผ๊ธฐ์ด๋ค.
์ค๋ฒ๋ผ์ด๋ฉ : ์์ ํด๋์๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค๊ฐ ์ฌ์ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ
์ค๋ฒ๋ก๋ฉ: ๊ฐ์ ์ด๋ฆ์ ํจ์๋ฅผ ์ฌ๋ฌ๊ฐ ์ ์ํ๊ณ , ๋งค๊ฐ๋ณ์์ ํ์ ๊ณผ ๊ฐ์๋ฅผ ๋ค๋ฅด๊ฒ ํ์ฌ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํธ์ถํ ์ ์๊ฒ ํ๋ ๊ฒ
'TIL > For Interview' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ ์ปจํ ์คํธ(execution context)๋ ๋ฌด์์ธ๊ฐ์? (0) | 2023.08.29 |
---|---|
ํธ์ด์คํ (Hoisting)์ด๋? (0) | 2023.08.21 |
Virtual DOM์ ๋ํด ์ ๋ฆฌํด ๋ณด๋ ์๊ฐ (0) | 2023.04.06 |
What is a REST API? RESTful API? (0) | 2023.04.05 |
GET๊ณผ POST์ ์ฐจ์ด๋ฅผ ์์๋์? (0) | 2023.04.04 |