- ๊ณ ์ฐจํจ์
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ํด๋์ค์ ์ธ์คํด์ค
๊ณ ์ฐจ ํจ์(Higher-order function)๋ '๋ค๋ฅธ ํจ์๋ฅผ ์ ๋ฌ์ธ์๋ก ๋ฐ๊ฑฐ๋ ํจ์์คํ์ ๊ฒฐ๊ณผ๋ฅผ ํจ์๋ก ๋ฐํํ๋ ํจ์'๋ฅผ ๋ปํฉ๋๋ค
์ค์ํํธ์ ํจ์(ํด๋ก์ )๋ ์ผ๊ธ์๋ฏผ(์ผ๊ธ๊ฐ์ฒด)์ด๊ธฐ ๋๋ฌธ์ ํจ์์ ์ ๋ฌ์ธ์๋ก ์ ๋ฌํ ์ ์์ผ๋ฉฐ, ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ฐํํ ์ ์์ต๋๋ค
์ด๋ฒ ํํธ์์๋ ์ค์ํํธ ํ์ค๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ์ ์ฉํ ๊ณ ์ฐจํจ์[map, filter, reduce]์ ๋ํด ์์๋ด ๋๋ค
map, filter, reduce ํจ์๋ ์ค์ํํธ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ปจํ ์ด๋ ํ์ (Array, Set, Dictionary ๋ฑ)์ ๊ตฌํ๋์ด ์์ต๋๋ค
mapํจ์๋ ์ปจํ ์ด๋ ๋ด๋ถ์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณํ(transform)ํ์ฌ ์๋ก์ด ์ปจํ ์ด๋๋ฅผ ์์ฑํฉ๋๋ค.
filterํจ์๋ ์ปจํ ์ด๋ ๋ด๋ถ์ ๊ฐ์ ๊ฑธ๋ฌ์ ์๋ก์ด ์ปจํ ์ด๋๋ก ์ถ์ถํฉ๋๋ค.
reduceํจ์๋ ์ปจํ ์ด๋ ๋ด๋ถ์ ์ฝํ ์ธ ๋ฅผ ํ๋๋ก ํตํฉํฉ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด ์งํฅ ์ธ์ด (OOP: Object - Oriented Programming language)์ด๋ค.
- ๊ฐ์ฒด๋ฅผ ํตํด ํ์ค์ ๋ชจ๋ธ์ ๊ตฌํํ ์ ์๋ค. ํด๋์ค๋ ๋น์ทํ ๊ฐ์ฒด๋ค์ ๋น ๋ฅด๊ฒ ๋ง๋ค์ด๋ด๋๋ก ๋์์ค๋ค.
- ํด๋์ค๋ ๊ฐ์ฒด์ ํ ํ๋ฆฟ์ด๋ค
- ํด๋์ค๋ฅผ ๋ง๋ค๋๋ class ๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ๊ณ ํด๋์ค ์์๋ ์์ฑ์(constructor)๊ฐ ์๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ํด๋์ค์ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ ์์ฑ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
- ์ธ์คํด์ค๋ ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์ฒด์ด๋ค.
- ํด๋์ค๋ก ๋ง๋ ๊ฐ์ฒด๊ฐ ์ธ์คํด์ค๋ผ๊ณ ์๊ฐํ๋ฉด ์ฌ์.
์ ์ฝ๋์์ surgeonCurry์ surgeonDurant๋ Surgeon์ ์ธ์คํด์ค๋ฅผ ๋ด๊ณ ์๋ ๋ณ์๋ค์ด๋ค.
๋ณ์์ ํด๋์ค๋ฅผ ์ ์ฅํ ๋๋ new ํค์๋๋ฅผ ์ฌ์ฉํ๋ค.
getter ๋ฉ์๋๋ฅผ ์์ฑํ๊ธฐ ์ํด ์๋ ๋ณ์๋ค์ ์ด๋ฆ์์ ์ธ๋์ค์ฝ์ด(_)๋ฅผ ๋ถ์๋ค.
๐ก ์ฃผ์ : ํด๋์ค๋ ๊ฐ ๋ฉ์๋๋ค์ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ฝค๋ง๊ฐ ํ์ํ์ง ์๋ค
๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ ๋ณดํต ๊ฐ์ฒด์ ๋์ผํ๋ค.
๐ Inheritance ์์
๋ถ๋ชจ ํด๋์ค(parent class)๋ ์์ ํด๋์ค(child class)๋ค์ ๊ณตํต๋ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์๋ค.
์์์ ์ด์ฉํ๋ฉด ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๋ฌผ๋ ค๋ฐ๊ฒ ๋๋ค.
๋, ๋ถ๋ชจ ํด๋์ค์ ์๋ ์์ฑ์ด๋ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
ํด๋์ค๋ฅผ ์์ํ ๋๋ extends์ super๊ฐ ํ์ํ๋ค.
๐ก ์ฃผ์ํ ์ ์ ์์ฑ์(constructor)์์ ๋ฐ๋์ super๋ฅผ ๋จผ์ ์จ์ผํ๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด reference error๊ฐ ๋ฐ์ํ๋ค
๐ก ์์์ ์ฅ์
์ ์ ๋ฉ์๋๋ ๋ถ๋ชจ ํด๋์ค์์ ์ธ์ ๋ ์ง ์ง์ ๊ฐ์ ธ์์ ์ธ ์ ์์ง๋ง ๊ฐ ์ธ์คํด์ค์์๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๋ค.
(= ์ธ์คํด์ค๋ก ๋ง๋ ๊ฐ์ฒด์๋ ์ ์ ๋ฉ์๋๊ฐ ์กด์ฌX)
์ ์ ๋ฉ์๋๋ ๋ฉ์๋ ์์ static์ ๋ถ์ฌ์ ๋ง๋ ๋ค.
์ด๋ฒ์ฃผ ์ธ์ 1 ์ด ๋๋์๋ง์ ๋ชธ์ด์ด ์๋ค. ์ฒด๋ ฅ๊ด๋ฆฌ๋ฅผ ์ ๋ชปํด์ ์ํ์ค์ ๋ถ๊ณ ์์์ ์กฐ๋ฌธ์ ๊ฐ์ผํ๋ ์ํฉ์ ์ ๋ง ๋ชธ์ ์ด๋ฃจ ๋งํ ์ ์์ ์ ๋๋ก ์ํ ๋ค. ์ด๋ฒ์ฃผ ๋ณต์ต์ ์ ๋ง ํ๋๋ ํ์ง ๋ชปํ๊ณ ์ฃผ๋ง์ ๋ชฐ์์ ๋ธ๋ก๊น ์ ํ๊ณ ์๋ค. ์ ์ฒด์ ์ธ ๊ทธ๋ฆผ์ ๊ทธ๋ ค์ง๊ณ ์์ง๋ง ์์ํ์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์ ๊ฒ ๊ฐ๋ค. ๊ทธ๋๋ ํ๋ ํ๋ ์ด์ ๋ถ์ฌ๊ฐ๋ฉด ๊ฐ๋ ๋ค์ ์ ๋ฆฌํ๋ ์ฃผ๋ง์ ๋ง๋ฌด๋ฆฌ ํด์ผ๊ฒ ๋ค.