๐ class๋?
๐ constructor(์์ฑ์)
๐ ์์ (extends)
๐ ์ ๋ต ํจํด
๐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ํน์ง
๐ MVC ํจํด
ํด๋์ค(class)
๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ํน์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ณ์์ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ์ผ์ข
์ ํ์ด๋ค.
๊ฐ์ฒด๋ฅผ ์ ์ํ๊ธฐ ์ํ ์ํ(๋ฉค๋ฒ ๋ณ์)์ ๋ฉ์๋(ํจ์)๋ก ๊ตฌ์ฑ๋๋ค.
์ฆ, ํด๋์ค(class)
๋ ๋ฌผ๊ฑด ๋ง๋๋ ์ค๋ช
์๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
ํด๋์ค ์์์ ๋ณ์๋ฅผ ๋ฃ์ด์ค ๋๋ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ let, const ๋ฑ์ ์ฌ์ฉํ์ง ์๋๋ค.
new Monster() : new ์ฐ์ฐ์์ ์์ฑ์ ํจ์๋ฅผ ์ฌ์ฉํด ์๋ก์ด ๊ฐ์ฒด(mymonster)๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค.
Monster Class ๋ด๋ถ์ ์กด์ฌํ๋ ํจ์๋ค์ ๋ํด .
์ ํตํด ์ ๊ทผํ ์ ์๋ค.
์๋ก์ด ๊ฐ์ฒด ๋์ , class๋ฅผ ๊ฐ์ง๊ณ โ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํด ์ฃผ์๋คโ ๋ผ๊ณ ๋ ๋งํ๋ค.
// index.js class Monster { power = 10 attack = () => { console.log("๊ณต๊ฒฉํ์!!") } run = () => { console.log("๋๋ง๊ฐ์!!") } } const mymonster1 = new Monster() mymonster1.attack() mymonster1.run() const mymonster2 = new Monster() mymonster2.attack() mymonster2.run()
class ๋ด๋ถ์ ์ด๋ ํ ํจ์ ์์ ๋ ๋ค๋ฅธ ํจ์๋ฅผ ์คํ์ํค๊ณ ์ ํ ๋, ๋๋ ์ด๋ ํ ํจ์ ์์์ ๋ณ์์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ผ ํ ๋ ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ค.
this
๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค ๋ด๋ถ์ ์กด์ฌํ๋ ๋ค๋ฅธ ํจ์ ๋๋ ๋ณ์๋ฅผ ํจ์ ๋ด์์ ์ฌ์ฉํ ์ ์๋ค.
์๋์์ this๋ Monster class๋ฅผ ์๋ฏธํ๋ค.
// index.js class Monster { power = 10; attack = () => { console.log("๊ณต๊ฒฉํ์!!"); console.log("๋ด ๊ณต๊ฒฉ๋ ฅ์ " + this.power + "์ผ!!!"); }; run = () => { console.log("๋๋ง๊ฐ์!!"); }; } const mymonster1 = new Monster(); mymonster1.attack(); mymonster1.power(); const mymonster2 = new Monster(); mymonster2.attack(); mymonster2.run();
๋ด์ฅํจ์ constructor() ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ธฐ๊ฐ์ ์์ฑํด ์ค ์ ์๋ค.
constructor() : Monster๋ฅผ ๋ง๋ค ๋(์์ฑํ ๋) ์คํํด์ฃผ๋ ํจ์์ด๋ค. ๋ฐ๋ผ์, new Monster๋ฅผ ํ ๋, constructor ํจ์ ๋ด๋ถ๊ฐ ์คํ ๋๋ค.
mymonster2 ๋ ๋๊ฒจ๋ฐ์ ์ธ์์ ํจ๊ปย constructor๊ฐ ์๋์ผ๋ก ์คํ๋๋ค. ์ด๋ ์ธ์ย 50์ด aaa๋ผ๋ ์ด๋ฆ์ผ๋กย this.power์ ํ ๋นํด ์ค์ผ๋ก์จ ์ด๊ธฐ๊ฐ์ด ๋ค์ ์์ฑ๋๊ฒ ๋๋ ๊ฒ์ด๋ค.
// index.js class Monster { power = 10; constructor(qqq) { this.power = qqq; } attack = () => { console.log("๊ณต๊ฒฉํ์!!"); console.log("๋ด ๊ณต๊ฒฉ๋ ฅ์ " + this.power + "์ผ!!!"); }; run = () => { console.log("๋๋ง๊ฐ์!!"); }; } const mymonster1 = new Monster(20); mymonster1.attack(); mymonster1.run(); const mymonster2 = new Monster(50); mymonster2.attack(); mymonster2.run();
์๋ก ๋ค๋ฅธ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋, ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๋ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ผ ํ ๋๋ ์์์ ์ฌ์ฉํ์ฌ์ผ ํ๋ค.
๊ณตํต ๊ธฐ๋ฅ๋ค์ Monster ํด๋์ค๋ก ๋ฌถ์ด์ฃผ๊ณ extends๋ฅผ ํตํด์ ๊ณต์ค๋ชฌ์คํฐ์ ์ง์๋ชฌ์คํฐ์ ์์ํด ์ค์ผ๋ก์จ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๋ง๋ ๋ค.
super
: ์์ฑ์ constructor๋ ๊ณต์ค๋ชฌ์คํฐ์ ์ง์๋ชฌ์คํฐ์์ ๋์ผํ๊ฒ ์ฌ์ฉํ ์ ์์ง๋ง, power ๋ณ์๋ ์์ํด ์ค Monster ๋ด๋ถ์ ์กด์ฌํ๋ฏ๋ก, Monster class ๋ด๋ถ์ ์๋ constructor๋ก ์ธ์๋ฅผ ๋๊ฒจ ์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
// index.js class Monster { power = 10 constructor(qqq){ this.power = qqq } attack = () => { console.log("๊ณต๊ฒฉํ์!!") console.log("๋ด ๊ณต๊ฒฉ๋ ฅ์ " + this.power + "์ผ!!!") } } class ๊ณต์ค๋ชฌ์คํฐ extends Monster { constructor(aaa){ super(aaa) } run = () => { console.log("๋ ๋ผ์ ๋๋ง๊ฐ์!!") } } class ์ง์๋ชฌ์คํฐ extends Monster { constructor(bbb){ super(bbb) } run = () => { console.log("๋ฐ์ด์ ๋๋ง๊ฐ์!!") } } const mymonster1 = new ๊ณต์ค๋ชฌ์คํฐ(20) mymonster1.attack() mymonster1.run() const mymonster2 = new ์ง์๋ชฌ์คํฐ(50) mymonster2.attack() mymonster2.run()
ํ๋์ Monster๋ฅผ ๋ง๋ค์ด๋๊ณ , ๋ฌด์จ ๊ธฐ๋ฅ์ ๋ฃ์ด์ฃผ๋์ ๋ฐ๋ผ์ ์ด Monster๋ค์ด ์๋ก ๋ค๋ฅธ Monster๊ฐ ๋๋๋ก ๋ง๋ ๋ค.
new Monster
๋ฅผ ํตํด ๋ชฌ์คํฐ๋ฅผ ๋ง๋ค ๋, ๋ถํ(๋ถํ Class)์ผ๋ก ์กด์ฌํ๋ ๊ณต์ค ๋ถํ(new ๊ณต์ค๋ถํ()
)๊ณผ ์ง์ ๋ถํ(new ์ง์๋ถํ()
)์ ๊ฐ๊ฐ ๋ฃ์ด์ค๋ค.
๊ฐ ๋ถํ๋ค์ Monster Class ๋ด๋ถ์ constructor ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ค.
Monster Class ๋ด๋ถ์ run ํจ์๋ฅผ ๋ง๋ค์ด ๋ถํ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ Monster 2๋ง๋ฆฌ๊ฐ ๋ง๋ค์ด์ง๊ฒ ๋๋ ๊ฒ์ด๋ค.
Monster๋ ๊ณ ์ ์์ผ ๋ ์ฑ๋ก, ์์ ๋ถํ์ ๊ฐ์ ๋ผ์์ค์ผ๋ก ์๋ก ๋ค๋ฅธ Monster๋ฅผ ๋ง๋ค ์ ์๋ค.
์ด๋ค ๋ถํ์ ์ฌ์ฉํ๋๊ฒ ์ข์์ง, ์ ๋ต์ ์ผ๋ก ์ฌ์ฉํจ์ ์์ด ์ ๋ต ํจํด์ด๋ผ๊ณ ํ๋ค.
// index.js class ๊ณต์ค๋ถํ { run = () => { console.log("๋ ๋ผ์ ๋๋ง๊ฐ์!!") } } class ์ง์๋ถํ { run = () => { console.log("๋ฐ์ด์ ๋๋ง๊ฐ์!!") } } class Monster { power = 10 qqq; constructor(๋ถํ){ this.qqq = ๋ถํ } attack = () => { console.log("๊ณต๊ฒฉํ์!!") console.log("๋ด ๊ณต๊ฒฉ๋ ฅ์ " + this.power + "์ผ!!!") } run = () => { this.qqq.run() } } const mymonster1 = new Monster(new ๊ณต์ค๋ถํ()) mymonster1.attack() mymonster1.run() const mymonster2 = new Monster(new ์ง์๋ถํ()) mymonster2.attack() mymonster2.run()
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฌด์กฐ๊ฑด ์์์ ์ฌ์ฉํ๊ฑฐ๋ ์ ๋ต ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด ์๋๋ค.
์๋น์ค ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ฉฐ, ์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ ํตํด ๊ฐ๋ ์ฑ ๋ฐ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ธฐ ์ํด ์ฌ์ฉ๋์ด์ผ ํ๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋?
์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์ ํจ๋ฌ๋ค์ย ์ค ํ๋์ด๋ค.
์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณด๋ ์๊ฐ์์ ๋ฒ์ด๋ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ๋ ๋จ์, ์ฆ "๊ฐ์ฒด"๋ค์ ๋ชจ์์ผ๋ก ํ์ ํ๊ณ ์ ํ๋ ๊ฒ์ด๋ค.
์ธ๊ฐ ์ค์ฌ์ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋ผ๊ณ ํ ์ ์๋ค.
ํ๋ก๊ทธ๋๋ฐ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํ ์์ผย ์ํ์ ํ์๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ก ๋ง๋ค๊ณ , ๊ฐ์ฒด๋ค๊ฐ์ ์ํธ์์ฉ์ ํตํด ๋ก์ง์ ๊ตฌ์ฑํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ด๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ๋ฉด ์ฝ๋ ์ฌ์ฌ์ฉ์ด ์ฌ์ฐ๋ฉฐ, ์ ์ง๋ณด์๊ฐ ๊ฐํธํ๊ณ ์ง๊ด์ ์ธ ์ฝ๋ ๋ถ์์ด ๊ฐ๋ฅํ ์ฅ์ ์ด ์๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง
์ถ์ํ๋ย ๋ชฉ์ ๊ณผ ๊ด๋ จ์ด ์๋ ๋ถ๋ถ์ ์์ ๊ณ ํ์ํ ๋ถ๋ถ๋ง์ ํํํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฌ๋ฌผ๋ค์ ๊ณตํต์ ์ธ ํน์ง, ์ฆย ์ถ์๋ ํน์ง์ ํ์ ํด ์ธ์์ ๋์์ผ๋ก ์ผ๋ ๊ฒ์ ๋งํ๋ค.
์ถ์ํ๋ ๊ตฌ์ฒด์ ์ธ ์ฌ๋ฌผ๋ค์ ๊ณตํต์ ์ธ ํน์ง์ ํ์ ํด์ ์ด๋ฅผ ํ๋์ ๊ฐ๋ (์งํฉ)์ผ๋ก ๋ค๋ฃจ๋ ์๋จ์ด๋ค.
์บก์ํ๋ ํ๋์ ๊ฐ์ฒด์ ๋ํด ๊ทธ ๊ฐ์ฒด๊ฐย ํน์ ํ ๋ชฉ์ ์ ์ํ ํ์ํ ๋ณ์๋ ๋ฉ์๋๋ฅผ ํ๋๋ก ๋ฌถ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์์ง๋ : ํด๋์ค๋ ๋ชจ๋ ์์ ์์๊ฐ ์ผ๋ง๋ ๋ฐ์ ํ๊ฒ ๊ด๋ จ ์๋์ง๋ฅผ ๋ํ๋ธ๋ค.
๊ฒฐํฉ๋ : ์ด๋ค ๊ธฐ๋ฅ์ ์คํํ๋ ๋ฐ ๋ค๋ฅธ ํด๋์ค๋ ๋ชจ๋์ ์ผ๋ง๋ ์์กดํ๋์ง๋ฅผ ๋ํ๋ธ๋ค.
์ ๋ณด์๋ : ์บก์ํ๋ย ์ ๋ณด์๋์ ํตํด ๋์ ์์ง๋์ ๋ฎ์ ๊ฒฐํฉ๋ ฅ์ ๊ฐ๊ฒ ๋๋ค.
ํ์ ์๋ ์ ๋ณด๋ ์ธ๋ถ์์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์ ํํ๋ ๊ฒ์ด๋ค.
private ํค์๋๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํด ์ ๊ทผ์ ์ ํํ๋ค.
์์์ด๋ ๊ธฐ์กดย ์์ ํด๋์ค์ ๊ทผ๊ฑฐํ์ฌ ์๋กญ๊ฒ ํด๋์ค์ ํ์๋ฅผ ์ ์ํ ์ ์๊ฒ ๋์์ฃผ๋ ๊ฐ๋ ์ด๋ค
๊ธฐ์กด ํด๋์ค์ย ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ ์ฌ์ฌ์ฉํ ์ ์์ผ๋ฉด์,ย ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ค.
์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ๊ฐ์ง ๊ณตํต๋ ํน์ฑ์ ๋ถ๊ฐ์์ผ ํ๋์ ๊ฐ๋
์ด๋ ๋ฒ์น์ผ๋ก ์ฑ๋ฆฝ์ํค๋ ๊ณผ์ ์ด๋ค.
๋ฐ๋ผ์ ๊ฐ์ ํน์ง์ด ์๋ ํด๋์ค๋ฅผ ๊ทธ๋๋ก ๋ฌผ๋ ค๋ฐ์, ๋ค์ ์์ฑํ ํ์ ์์ด ์ฌ์ฌ์ฉ์ผ๋ก ํจ์จ์ฑ์ ๋์ธ๋ค.
์ด๋ฅผ ํตํดย ๋คํ์ฑ์ ํ๋ณดํ ์ ์๋ค.
๋คํ์ฑ์ ์์์ ํตํดย ๊ธฐ๋ฅ์ ํ์ฅํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค. ์ฆ, ๋คํ์ฑ์ ํํ๊ฐ ๊ฐ์๋ฐ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ํ๊ณ ์๋ก ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ฐ์์ ๋ ๊ฐ์์ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ๋ฅ๋ ฅ์ด๋ค.
๋คํ์ฑ์ ์์๊ณผ ์ฐ๊ณ๋์ด ๋์ํ๋ฉด ๋งค์ฐ ๊ฐ๋ ฅํ ํ์ ๋ฐํํ๋ค.
๋คํ์ฑ๊ณผ ์ผ๋ฐํ ๊ด๊ณ๋ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํ์ฌ ์ฌ์ฌ์ฉ๊ณผ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋๋ก ๋์์ฃผ๊ณ ๋ณํ์๋ ์ ์ฐํ๊ฒ ๋์ฒํ ์ ์๊ฒ ํด์ค๋ค.
๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ฉ์๋๋ง๋คย ๋ค๋ฅธ ์ฉ๋๋ก ์ฌ์ฉ๋๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ๋ฌผ๋ ๋ค๋ฅด๊ฒ ๊ตฌํํ ์ ์๊ฒ ๋ง๋๋ ๊ฐ๋ ์ด๋ค.
์ค๋ฒ๋ก๋ฉ์ด ๊ฐ๋ฅํ๋ ค๋ฉด ๋ฉ์๋๋ผ๋ฆฌ ์ด๋ฆ์ ๊ฐ์ง๋ง ๋งค๊ฐ๋ณ์์ ๊ฐฏ์๋ ๋ฐ์ดํฐ ํ์ ์ด ๋ค๋ฅด๋ฉด ์ค๋ฒ๋ก๋ฉ์ด ์ ์ฉ๋๋ค.
๋์์ธ ํจํด์ด๋ ํ๋ก๊ทธ๋จ์ด๋ ์ด๋ค ํน์ ํ ๊ฒ์ ๊ฐ๋ฐํ๋ ์ค์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋ค์ ์ ๋ฆฌํด์, ์ํฉ์ ๋ฐ๋ผ ๊ฐํธํ๊ฒ ์ ์ฉํด์ ์ธ ์ ์๋ ๊ฒ์ ์ ๋ฆฌํ์ฌ ํน์ ํ "๊ท์ฝ"์ ํตํด ์ฝ๊ฒ ์ธ ์ ์๋ ํํ๋ก ๋ง๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋์์ธ ํจํด์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง, ์ค๋์ MVC ํจํด์ ๋ํด ํ์ตํ์๋ค.
MVC ๋ Model, View, Controller์ ์ฝ์์ด๋ฉฐ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ , ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ๋ ๊ทธ ๊ตฌ์ฑ์์๋ฅผ ์ธ๊ฐ์ง์ ์ญํ ๋ก ๊ตฌ๋ถํ ํจํด์ด๋ค.
controllers
: ๋ฏธ๋ค์จ์ด ํจ์๋ฅผ ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํ๋ ๊ณณ.
models
: DB ์์ฑ์ ๊ด๋ฆฌํด์ฃผ๋ ๊ณณ.
view
: ํ๋ฉด์ ๋ณด์ฌ์ง๋ ํ์ผ๋ค(html ํ์ผ)์ ๊ด๋ฆฌํด์ฃผ๋ ํด๋. (ํ๋ก ํธ์๋)
์์ ๊ทธ๋ฆผ์ ๋ณด๊ฒ๋๋ฉด ์ฌ์ฉ์๊ฐ controller
๋ฅผ ์กฐ์ํ๋ฉด controller๋ model
์ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๊ทธ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์๊ฐ์ ์ธ ํํ์ ๋ด๋นํ๋ View
๋ฅผ ์ ์ดํด์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๊ฒ ๋๋ค.
์ค๋์ ํ๋ก์ ํธ์ ๊ฐ์ ํฐ ๊ท๋ชจ์ ์ฝ๋๋ฅผ ์์ฑํ ๋, ์ฝ๋์ ๊ฐ๋ ์ฑ ๋ฐ ์ ์ง๋ณด์๋ฅผ ํธํ๊ฒ ํ๊ธฐ ์ํ ๋์์ธ ํจํด์ ๋ํ์ฌ ํ์ตํ์๋ค. ๋์์ธํจํด์ ๊ธฐ์กด์ ๋ง๋ค์๋ ํ๋ก์ ํธ์ ์ ์ฉํ์ฌ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํด๋ณด๊ณ ์ง์ ๋์ผ๋ก ์ฝ๋์ ๋ณํ๋ฅผ ๋ณด๋, ํ์คํ ํ๋ฒ์ ์์ฑํ๋ ๊ฒ๋ณด๋ค ๊ฐ๋ ์ฑ์ด ๋์ ๋๊ฒ ๋์์ก์ผ๋ฉฐ, ๋ฐ์ดํฐ์ ํ๋ฆ์ ์ฝ๊ณ ๋ฐ๋ผ๊ฐ๋๊ฒ ํจ์ฌ ์์ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค. ์ด๋ฌํ ๋์์ธํจํด๋ค์ ์ ์ฉํ์ฌ ๋ง๋๋ ๊ฒ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ๋งํผ ์ค์ํ๊ธฐ ๋๋ฌธ์ ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ, ๋์์ธ ํจํด์ ์ ์ฉํด์ผ๊ฒ ๋ค๋ ๋ง์๊ฐ์ง์ ํ๋ค.