๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ vs. ์ ์ฐจ ์งํฅ ํ๋ก๊ทธ๋๋ฐ
์ ์ฐจ ์งํฅ ํ๋ก๊ทธ๋๋ฐ = ๋จ์ํ ๋ณ๊ฐ์ ๋ณ์์ ํจ์๋ก ์์ฐจ์ ์ผ๋ก ์๋
์ ์ฐจ์ ์ธ์ด = ์์ฐจ์ ์ธ ๋ช ๋ น์ ์กฐํฉ ex) ์ด๊ธฐ์ C, ํฌํธ๋
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ = ๋ฐ์ดํฐ์ ์ ๊ทผ, ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ ๊ณผ์ ์์ ๋ํ ๋ชจํ์ ๋ง๋ค์ด๋ธ๋ค. ('ํด๋์ค'๋ผ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฒญ์ฌ์ง์ ์ฌ์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํ๋ค. )
๊ทธ๋์ ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ด ๋ณ๊ฐ๋ก ์ทจ๊ธ๋์ง ์๊ณ , ํ ๋ฒ์ ๋ฌถ์ฌ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ค. // ๋ฉ์๋์ ์์ฑ์ด ์กด์ฌํ๋ค.
ํ๋ ์ธ์ด๋ค์ ๋๋ถ๋ถ ๊ฐ์ฒด ์งํฅ์ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
OOP๋ ํ๋ก๊ทธ๋จ ์ค๊ณ ์ฒ ํ์ด๋ค.
OOP์ ๋ชจ๋ ๊ฒ์ '๊ฐ์ฒด'๋ก ๊ทธ๋ฃนํ๋๋ค. // ์ด ๊ฐ์ฒด๋ ํ๋ฒ ๋ง๋ค๊ณ ๋๋ฉด, ๋ฉ๋ชจ๋ฆฌ์์์ ๋ฐํ๋๊ธฐ ์ ๊น์ง ๊ฐ์ฒด ๋ด์ ๋ชจ๋ ๊ฒ์ด ์ ์ง๋๋ค.
OOP์ ์ฌ์ฌ์ฉ์ฑ์ ์ป์ ์ ์๋ค.
ํด๋์ค๋ ์ธ๋ถ ์ฌํญ(์์ฑ)์ด ๋ค์ด๊ฐ์ง ์์ ์ฒญ์ฌ์ง์ด๋ค.
์ธ๋ถ ์ฌํญ๋ง ๋ฃ๋๋ค๋ฉด ๊ฐ์ฒด๊ฐ ๋๋ค. ์ฌ๊ธฐ์ ๊ฐ์ฒด๋ js์ ๊ฐ์ฒด (object)๊ฐ ์๋๊ณ ํด๋์ค๋ฅผ ํตํด ๋ง๋ค์ด์ง ๊ฐ์ฒด์ด๋ค. ์ด๋ฅผ ์ค์ฌ์ ์ธ์คํด์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
=> ์์ฑ์๋ ์ธ๋ถ ์ฌํญ์ ๋ฃ์ด์ฃผ๋ ์ญํ ์ ํ๋ค. ํจ์์ ์ธ์๋ฅผ ๋ฃ๋ฏ์ด ์์ฑ์ ๋ฃ์ ์ ์๋ค.
์ฝ๊ฒ ์๋ฅผ ๋ค์๋ฉด!!
class Car = ํด๋์ค์ ์ด๋ฆ
์๋์ฐจ ์์, ๊ฐ๊ฒฉ, ์๋ ฅ ๋ฑ๋ฑ์ ๊ณ ์ ํ ์์ฑ = ์์ฑ
์์, ํ์ง, ์ ์ง, ๋ฉ์ถค ๋ฑ ์๋์ฐจ์ ๊ธฐ๋ฅ = ๋ฉ์๋
๊ฐ์ฒด ์งํฅ์ ์ค์์ฑ = ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ ์ข์ ์ค๊ณ๋ฅผ ํ๊ธฐ ์ํด์ ๊ผญ ์ดํดํ๊ณ ์์ฉํด์ผํ๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฃผ์ ๊ฐ๋ // OOP Basic Concepts
OOP(object oriented programming)
1. Encapsulation (์บก์ํ)
2. Abstraction (์ถ์ํ)
3. Inheritance (์์)
4. Polymorphism (๋คํ์ฑ)
1. Encapsulation (์บก์ํ) // ์ฝ๋๊ฐ ๋ณต์กํ์ง ์๊ฒ ํ๊ณ , ์ฌ์ฌ์ฉ์ฑ์ ๋์ธ๋ค.
- ๋ฐ์ดํฐ(์์ฑ)์ ๊ธฐ๋ฅ (๋ฉ์๋)๋ค์ด ๋์จํ๊ฒ ๊ฒฐํฉ
- ์๋์ ํน์ง๋ ๊ฐ์ง๊ณ ์๋ค. // ๋ด๋ถ ๋ฐ์ดํฐ๋ ๋ด๋ถ ๊ตฌํ์ด ์ธ๋ถ๋ก ๋ ธ์ถ๋์ง ์๋๋ก ๋ง๋๋ ๊ฒ.
- ๊ทธ๋์ ์๋ํ์ ํน์ง์ ์ด๋ ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๊ฐ์ฒด ๋ด ๋ฉ์๋์ ๊ตฌํ๋ง ์์ ํ๊ณ , ๋ ธ์ถ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋ ํ๋ฆ์ ๋ฐ๋์ง ์๋๋ก ๋ง๋ค ์ ์๋ค. ==> ํด๋ก์ ๋ชจ๋ ํจํด์ ์ฌ์ฉ
- ๋์จํ ๊ฒฐํฉ(loose coupling)์ ์ ๋ฆฌํ๋ค = ์ธ์ ๋ ์ง ๊ตฌํ์ ์์ ํ ์ ์๋ค.
2. Abstraction (์ถ์ํ) // ์ฝ๋๊ฐ ๋ณต์กํ์ง ์๊ฒ ํ๊ณ , ๋จ์ํ๋ ์ฌ์ฉ์ผ๋ก ๋ณํ์ ๋ํ ์ํฅ์ ์ต์ํํ๋ค.
- ๋ด๋ถ ๊ตฌํ์ ์์ฃผ ๋ณต์กํ์ง๋ง, ์ค์ ๋ก ๋ ธ์ถ๋๋ ๋ถ๋ถ์ ๋จ์ํ๊ฒ ๋ง๋ ๋ค๋ ๊ฐ๋ (์ธํฐํ์ด์ค๋ฅผ ๋จ์ํ)
- ๋๋ฌด ๋ง์ ๊ธฐ๋ฅ๋ค์ด ๋ ธ์ถ๋์ง ์๊ธฐ์ ์์์น ๋ชปํ ์ฌ์ฉ์ ๋ณํ๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์ต์ํํ๋ค.
- ํด๋์ค ์ ์์, ๋ฉ์๋์ ์์ฑ๋ง ์ ์ํ ๊ฒ์ ์ธํฐํ์ด์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
3. Inheritance (์์) // ๋ถํ์ํ ์ฝ๋๋ฅผ ์ค์ฌ์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ธ๋ค.
- ๋ถ๋ชจ ํด๋์ค์ ํน์ง์ ์์ ํด๋์ค๊ฐ ๋ฌผ๋ ค๋ฐ๋ ๊ฒ
- ์ฆ, ๊ธฐ๋ณธ ํด๋์ค(base class)์ ํน์ง์ ํ์ ํด๋์ค(derived class)๊ฐ ์์๋ฐ๋๋ค.
4. Polymorphism (๋คํ์ฑ) // ๋์ผํ ๋ฉ์๋์ ๋ํด if ์กฐ๊ฑด๋ฌธ ๋์ ๊ฐ์ฒด์ ํน์ฑ์ ๋ง๊ฒ ๋ฌ๋ฆฌ ์์ฑํ๋ ๊ฒ ๊ฐ๋ฅํ๋ค.
- ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๋ฉ์๋์ฌ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ ์ ์๋ค.
- ์๋ฅผ๋ค๋ฉด ์๊ณ ๋ผ์คํ ์ด์ธ ๋ง๋ค๊ธฐ์์ render๋ ๋ฉ์๋๊ฐ ์กฐ๊ธ์ฉ ๋ค๋ฅด๊ฒ ์๋ํ๋ค.
'๐Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TIL) ํ๋กํ ํ์ ์ฒด์ธ, __proto__ ์ prototype ์ ์ฐจ์ด, ํ๋กํ ํ์ ์ฒด์ด๋์ ์ข ์ (0) | 2022.05.26 |
---|---|
TIL) ํ๋กํ ํ์ ์ ๋ฆฌ (0) | 2022.05.26 |
TIL) ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ, ํด๋์ค, ์ธ์คํด์ค, ๋ชจ๋ํ๋ฅผ ํ๋ ์ด์ (0) | 2022.05.25 |
TIL) ๊ณ ์ฐจํจ์, ๋ด์ฅ๊ณ ์ฐจํจ์, map, filter, reduce (0) | 2022.05.25 |
TIL) ๋ฌธ์์ด๊ณผ ๋ฐฐ์ด์ ๊ณตํต์ (0) | 2022.05.24 |