์ธ์ ํ๋ก๊ทธ๋๋ฐ (Programming of Life)์๋ ํ์ธ์? ๊ฐ๋ฐ์ ๋ ์ค์ ๋๋ค. ์ ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ๋ํ๊ณ ์ฆ๊ธฐ๋ฉฐ, ์ฝ๋ฉ์ด ์ทจ๋ฏธ์ธ ๊ฐ๋ฐ์์ ๋๋ค.์๋ ๊ฐ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ํด์ค๋ฉฐ ๋ ๊ฐ์ด์์ ํ๊ณ ์๋ ์๊ฐ์ด ์์ต๋๋ค. ๊ทธ๊ฒ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ด ์ธ์์ ๊ทธ๋๋ก ํฌ์ํ๋ค
ํ๋ก๊ทธ๋๋ฐ(์ํํธ์จ์ด ๊ฐ๋ฐ) ๋ถ์ผ์ ๊ด๋ จ๋ ์ ๋ช ํ ์ฌ๋๋ค์ ์์ฃผ ๋ง์์. ๊ทธ ์ค์์ ์ ๋ง ์์ฒญ๋๊ฒ ์ ๋ช ํ 3๋ช ์ ์ฌ๋๋ง ์๊ฐํ ๊ฒ์.๋น ๊ฒ์ด์ธ ๋ ์ ์ธ๊ณ ์ต๊ณ ์ ๋ถ์์ด๋ฉด์, ๊ฐ์ฅ ์ ๋ช ํ ๊ฐ๋ฐ์ ์ค ํ ๋ช ์ผ๋ก, Microsoft์ ์ฐฝ์ ์์ด์ฃ . ๋น ๊ฒ์ด์ธ ๋ 13์ด ๋๋ถํฐ ํ
์๋ฌ ๋ฉ์์ง๋ฅผ ์ ์ฝ๋ ๊ฒ์ ์ค์ ๋ก ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ฉด์ ํ์ํ ๋ก ์์๊ฐ์ผ ํ ๊ธฐ๋ณธ ๋๋ชฉ ์ค ํ๋์ผ.์ฐ๋ฆฌ์ ์ธ์์์ ์ธ์ ๋ ์ค์๋ฅผ ํ๋ ๊ฒ ์ฒ๋ผ, ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด์๋ ์์ฒ๊ฐ์ง, ์๋ง๊ฐ์ง ์ค์๋ฅผ ํ๊ฒ ๋ ๊ฑฐ์ผ. ์ค์๊ฐ ๋ฐ์ํ๋ค๋ฉด, ๊ทธ ์ค์์ ์์ธ์ ํ์ ํ๊ณ ์ด๋ป๊ฒ ๊ณ ์ณ
์ง๊ธ๊น์ง ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์ด์ด ์ข๊ฑฐ๋ ์ด์ง์ค์ ํ๋ค๋ฉด ์์ง ์๋ฌ๋ฅผ ๋ง๋์ง ๋ชปํ์ ์๋ ์๊ณ , ๊ทธ๋ ์ง ์์๋ค๋ฉด ๋ช ์ฐจ๋ก์ ์๋ฌ๋ฅผ ๋ง์ฃผ์ณค๊ฒ ์ง?์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ๋ฌธ์ ๋ฅผ ์ฐพ์๊ฐ๋ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ๋ฐฉ๋ฒ์ ์๋ ค์ค๊ฒ. ์ด๊ฒ์ ๋๋ฒ๊น (Debugging) ์ด๋ผ๊ณ ํด.์ฐ๋ฆฌ๋ค์ด ํํ ์ธ
์ถ์ํ(Abstract) ์ด ์ฑ ์์ ์ ๋ง ๊ฐ์ฅ ํต์ฌ์ ์ธ ๋จ์ด๋ฅผ ์ค๋ช ํ๋ ค๊ณ ํด. ์์ผ๋ก ์ด ์ฑ ์์ '์ถ์(Abstraction)', '์ถ์ํ(Abstract)' ๋ผ๋ ๋ง์ ์์ฃผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋ ๊ฑฐ์ผ. ์ด ๋จ์ด๋ฅผ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํด. ์ถ์ํ(Abstract) ๊ฐ
Skeleton UI ๊ตฌํํ๋ฉด ๋ ๋๋ง๊ณผ ๊ด๋ จ๋ API ๋ฅผ ์๊ฒ ์ชผ๊ฐ์ API ๊ฐ ์๋ตํ๋๋๋ก ํ๋ฉด์ ๊ฐ๊ฐ ๋ ๋๋งํ๊ธฐAPI Fetch ์์ ๊ณ ๋ ค & ๊ทธ ์ธ ์์ํ ๋ก์ง์ API ํธ์ถํ๊ธฐ ์ ์ ๋ชจ๋ ์ฒ๋ฆฌํ๊ธฐBack-end API ์์ฒด ์ฑ๋ฅํฅ์
Python ์์ฉ ํ๋ก์ ํธ(2) - ๋ฐ์ดํฐ ์๊ฐํ์ ๋ฐ์ดํฐ ๋ถ์
๊ตฌ๋ , ์์ ๋ฅผ ํ๋๋ค"์์ ๋ ์ ์์ผ๋ก ๋ฐ๋ ๊ฒ์ด๋ค." - ์ ๋ฌ๋ฏธ ๋ฆฌํํจ(p.55)๊ตฌ๋ ์ ๋์ผ๋ก ์์ ๋ฅผ ๊ตฌ๋งคํ๋ ํ์์ด๋ค.์ํ์ ์์ ํจ์ ์์ด์ ๋ฐ์ํ๋ ์ฌ๋ฌ๊ฐ์ง ์ฑ ์๋ค์ ์๋น์ค ์ ๊ณต์๊ฐ ์ง์ด์ง๋ ๊ฒ๊ณผ ์ค์น๋น, ๊ด๋ฆฌ๋น, ์๋ฆฌ๋น, ํ๊ธฐ ์ฒ๋ถ ๋ฑ์ ํฌํจํ ๋น์ฉ๊ณผ ๋ ธ๋ ฅ, ๊ทธ๋ฆฌ
2022๋ ๊ธฐ์ค, Node.js ์ ์๋ฒ์ฌ์ด๋ ํ๋ ์์ํฌ๋ 3๊ฐ๊ตฌ๋๋ก ๋๋๋ ๊ฒ ๊ฐ์ต๋๋ค.Next.jsNest.jsNuxt.js์ ๋ค N\_\_T ๋ก ์ด๋ฆ์ด ๋น์ทํ๋ค๋ ์ ์ ์ฐ์ฐ์ผ๊น์, ์๋ํ ๊ฑธ๊น์?Next.js ๋ React ๋ฅผ ์ํ ํ๋ ์์ํฌ์ด๋ฉฐ,Nuxt.js ๋
์คํ ์์ค (Open Source) ๋ฐฉ๊ธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋ฉด์, ์๋ฃ๊ตฌ์กฐ๋ ์ ๋๋ก ์ดํดํ๋ ค๋ฉด ๊ทธ๊ฒ๋ง ๋ฐ๋ก ์ฑ ํ๊ถ์ ๋ถ๋์ด ๋์ค๋ ์์ฃผ ์ค์ํ ์์ญ ์ด๋ผ๊ณ ํ๋๋ฐ, ์ด๋ฒ์๋ ๊ฐ๋ฐ์ธ์์ ์ ๋ง ์ค๋งํธํ๊ฒ ์ด์๊ฐ ์ ์๋๋ก ์์ฒญ๋ ๊ฟํ์ ์๋ ค์ฃผ๋ ค๊ณ ํด. ์ด ์คํ์์ค๋ฅผ ์ ๋
์ ์ด์ ์ง์ง ์์์ด์ผ. ๋๋์ด ์ฐ๋ฆฌ๊ฐ ๊ณต๋ถํ ๊ฒ๋ค์ ์ด์ฉํด์ ๋ฌด์ธ๊ฐ ๊ฐ์น์๋ ๊ฒ์ ๋ง๋ค์ด๋ณผ ์ฐจ๋ก๋ผ๊ตฌ!์ผ๋จ
์ฌ๊ธฐ๊น์ง ์ค๋๋ผ ๊ณ ์ํ์ด! ์ง๊ธ๊น์ง ๋ฐฐ์ ๋ ๊ฒ๋ค์ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ณธ์ค์ ๊ธฐ๋ณธ์ด์ผ. ์ด๋ฐ ๊ธฐ์ด์ ์ธ ์ง์์ ๋ฐฐ์ ์ผ๋ ์ด์ ๋ถํฐ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ฐ๋ฐ์ด๋ผ๋๊ฑธ ํด๋ด์ผ๊ฒ ์ง?!๊ทธ ์ ์ ์ง์ผ์ค์ผ ํ ๊ฒ๋ค์ด ์์ด.์ฐ๋ฆฌ์ ์ธ์์๋ '์์' ์ด๋ผ๋๊ฒ ์์์. ๊ตญ์ด์ฌ์ ์ ๋ฐ๋ฅด๋ฉด '์์'
'์๋ฃ๊ตฌ์กฐ' ๋ฅผ ์กฐ๊ธ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์จ๋ณด๋ฉด '๋ฐ์ดํฐ์ ๊ตฌ์กฐ' ๊ฐ ๋ผ.๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ๋ค๋ฃจ๋ '๋ฐฉ๋ฒ' ๋ค์ ๋งํด.๋ถ๋ช ํ ์ด์ผ๊ธฐํ์ง๋ง, ์๋ฃ๊ตฌ์กฐ๋ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ์ด๋ ๋ณธ์ง์ ์๋์ผ. ํ์ง๋ง ํ๋ก๊ทธ๋๋ฐ์ ์์ฑํ ๋, ์๋ฃ๊ตฌ์กฐ์ ๋ํ ๊ฐ๋ ์ด ์๋ ์ํ๋ก ์์ฑํ๋ ๊ฒ๊ณผ ๊ฐ
์ธ์์๋ ํญ์ ์๊ฐ์ง๋ ๋ชปํ ์์ธ ์ผ์ด์ค๊ฐ ๋ฐ์ํ์ง. ํ๋ก๊ทธ๋๋ฐ๋ ์ฐ๋ฆฌ์ ์ถ์ฒ๋ผ ํญ์ ์๊ฐํ๋๋ก๋ง ์๋ํ์ง ์์.
์ฐ๋ฆฌ๋ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด์ ๊ฒฐ์ฝ ์ด๊ฒ์ ์์ด์๋ ์๋ผ.ํ๋ก๊ทธ๋๋ฐ์ ์ธ์๊ณผ ๋ฎ์์๋ค๋ ์ฌ์ค์.์์์ด๋ผ๋ ๊ฒ์ ๋ง ๊ทธ๋๋ก ๋ถ๋ชจ๋์ด ์์์๊ฒ ๋ฌผ๋ ค์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฑฐ์ผ.ํ๋ก๊ทธ๋๋ฐ์์ ๋งํ๋ ์์์ class ์ ๋ํ property ์ method ๋ฅผ ๋ฌผ๋ ค์ฃผ๋ ๊ฒ์ ๋งํ์ง.์
์์ ์ฝ๋์์ ์ ์ (User)์ ๊ณผ์ผ๊ฐ๊ฒ์์ธ(Merchant) ์ class ๋ฅผ ๋ง๋ค์๋๋ฐ, ๊ทธ๊ฒ ๋ฌด์์ธ์ง ์ ํํ๊ฒ ์ค๋ช ํด์ฃผ๋ ค๊ณ ํด.๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ค๋ช ํ๋ฉด์, ์ด๋ฐ ์๊ธฐ๋ฅผ ํ์ด.'๊ฐ์ฒด(Object)' ๋ผ๋ ๊ฒ์ ์ฐ๋ฆฌ์ ์์์์ ์กด์ฌํ๋ ๋ชจ๋ ๊ฒ(Object)์
์ด์ ๋ถํฐ ๋ณธ๊ฒฉ์ ์ผ๋ก OOP(Object-Oriented Programming, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ) ๋ผ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ค๋ช ํ๋ ค๊ณ ํด.Object(๊ฐ์ฒด)Oriented(์งํฅ)Programming(ํ๋ก๊ทธ๋๋ฐ)์ 3๊ฐ์ ๋จ์ด๋ก ์ค๋ช ์ ํด๋ณด์๋ฉด, "ํ๋ก๊ทธ๋๋ฐ ๋ก์ง์ ์์ฑํ
Map ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋๋ฐ์์ ์์ฒญ๋๊ฒ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ํํ์ผ. ์ฌ์ค ์์ชฝ "์๋ฃํ & ๋ณ์ (Data type & Variable)" ์์ญ์ ๋ฃ์ผ๋ ค๋ค๊ฐ ์ผ๋ถ๋ฌ ๋ค๋ก ๋บ์ด.Map ์ด๋ผ๋๊ฒ ๋ญ๊น? ์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก '์ง๋' ๋ผ๋ ๋ป์ผ๋ก ์ดํดํ๊ณ ์์๊ฑฐ์ผ.๋ง๋ ๋ง์ด์ผ.
๋ฌด๋์ด ๋ ๋ถ์ฑ์ง ํ ๋, ์ข์ํ๋ ์์ ์ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด์ ๋ฃ๊ณ ์ถ์ ๋, ํ๋ฆฐํฐ๊ธฐ๋ก ๋๊ฐ์ ๋ฌธ์๋ฅผ ์ฌ๋ฌ์ฅ ์ธ์ํ ๋.. ์ฐ๋ฆฌ์ ์ถ์๋ ๋ฐ๋ณต์ ์ผ๋ก ํ๋ ์ผ๋ค์ด ์ฐธ ๋ง์.์ฐ๋ฆฌ๊ฐ ์ฌ๋ ์ง๊ตฌ์๋ ๋งค์ผ ๋ฐ๋ณต์ ์ผ๋ก ํด๊ฐ ๋จ์ง. ์ฐ๋ฆฌ์ ์ผ์์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋งค์ผ/๋งค์ฃผ/๋งค๋ฌ/๋งค๋ ๋ฐ
์ฐ๋ฆฌ์ ์ถ์ ์ ํ์ ์ฐ์์ด์ผ. ์ด๋ ํ ์กฐ๊ฑด์ด๋, ์ง๊ธ ์ด๋ ํ ์ํฉ์ด๋์ ๋ฐ๋ผ ์ฐ๋ฆฌ์ ํ๋์ ๋ฌ๋ผ์ง์ง.์ค๋ ์ฐ์ฐ์ ๋ค๊ณ ๊ฐ์ง ๋ง์ง, ์์นจ์ ์นจ๋์์ ์ผ์ด๋ ์ง ๋ง์ง ๊ณ ๋ฏผํ๋ ๊ฒ ์ฒ๋ผ.๋๋ค์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ if / else if / else ์ ์ธํธ๋ก ์กฐ๊ฑด์ ๋๋ ์ ์