TIL(20210717) - ํด๋์ค์ ์ค๋ธ์ ํธ์ ์ฐจ์ด์ , ํด๋์ค ์ ๋ฆฌ
๐ Daily
- JavaScript ํด๋์ค(class) ํ์ต
- ํด๋์ค(Class)์ ์ค๋ธ์ ํธ(Object)์ ์ฐจ์ด์ ํ์ต
๐ค Learned
ํด๋์ค(Class)๋?
์๋ก ๊ด๋ จ ์๋ ๋ฐ์ดํฐ(fields, method)๋ฅผ ํ ๊ณณ์ ๋ฌถ์ด ๋์ ์ปจํ ์ด๋๋ฅผ ๋งํ๋ค.
class Person{
// fields(์์ฑ)
name;
age;
// method(ํ๋)
speak();
}
์ ์ฝ๋๋ฅผ ๋ณด๋ฉด Person์ด๋ผ๋ ์ด๋ฆ์ ํด๋์ค(Class)๋
name๊ณผ age๋ผ๋ property๊ฐ ๋ค์ด์๊ณ
๋ง์ ํ๋ ๊ธฐ๋ฅ speack()๋ผ๋ ์ด๋ฆ์ function์ด ์์ต๋๋ค.
์ด๋ ๊ฒ ํด๋์ค(Class) ์์๋ name๊ณผ age ๊ฐ์ ์์ฑ, ์ฆ Fields๊ฐ ๋ค์ด์๊ณ
๊ทธ๋ฆฌ๊ณ ํ๋์ด๋ผ๊ณ ๋ณผ ์ ์๋ method๊ฐ ๋ค์ด์์ต๋๋ค.
๊ทธ๋์ ํด๋์ค(Class)๋ ์กฐ๊ธ ๋ ์ฐ๊ด์๋ ๋ฐ์ดํฐ๋ค์ ๋ฌถ์ด๋์,
Fields์ method๊ฐ ์ข
ํฉ์ ์ผ๋ก ๋ฌถ์ฌ์๋ ๊ฒ์ ๋งํฉ๋๋ค.
๊ฐํน ํด๋์ค(Class) ์์๋ method๋ ๋ค์ด์์ง ์๊ณ data๋ง, ์ฆ Fields๋ง ๋ค์ด์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ฃผ๋ก ์ด๋ฐ ๋ฐฉ๋ฒ์ ๋ง์ด ์ฐ๊ณ , ์ด๋ฅผ data Class ๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
ํด๋์ค(Class) ์์์๋ ๋ด๋ถ์ ์ผ๋ก ๋ณด์ด๋ ๋ณ์์, ๋ฐ์์ ๋ณด์ผ ์ ์๋ ๋ณ์๋ค์ ๋๋ ์ ์๋๋ฐ
์ด๋ฐ ๊ฒ๋ค์ encapsulation(์บก์ํ)๋ผ๊ณ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํด๋์ค(Class)๋ฅผ ์ด์ฉํด์ ์์(Inheritance)๊ณผ, ๋คํ์ฑ(Polymorphism)์ด ์ผ์ด๋ ์ ์๋๋ฐ
์ด๋ฐ ๋ชจ๋ ๊ฒ๋ค์ด ๊ฐ๋ฅํ ๊ฒ์ด ๋ฐ๋ก ๊ฐ์ฒด์งํฅ ์ธ์ด์
๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก ์ด์๊ฐ๊ณ ์๋ ์ธ์์๋ ์๋ง์ ๋ฌผ์ฒด์ ์ฌ๋ฌผ์ด ์กด์ฌํ๋๋ฐ
์ด๋ ๊ฒ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋๋ ์ฌ๋ฌผ๊ณผ ๋ฌผ์ฒด๋ค์ class๋ก, object๋ก ์ ์ํด์ ํ๋ก๊ทธ๋๋ฐํ๋ ๊ฒ์ด
์กฐ๊ธ ๋ ์์ฐ์ค๋ฝ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๋ค์ด ์กฐ๊ธ ๋ ํธํ๊ณ ์ ์ฐํ๊ฒ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์์ต๋๋ค.
๊ฐ์ฒด ์งํฅ ์ธ์ด๋ก ํ๋ก๊ทธ๋๋ฐ์ ์ํ๋ ๊ฐ๋ฐ์๋?
ํ์ด์ผ ํ๋ ๋ฌธ์ ๋ ๊ตฌํํด์ผ ํ๋ ๋ฌธ์ ๋ฅผ ๊ฐ์ฒด๋ก ์ ์ ์ํด์ ๋ง๋ค ์ ์๋ ๊ฐ๋ฐ์๋ฅผ ๋งํฉ๋๋ค.
ํด๋์ค๋ ๋ถ์ด๋นต์ ๋ง๋ค ์ ์๋ ํ์ ๋งํฉ๋๋ค.
์ฒญ์ฌ์ง์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๊ณ template(ํ
ํ๋ฆฟ) ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค.
ํด๋์ค ์์ฒด์๋ data๊ฐ ๋ค์ด์์ง ์๊ณ template๋ง ์ ์ํด ๋์ต๋๋ค.
์ด ํด๋์ค์๋ ์ด๋ฐ data๋ง ๋ค์ด์ฌ ์ ์์ด ๋ผ๊ณ ์ ์๋ง ํด๋๊ณ ํ ๋ฒ๋ง ์ ์ธํฉ๋๋ค.
์ด ํด๋์ค๋ฅผ ์ด์ฉํด์ ์ค์ ๋ก data๋ฅผ ๋ฃ์ด์ ๋ง๋๋ ๊ฒ์ด Object์ ๋๋ค.
ํด๋์ค๋ฅผ ์ด์ฉํด์ ์๋ก์ด instance๋ฅผ ์์ฑํ๋ฉด Object๊ฐ ๋ฉ๋๋ค.
Object๋ ํด๋์ค๋ฅผ ์ด์ฉํด์ ๊ต์ฅํ ๋ง์ด ๋ง๋ค ์ ์๊ณ ํด๋์ค๋ ์ ์๋ง ํด๋์ ๊ฒ์ด๋ผ์
์ค์ ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ์ง ์์ง๋ง ์ค์ ๋ก data๋ฅผ ๋ฃ์ผ๋ฉด Object๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋์ ๋ถ์ด๋นต์ด๋ผ๋ ํด๋์ค๋ฅผ ์ด์ฉํด์ ํฅ์ ๋ฃ์ผ๋ฉด ํฅ ๋ถ์ด๋นต์ด ๋๊ณ ,
์ํฌ๋ฆผ์ ๋ฃ์ผ๋ฉด ์ํฌ๋ฆผ ๋ถ์ด๋นต์ด ๋ฉ๋๋ค
์ด๋ ๊ฒ ๋ง๋ค์ด์ง ๋ถ์ด๋นต ์์ฒด๋ Object์ด๊ณ .
๋ถ์ด๋นต์ ๋ง๋ค๊ธฐ ์ํด ์ ์ํ ๋ถ์ด๋นต ํ์ Class์ ๋๋ค.
๐ Tomorrow
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ ๊ฐ์ ์๊ฐ
- ์ค๋ ๊ณํ ์ก์๋์ ๊ฒ ์ํ