CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /CodeGym์—์„œ Java ๊ธฐ์ดˆ ๋ฐฐ์šฐ๊ธฐ โ€” ์ „์ฒด ๊ณผ์ • ์š”์•ฝ
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

CodeGym์—์„œ Java ๊ธฐ์ดˆ ๋ฐฐ์šฐ๊ธฐ โ€” ์ „์ฒด ๊ณผ์ • ์š”์•ฝ

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์˜ค๋Š˜๋‚  Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ํ™œ์šฉ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ๊ณ„์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์†Œ๊ทœ๋ชจ ํšŒ์‚ฌ์™€ ๋Œ€๊ธฐ์—… ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋ชจ๋ฐ”์ผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜์„ ๋งŒ๋“œ๋Š” ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ ํ•ฉํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  Java๋Š” IoT ๊ฐœ๋ฐœ์˜ ์„ ๋‘์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ ๊ณผํ•™๊ณผ ํ˜„๋Œ€ ๊ธฐ์ˆ ์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋งํ•˜๋Š” ๋‚ด์šฉ์„ ์•Œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด Java๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์„ ํƒ์ž…๋‹ˆ๋‹ค. CodeGym์—์„œ Java ๊ธฐ์ดˆ ๋ฐฐ์šฐ๊ธฐ โ€” ์ „์ฒด ๊ณผ์ • ์š”์•ฝ - 1 ๋ฌผ๋ก  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์€ ์–ด๋–ค ๊ธฐ๊ณ„์–ด์—๋„ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ธ์–ด๊ฐ€ ์ฃผ์š” ๋„๊ตฌ์ž„์„ ๊ณ ๋ คํ•˜๊ณ  Java ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ๋ฐฐ์šฐ๊ธฐ๋กœ ์„ ํƒํ•˜๋ฉด ์ „์ฒด ํˆดํ‚ท์„ ์–ป๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Java๋Š” ๋ฐฉ๋Œ€ํ•œ ์ปฌ๋ ‰์…˜๊ณผ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฐ–์ถ˜ ์œ ์—ฐํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์†”๋ฃจ์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ƒˆ๋กœ์šด ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•˜๋Š” ์ง€์†์ ์ธ ์—…๋ฐ์ดํŠธ ์ค‘์—๋„ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ„๋‹จํ•œ ๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„๊ณผ ์ฑ—๋ด‡๋ถ€ํ„ฐ ์•ˆ์ „ํ•œ ๊ธฐ์—…์šฉ ์†Œํ”„ํŠธ์›จ์–ด, ์‹ฌ์ง€์–ด ์šฐ์ฃผ ํƒ์‚ฌ๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ๊นŒ์ง€! ํ™˜์ƒ์ ์ธ ๊ฒƒ์„ ๋ฐฐ์šธ ์ค€๋น„๊ฐ€ ๋˜์…จ๋‹ค๋ฉด CodeGym์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋์—†๋Š” ๊ฐ•์˜์™€ ์†Œ๋Ÿ‰์˜ ์—ฐ์Šต ๋˜๋Š” ์ˆ˜๋งŽ์€ ์ด๋ก ์ด ํฌํ•จ๋œ ์ฑ…์ด ํฌํ•จ๋œ ์ผ๋ฐ˜ ์˜จ๋ผ์ธ ๊ณผ์ • ๊ทธ ์ด์ƒ์ž…๋‹ˆ๋‹ค. CodeGym์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”ํ•œ ๊ฒƒ์„ ์ •ํ™•ํžˆ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์™„์ „ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ํฌ๊ด„์ ์ธ ๊ต์œก ํ”„๋กœ๊ทธ๋žจ
    ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ฒ˜์Œ์ด๋ผ๋ฉด ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๊ณ  ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ด๋ก ์  ์ง€์‹์ด ํ•„์š”ํ•œ์ง€์กฐ์ฐจ ๋ชจ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธธ์„ ์žƒ์ง€ ์•Š๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! CodeGym ๊ณผ์ •์—๋Š” ์‹ค์ œ ์‚ฌ๋ก€์™€ ํ•จ๊ป˜ ํ‰์ดํ•œ ์–ธ์–ด๋กœ ์„ค๋ช…๋œ ์ ์ ˆํ•œ ์ด๋ก ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๋ฐฐ์šฐ๊ณ  ์ฃผ๋‹ˆ์–ด Java ๊ฐœ๋ฐœ์ž๋กœ ๋ ˆ๋ฒจ์—…ํ•ฉ๋‹ˆ๋‹ค.

  2. ์ฝ”๋”ฉ์— ์ž์‹ ๊ฐ์„ ๊ฐ–๊ฒŒ ํ•ด์ฃผ๋Š” ์ˆ˜๋งŽ์€ ์—ฐ์Šต
    ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์—ฐ๋งˆํ•˜์—ฌ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•™์Šต์—์„œ ์—ฐ์Šต์ด ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ฆ‰๊ฐ์ ์ธ ํ™•์ธ, ์ฝ”๋“œ ๋ถ„์„, ์ž‘์—…์— ๋„์›€์ด ๋˜๋Š” ํŒ๊ณผ ํ•จ๊ป˜ ๋‹ค์–‘ํ•œ ๋ณต์žก์„ฑ์„ ๊ฐ€์ง„ 1200๊ฐœ ์ด์ƒ์˜ ์ž‘์—…์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ์ˆ˜์—…๋ถ€ํ„ฐ ์ฝ”๋”ฉ์„ ์ค€๋น„ํ•˜์„ธ์š”.

  3. ๋™๊ธฐ ๋ถ€์—ฌ์™€ ๋ณด์ƒ์ด ์žˆ๋Š” ๊ฒŒ์ž„ํ™”๋œ ํ€˜์ŠคํŠธ ๊ฒŒ์ž„
    ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์˜ ๋ฏธ๋ž˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝ๋ ฅ์ด ๋†๋‹ด์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋‹น์‹ ์˜ ํ•™์Šต์€ ์žฌ๋ฏธ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ์žฌ๋ฏธ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉํ‘œ ๋‹ฌ์„ฑ์— ๋„์›€์ด ๋˜๋Š” ๋™๊ธฐ ๋ถ€์—ฌ์™€ ๋ณด์ƒ์ด ํฌํ•จ๋œ ๊ฒŒ์ž„ํ™”๋œ ๊ณผ์ •์„ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”์Šค๋Š” 4๊ฐœ์˜ ํ€˜์ŠคํŠธ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ฐ ํ€˜์ŠคํŠธ์—๋Š” ํ•œ ์ž… ํฌ๊ธฐ์˜ ๊ฐ•์˜์™€ ์ˆ˜์‹ญ ๊ฐ€์ง€ ์ž‘์—…์ด ํฌํ•จ๋œ 10๊ฐœ์˜ ๋ ˆ๋ฒจ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Java ํ•™์Šต์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅธ๋‹ค๋ฉด ์šฐ๋ฆฌ ๊ณผ์ •์— ์ถฉ์‹คํ•˜๋ฉด Java ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ํšจ๊ณผ์ ์œผ๋กœ ์†Œ๊ฐœํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ํ€˜์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ๋ฏธ๋ž˜์˜ ์šฐ์ฃผ์— ์‚ฌ๋Š” ์บ๋ฆญํ„ฐ์˜ ๋ ˆ๋ฒจ์„ ์˜ฌ๋ ค์•ผ ํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์„ธ์š”. ๊ทธ๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๋ฐฐ์šฐ๊ณ , ์ฝ”๋”ฉํ•˜๊ณ , ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ์†Œํ†ตํ•˜๊ณ , ํ•™์ƒ๊ณผ ์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž์˜ ๋„์›€์„ ๋ฐ›๊ณ , ์†”๋ฃจ์…˜, ๋ฉ‹์ง„ ํ”„๋กœ์ ํŠธ ๋ฐ ๊ฒŒ์ž„์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค... ์Œ, CodeGym์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค!

    CodeGym์—์„œ๋Š” ์‹œ๊ฐ„ ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ์›ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐฐ์šฐ๊ณ  ์ฝ”๋”ฉํ•˜์„ธ์š”. ๊ณผ์ •์„ ์™„๋ฃŒํ•˜๊ณ  500์‹œ๊ฐ„ ์ด์ƒ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต์„ ํ•˜๋Š” ๋ฐ ํ‰๊ท  6๊ฐœ์›”์—์„œ 12๊ฐœ์›”์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 3๊ฐœ์›” ๋งŒ์— ๋๋‚ด๋Š” ํ•™์ƒ๋“ค์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

CodeGym ์ฝ”์Šค ํ•˜์ด๋ผ์ดํŠธ:
  • ์ž๋ฐ” ๊ตฌ๋ฌธ
  • ์ž๋ฐ” ์ฝ”์–ด
  • ์ž๋ฐ” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ
  • ์ž๋ฐ” ์ปฌ๋ ‰์…˜
์ด ๋„ค ๊ฐ€์ง€ ์ฃผ์š” ์ฃผ์ œ๋Š” CodeGym ๊ณผ์ •์˜ ๋„ค ๊ฐ€์ง€ ํ€˜์ŠคํŠธ์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋ฆฌ๋ทฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Java ๊ธฐ์ดˆ ํ•™์Šต ๋ฐ ์‹ค์Šต ๋กœ๋“œ๋งต

CodeGym์„ ์‚ฌ์šฉํ•˜๋ฉด Java์˜ ๊ธฐ์ดˆ์— ๋Œ€ํ•œ ๊ท ํ˜• ์žกํžŒ ํ•™์Šต์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ณต์‹์€ ์ด๋ก ์˜ 20% + ์‹ค์Šต์˜ 80%์ด๋ฏ€๋กœ ๊ฐ ๋ ˆ๋ฒจ์—์„œ ๊ฐ•์˜๋ณด๋‹ค ๋ช‡ ๋ฐฐ ๋” ๋งŽ์€ ์ž‘์—…์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ€˜์ŠคํŠธ #1: ์ž๋ฐ” ๊ตฌ๋ฌธ

์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ์†Œ๊ฐœ์ž…๋‹ˆ๋‹ค. ์ด์ „์— ์ฝ”๋”ฉ์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ ์ง€์‹์ด ์—†๋Š” ์‚ฌ๋žŒ๋„ ์ด ํ€˜์ŠคํŠธ๋ฅผ ๋งˆ์Šคํ„ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java ํ”„๋กœ๊ทธ๋žจ์˜ "๋ฒฝ๋Œ"์ธ ํด๋ž˜์Šค, ๊ฐœ์ฒด, ๋ฉ”์„œ๋“œ ๋ฐ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ฐœ๋…๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•, ๋ฐฐ์—ด, ๋ฃจํ”„ ๋ฐ ์กฐ๊ฑด๋ฌธ์„ ๋ฐฐ์›๋‹ˆ๋‹ค. ๋ ˆ๋ฒจ 3๋ถ€ํ„ฐ ์‹ค์ œ IDE์ธ IntelliJ IDE๋กœ ์ž‘์—…ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค. ๊ฐ ์ฃผ์ œ์—๋Š” ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๊ธฐ ์œ„ํ•ด ์™„๋ฃŒํ•ด์•ผ ํ•˜๋Š” ์ผ๋ จ์˜ ์‹ค์ œ ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ๋ฒจ์ด ๋๋‚˜๋ฉด ์ปฌ๋ ‰์…˜ ๋ฐ OOP ๊ธฐ๋ณธ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ๊ฐ€ ์ œ๊ณต๋˜๋ฉฐ ๋„ค ๋ฒˆ์งธ ํ€˜์ŠคํŠธ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ€˜์ŠคํŠธ์˜ ์ฃผ์ œ ๋ชฉ๋ก:
  • ๊ณผ์ • ์†Œ๊ฐœ
  • Java ์†Œ๊ฐœ: ํ™”๋ฉด ์ถœ๋ ฅ, String ๋ฐ int ์œ ํ˜•์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • Java ์†Œ๊ฐœ: ๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ, ํด๋ž˜์Šค
  • ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ๊ทธ๋žจ: ํ‚ค๋ณด๋“œ ์ž…๋ ฅ, IDE์—์„œ ์ž‘์—…
  • ๋ถ„๊ธฐ ๋ฐ ๋ฃจํ”„ ์†Œ๊ฐœ
  • ํด๋ž˜์Šค ์†Œ๊ฐœ: ์ž์‹ ๋งŒ์˜ ํด๋ž˜์Šค ์ž‘์„ฑ, ์ƒ์„ฑ์ž
  • ๊ฐ์ฒด ์†Œ๊ฐœ: ์ž์‹ ๋งŒ์˜ ๊ฐ์ฒด ์ž‘์„ฑ, ์ˆ˜๋ช…, ์ •์  ๋ณ€์ˆ˜
  • ๋ฐฐ์—ด๊ณผ ๋ชฉ๋ก: ๋ฐฐ์—ด, ArrayList, ์ œ๋„ค๋ฆญ ์†Œ๊ฐœ
  • ์ปฌ๋ ‰์…˜: LinkedList, HashSet, HashMap. ๋‚ ์งœ.
  • ์˜ˆ์™ธ ์†Œ๊ฐœ: try, catch, throws, multi-catch
  • ๊ธฐ๋ณธ ์œ ํ˜• ๋ณ€ํ™˜: ํ™•๋Œ€ ๋ฐ ์ถ•์†Œ ๋ณ€ํ™˜

ํ€˜์ŠคํŠธ #2 ์ž๋ฐ” ์ฝ”์–ด

์ด ํƒ๊ตฌ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ์— ์ „๋…ํ•˜๋ฉฐ ์ŠคํŠธ๋ฆผ, ์ง๋ ฌํ™” ๋ฐ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋“œ์— ์ต์ˆ™ํ•ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ๋‹ค์ค‘ ์ƒ์†์— ๋Œ€ํ•œ ์ž‘์—… ๋ฐ ํ•™์Šต ์ˆ˜์ค€์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ€˜์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•˜๋ ค๋ฉด Java ๊ตฌ๋ฌธ์„ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Core quest๋ฅผ ๋งˆ์น˜๋ฉด ๋” ๋ณต์žกํ•œ ์ž‘์—…์„ ํ•ด๊ฒฐํ•˜๊ณ  ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ€˜์ŠคํŠธ์˜ ์ฃผ์ œ ๋ชฉ๋ก:
  • OOP์˜ ๊ธฐ๋ณธ: ๊ธฐ๋ณธ ์›์น™, ์ƒ์†, ์บก์Šํ™”
  • OOP์˜ ๊ธฐ์ดˆ: ์˜ค๋ฒ„๋กœ๋”ฉ, ๋‹คํ˜•์„ฑ, ์ถ”์ƒํ™”, ์ธํ„ฐํŽ˜์ด์Šค
  • ์ธํ„ฐํŽ˜์ด์Šค: ์ถ”์ƒ ํด๋ž˜์Šค์™€์˜ ๋น„๊ต, ๋‹ค์ค‘ ์ƒ์†
  • ์œ ํ˜• ์บ์ŠคํŒ…, instanceof. ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ด€๋ จ๋œ ํฐ ์ž‘์—…
  • ๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ, ์ƒ์„ฑ์ž ํ˜ธ์ถœ ๊ธฐ๋Šฅ
  • ์Šค๋ ˆ๋“œ ์†Œ๊ฐœ: ์Šค๋ ˆ๋“œ, ์‹คํ–‰ ๊ฐ€๋Šฅ, ์‹œ์ž‘, ์กฐ์ธ, ์ธํ„ฐ๋ŸฝํŠธ, ์ ˆ์ „ ๋ชจ๋“œ
  • ์Šค๋ ˆ๋“œ ์†Œ๊ฐœ: ๋™๊ธฐํ™”, ํœ˜๋ฐœ์„ฑ, ์ˆ˜์œจ
  • ์ŠคํŠธ๋ฆผ ์†Œ๊ฐœ: InputStream/OutputStream, FileInputStream, FileOutputStream
  • ์ŠคํŠธ๋ฆผ ์†Œ๊ฐœ: Reader/Writer, FileReader/FileWriter
  • ์ง๋ ฌํ™”

Quest #3 Java๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉm

์ด ํ€˜์ŠคํŠธ๋Š” ๊ฐ์ฒด, ๋ฌธ์ž์—ด ๋ฐ ๋‚ด๋ถ€ ํด๋ž˜์Šค์˜ ๊ตฌ์„ฑ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜์™€ ์ˆ˜์‹ญ ๊ฐœ์˜ ์ž‘์—… ์ค‘์— ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ค‘์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ธ์ง€, wait, notify ๋ฐ notifyAll ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. jsoup ๋ฐ Swing์— ๋Œ€ํ•œ ๊ฒฝํ—˜์„ ์Œ“๊ณ  ์ž๋™ ํŒจํ‚น์— ๋Œ€ํ•ด ๋ฐฐ์›๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก  ์ฑ„ํŒ… ์‹œ์Šคํ…œ, ATM ์—๋ฎฌ๋ ˆ์ดํ„ฐ, ์›น ์Šคํฌ๋ ˆ์ดํผ์™€ ๊ฐ™์€ ์ฒซ ๋ฒˆ์งธ ํฐ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ณ  Tetris, Snake, Space Shooter ๋ฐ Arkanoid์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ๊ฒŒ์ž„์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ€˜์ŠคํŠธ์˜ ์ฃผ์ œ ๋ชฉ๋ก:
  • ๊ฐœ์ฒด ๊ฐœ์ฒด ๊ตฌ์„ฑ: equals, hashCode, clone, wait, notify, toString()
  • ๋ฌธ์ž์—ด: ๊ฐ€๋ณ€, ๋ถˆ๋ณ€, ํ˜•์‹, StringTokenizer, StringBuilder, StringBuffer
  • ๋‚ด๋ถ€ ํด๋ž˜์Šค, ์˜ˆ: Map.Entry
  • ๋‚ด๋ถ€ ํด๋ž˜์Šค, ๊ตฌํ˜„ ๊ธฐ๋Šฅ
  • ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋ฐ ์ค‘์ง€: ์‹œ์ž‘, ์ธํ„ฐ๋ŸฝํŠธ, ์ ˆ์ „ ๋ชจ๋“œ, ์–‘๋ณด
  • ๊ณต์œ  ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค: ๋™๊ธฐํ™”, ํœ˜๋ฐœ์„ฑ
  • ์ด์ค‘ ์ž๋ฌผ์‡ . ๊ธฐ๋‹ค๋ฆฌ๋‹ค, ์•Œ๋ฆฌ๋‹ค, ๋ชจ๋‘์—๊ฒŒ ์•Œ๋ฆฌ๋‹ค
  • TreadGroup, ThreadLocal, Executor, ExecutorService, ํ˜ธ์ถœ ๊ฐ€๋Šฅ. jsoup ์ž‘์—…
  • Autoboxing, ๊ตฌํ˜„ ๊ธฐ๋Šฅ
  • ์—ฐ์‚ฐ์ž: ์ˆซ์ž, ๋…ผ๋ฆฌ ๋ฐ ์ด์ง„์ˆ˜. ์Šค์œ™ ์ž‘์—…

ํ€˜์ŠคํŠธ #4 ์ž๋ฐ” ์ปฌ๋ ‰์…˜

์ •์ƒ์— ์˜ค๋ฅผ ์ค€๋น„๋ฅผ ํ•˜์„ธ์š”! ๋งˆ์ง€๋ง‰ ํ€˜์ŠคํŠธ๋Š” Java ์ปฌ๋ ‰์…˜, ๋””์ž์ธ ํŒจํ„ด์— ์ „๋…ํ•  ๊ฒƒ์ด๋ฉฐ ๋งŽ์€ ์œ ์šฉํ•œ ์—ฐ์Šต์„ ์–ป๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด JSON, Guava, Apache Commons Collections ๋ฐ JUnit์œผ๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ  Git ๋ฐ JAXB, RMI ๋ฐ DymamicProxy์— ๋Œ€ํ•œ ์‹ค์Šต ๊ฒฝํ—˜์„ ์–ป์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ JavaScript์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋‚˜์ค‘์— ํฌํŠธํด๋ฆฌ์˜ค์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋” ๋งŽ์€ ์งˆ๋ฌธ๊ณผ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ€˜์ŠคํŠธ์˜ ์ฃผ์ œ ๋ชฉ๋ก:
  • ํŒŒ์ผ ๋ฐ ์•„์นด์ด๋ธŒ ์ž‘์—…
  • RMI ๋ฐ ๋™์  ํ”„๋ก์‹œ. ์Šค์œ™ ์ž‘์—…
  • JSON, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ. Guava, Apache Commons Collections, JUnit ์ž‘์—…
  • ์žฌ๊ท€. Java์˜ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ๋ฐ ์ฐธ์กฐ ์œ ํ˜•. ๋ฒŒ์ฑ„ ๋ฐ˜์ถœ
  • ๋ฒ„์ „ ์ œ์–ด ์‹œ์Šคํ…œ: Git ๋ฐ SVN. ์ œ๋„ค๋ฆญ
  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ํŒจํ„ด. ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ์‹ฌ์ธต ์—ฐ๊ตฌ
  • ๋””์ž์ธ ํŒจํ„ด. ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค, ์˜ˆ: ๋ฐฐ์—ด. ์ปฌ๋ ‰์…˜
  • ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก . Java์˜ ์ฃผ์„. ์˜ˆ์™ธ ๊ณ„์ธต
  • ์ฒซ ๋ฒˆ์งธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Tomcat ๋ฐ IDEA ์ž‘์—…
  • URI, URL. REST ์„œ๋น„์Šค. ๋‚˜๋งŒ์˜ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ
CodeGym์œผ๋กœ ํ•ต์‹ฌ Java ๊ธฐ์ดˆ๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์€ ํšจ๊ณผ์ ์ด๊ณ  ์žฌ๋ฏธ์žˆ์Šต๋‹ˆ๋‹ค. Java ํ•™์Šต์ž๋ฅผ ์œ„ํ•œ ๊ธ€๋กœ๋ฒŒ ๊ณผ์ •์— ์ฐธ์—ฌํ•˜๊ณ  ์ž…๋ฌธ ๋ ˆ๋ฒจ์„ ๋ฌด๋ฃŒ๋กœ ์™„๋ฃŒํ•˜์„ธ์š”!
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION