WIL 5์ฃผ์ฐจ

hyena_leeยท2023๋…„ 1์›” 15์ผ
0

WIL

๋ชฉ๋ก ๋ณด๊ธฐ
9/21
post-thumbnail

๐Ÿ—“ ๋ฐฐ์šด ๋‚ด์šฉ

  1. ๊ณ ์ฐจํ•จ์ˆ˜
  2. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  3. ํด๋ž˜์Šค์™€ ์ธ์Šคํ„ด์Šค

1. ๊ณ ์ฐจ ํ•จ์ˆ˜

๊ณ ์ฐจ ํ•จ์ˆ˜(Higher-order function)๋Š” '๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ์ธ์ž๋กœ ๋ฐ›๊ฑฐ๋‚˜ ํ•จ์ˆ˜์‹คํ–‰์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•จ์ˆ˜๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜'๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค
์Šค์œ„ํ”„ํŠธ์˜ ํ•จ์ˆ˜(ํด๋กœ์ €)๋Š” ์ผ๊ธ‰์‹œ๋ฏผ(์ผ๊ธ‰๊ฐ์ฒด)์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜์˜ ์ „๋‹ฌ์ธ์ž๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์ด๋ฒˆ ํŒŒํŠธ์—์„œ๋Š” ์Šค์œ„ํ”„ํŠธ ํ‘œ์ค€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์œ ์šฉํ•œ ๊ณ ์ฐจํ•จ์ˆ˜[map, filter, reduce]์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค
map, filter, reduce ํ•จ์ˆ˜๋Š” ์Šค์œ„ํ”„ํŠธ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ปจํ…Œ์ด๋„ˆ ํƒ€์ž…(Array, Set, Dictionary ๋“ฑ)์— ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค

2. map

mapํ•จ์ˆ˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ˜•(transform)ํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

3.filter

filterํ•จ์ˆ˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๊ฐ’์„ ๊ฑธ๋Ÿฌ์„œ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋กœ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

4. reduce

reduceํ•จ์ˆ˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ์ฝ˜ํ…์ธ ๋ฅผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”— Class ์˜ ๊ฐœ๋…

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด (OOP: Object - Oriented Programming language)์ด๋‹ค.
  • ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํ˜„์‹ค์˜ ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ž˜์Šค๋Š” ๋น„์Šทํ•œ ๊ฐ์ฒด๋“ค์„ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด๋‚ด๋„๋ก ๋„์™€์ค€๋‹ค.
  • ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ํ…œํ”Œ๋ฆฟ์ด๋‹ค
  • ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋•Œ๋Š” class ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํด๋ž˜์Šค ์•ˆ์—๋Š” ์ƒ์„ฑ์ž(constructor)๊ฐ€ ์žˆ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ž˜์Šค์˜ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์ƒ์„ฑ์ž ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

๐Ÿ“ Instance ์ธ์Šคํ„ด์Šค

  • ์ธ์Šคํ„ด์Šค๋Š” ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์ด๋‹ค.
  • ํด๋ž˜์Šค๋กœ ๋งŒ๋“  ๊ฐ์ฒด๊ฐ€ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฌ์›€.

์œ„ ์ฝ”๋“œ์—์„œ surgeonCurry์™€ surgeonDurant๋Š” Surgeon์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋“ค์ด๋‹ค.
๋ณ€์ˆ˜์— ํด๋ž˜์Šค๋ฅผ ์ €์žฅํ•  ๋•Œ๋Š” new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

โœ๏ธ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ

getter ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์›๋ž˜ ๋ณ€์ˆ˜๋“ค์˜ ์ด๋ฆ„์•ž์— ์–ธ๋”์Šค์ฝ”์–ด(_)๋ฅผ ๋ถ™์˜€๋‹ค.
๐Ÿ’ก ์ฃผ์˜ : ํด๋ž˜์Šค๋Š” ๊ฐ ๋ฉ”์†Œ๋“œ๋“ค์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์ฝค๋งˆ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค
๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์€ ๋ณดํ†ต ๊ฐ์ฒด์™€ ๋™์ผํ•˜๋‹ค.

๐Ÿ”Ž Inheritance ์ƒ์†

๋ถ€๋ชจ ํด๋ž˜์Šค(parent class)๋Š” ์ž์‹ ํด๋ž˜์Šค(child class)๋“ค์˜ ๊ณตํ†ต๋œ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ–๊ณ ์žˆ๋‹ค.
์ƒ์†์„ ์ด์šฉํ•˜๋ฉด ์ž์‹ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฌผ๋ ค๋ฐ›๊ฒŒ ๋œ๋‹ค.
๋˜, ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์—†๋Š” ์†์„ฑ์ด๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•  ๋•Œ๋Š” extends์™€ super๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  • super๋Š” ๋ถ€๋ชจ์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค
  • extends๋Š” ๋ถ€๋ชจ์˜ ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋“ค์„ ์ž์‹ ํด๋ž˜์Šค๋กœ ๊ฐ€์ ธ์˜ด

๐Ÿ’ก ์ฃผ์˜ํ•  ์ ์€ ์ƒ์„ฑ์ž(constructor)์•ˆ์— ๋ฐ˜๋“œ์‹œ super๋ฅผ ๋จผ์ € ์จ์•ผํ•œ๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด reference error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

๐Ÿ’ก ์ƒ์†์˜ ์žฅ์ 

  • ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฟ ์žˆ์„๋•Œ, ๋ถ€๋ชจ ํด๋ž˜์Šค๋งŒ ์ˆ˜์ •ํ•ด๋„ ์ „์ฒด์— ๋ฐ˜์˜๋จ
  • ์ƒ์†์„ ์“ฐ๋ฉด ์ฝ”๋“œ ํฌ๊ธฐ๋„ ์ค„์–ด๋“ฌ

โœ๏ธ Static Methods ์ •์  ๋ฉ”์†Œ๋“œ

์ •์  ๋ฉ”์†Œ๋“œ๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์–ธ์ œ๋“ ์ง€ ์ง์ ‘ ๊ฐ€์ ธ์™€์„œ ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ ์ธ์Šคํ„ด์Šค์—์„œ๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
(= ์ธ์Šคํ„ด์Šค๋กœ ๋งŒ๋“  ๊ฐ์ฒด์—๋Š” ์ •์  ๋ฉ”์†Œ๋“œ๊ฐ€ ์กด์žฌX)
์ •์  ๋ฉ”์†Œ๋“œ๋Š” ๋ฉ”์†Œ๋“œ ์•ž์— static์„ ๋ถ™์—ฌ์„œ ๋งŒ๋“ ๋‹ค.

๐ŸŒˆ ํšŒ๊ณ 

์ด๋ฒˆ์ฃผ ์„ธ์…˜1 ์ด ๋๋‚˜์ž๋งˆ์ž ๋ชธ์‚ด์ด ์™”๋‹ค. ์ฒด๋ ฅ๊ด€๋ฆฌ๋ฅผ ์ž˜ ๋ชปํ•ด์„œ ์•„ํŒŒ์˜ค์ž ๋ถ€๊ณ ์†Œ์‹์— ์กฐ๋ฌธ์„ ๊ฐ€์•ผํ•˜๋Š” ์ƒํ™ฉ์— ์ •๋ง ๋ชธ์„ ์ด๋ฃจ ๋งํ•  ์ˆ˜ ์—†์„ ์ •๋„๋ก ์•„ํŒ ๋‹ค. ์ด๋ฒˆ์ฃผ ๋ณต์Šต์€ ์ •๋ง ํ•˜๋‚˜๋„ ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ฃผ๋ง์— ๋ชฐ์•„์„œ ๋ธ”๋กœ๊น…์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ „์ฒด์ ์ธ ๊ทธ๋ฆผ์„ ๊ทธ๋ ค์ง€๊ณ  ์žˆ์ง€๋งŒ ์•„์›ƒํ’‹์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜๋„ ํ•˜๋‚˜ ํ•˜๋‚˜ ์‚ด์„ ๋ถ™์—ฌ๊ฐ€๋ฉด ๊ฐœ๋…๋“ค์„ ์ •๋ฆฌํ•˜๋Š” ์ฃผ๋ง์„ ๋งˆ๋ฌด๋ฆฌ ํ•ด์•ผ๊ฒ ๋‹ค.

profile
์‹ค์ˆ˜๋ฅผ ๋‘๋ ค์›Œ ๋ง๊ณ  ๊ณ„์† ๋„์ „ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ์—ฌ์ •!

0๊ฐœ์˜ ๋Œ“๊ธ€