[ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„] ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋ž€?

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„(Programming Paradigm)์ด๋ž€? ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ด€์ ์„ ๊ฐ–๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐ˜๋ฉด์—, ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ์ƒํƒœ ๊ฐ’์„ ์ง€๋‹ˆ์ง€ ์•Š์€ ํ•จ์ˆ˜ ๊ฐ’๋“ค์˜ ์—ฐ์†์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์„ ์–ธํ˜•๊ณผ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Declarative Programming)์ด๋ž€ "๋ฌด์—‡์„" ํ’€์–ด๋‚ด๊ฐ€๋Š”๊ฐ€์— ์ง‘์ค‘ํ•˜๋Š” ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋ฉฐ, "ํ”„๋กœ๊ทธ๋žจ์€ ํ•จ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์ด๋‹ค"๋ผ๋Š” ๋ช…์ œ๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋Š” ํŒจ๋Ÿฌ๋‹ค์ž„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด JavaScript๋กœ ์ž์—ฐ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์„๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. const ret = [1, 2, 3, 4..

CS/Design Pattern 2022. 10. 1. 16:19
[ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„] OOP์™€ FP

OOP๋ž€? OOP๋Š” Object Oriented Programming์˜ ์•ฝ์ž๋กœ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. class์™€ object์— ๊ธฐ๋ฐ˜ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„(๋””์ž์ธ ํŒจํ„ด)์œผ๋กœ, ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ผ๋ฆฌ ๋ฌถ์–ด์„œ class๋ฅผ ํ˜•์„ฑํ•˜๊ณ  ๊ทธ ์•ˆ์—์„œ object instance๋ฅผ ๋งŒ๋“ค์–ด ํ”„๋กœ๊ทธ๋žจ์„ ๋””์ž์ธ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ์ž๋ฐ”๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ํ‘œํ˜„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ๊ฐ์ฒด ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹ OOP์˜ ์žฅ์  ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ๋ฅ ์„ ๋†’์ด๊ณ  ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›€ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด์กด์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ(์บก์Šํ™”) OOP์˜ ํŠน์ง• 4๊ฐ€์ง€ ์บก์Šํ™”(Encapsulation) ์บก์Šํ™”๋Š” ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๋กœ์ง์€ ๊ฐ์ถ”๊ณ  ์™ธ๋ถ€์—๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์•ˆ์ •..

CS/Design Pattern 2022. 7. 3. 21:55