1. ๊ฐ์ฒด์™€ ํด๋ž˜์Šค

์˜ค๋Š˜์€ ์ผ๋ฐ˜์ ์ธ Java ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋ฐฐ์šฐ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  Java ํ”„๋กœ๊ทธ๋žจ์€ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๊ฐœ์ฒด๊ฐ€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋น„์œ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž‘์€ ๋ฐฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ์ƒํ•ด๋ณด์„ธ์š”. ๋จผ์ € ์ฒญ์‚ฌ์ง„์„ ๋งŒ๋“  ๋‹ค์Œ ์ฒญ์‚ฌ์ง„์— ๋”ฐ๋ผ ์„ ๋ฐ•์ด ๊ฑด์กฐ๋  ๊ณต์žฅ์— ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์•„๋งˆ๋„ ์ˆ˜์‹ญ. ๋˜๋Š” ์›ํ•˜๋Š” ๋งŒํผ์˜ ๋ฐฐ. ์ˆ˜์‹ญ ์ฒ™์˜ ๋™์ผํ•œ ์„ ๋ฐ•์ด ํ•˜๋‚˜์˜ ์ฒญ์‚ฌ์ง„์— ๋”ฐ๋ผ ๊ฑด์กฐ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ฒญ์‚ฌ์ง„

ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋””์ž์ด๋„ˆ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋””์ž์ด๋„ˆ๋Š” ์ฒญ์‚ฌ์ง„์„ ๋งŒ๋“ค๊ณ  Java ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ถ€ํ’ˆ์€ ์ฒญ์‚ฌ์ง„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ๊ฐœ์ฒด๋Š” ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋จผ์ € ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ (์ฒญ์‚ฌ์ง„ ๋งŒ๋“ค๊ธฐ) ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด Java ์‹œ์Šคํ…œ์ด ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ ๋ฐ•์ด ์„ค๊ณ„๋„์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ฒญ์‚ฌ์ง„์€ ํ•˜๋‚˜๋ฟ์ด์ง€๋งŒ ๋งŽ์€ ๋ฐฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ๋Š” ๋šœ๋ ทํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„๋„ ๋‹ค๋ฅด๊ณ  ํ™”๋ฌผ๋„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ๋™์ผํ•œ ๋””์ž์ธ์„ ๊ณต์œ ํ•˜๊ณ  ์œ ์‚ฌํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด ์—ฌ๊ธฐ์— ๋˜ ๋‹ค๋ฅธ ๋น„์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค ...

๊ฐœ๋ฐ‹๋‘‘

๊ฐœ๋ฏธ์ง‘์€ ๋ฌผ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ๊ฐœ๋ฏธ์ง‘์—๋Š” ์„ธ ์ข…๋ฅ˜์˜ ๊ฐœ๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: ์—ฌ์™•๊ฐœ๋ฏธ, ๋ณ‘์‚ฌ, ์ผ๊ฐœ๋ฏธ.

๊ฐ ํด๋ž˜์Šค์˜ ๊ฐœ๋ฏธ์˜ ์ˆ˜๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฐœ๋ฏธ์ง‘ ์ „์ฒด์— ์—ฌ์™•๊ฐœ๋ฏธ๋Š” ํ•œ ๋งˆ๋ฆฌ์ง€๋งŒ ๋ณ‘์‚ฌ๋Š” ์ˆ˜์‹ญ ๋ช…, ์ผ๊ฐœ๋ฏธ ์ˆ˜๋ฐฑ ๋งˆ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ์„ธ ๊ฐœ์˜ ํด๋ž˜์Šค์™€ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๊ฐ์ฒด. ๊ฐœ๋ฏธ๋Š” ์—„๊ฒฉํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ๊ฐ™์€ ๋“ฑ๊ธ‰์˜ ๊ฐœ๋ฏธ ๋ฐ ๋‹ค๋ฅธ ๋“ฑ๊ธ‰์˜ ๊ฐœ๋ฏธ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์™„๋ฒฝํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ •ํ™•ํžˆ ์ด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ํด๋ž˜์Šค์˜ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ๋ณธ ๊ฐœ์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ฒด๋Š” ์„œ๋กœ ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๊ทธ๋žจ์˜ "์™ธ๋ถ€ ์„ธ๊ณ„"์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ฒด์˜ ๋™์ž‘์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํ•˜๋“œ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค.

์ด ๋‘ ๋น„์œ ๋Š” ๋™์ „์˜ ์–‘๋ฉด๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ง„์‹ค์€ ์ค‘๊ฐ„์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์˜ˆ(์ฒญ์‚ฌ์ง„ ๋ฐ ๋ฐฐ์†ก ๊ด€๋ จ)๋Š” ํด๋ž˜์Šค์™€ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ•๋ ฅํ•œ ๋น„์œ ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์˜ˆ(๊ฐœ๋ฏธ์ง‘์— ๊ด€ํ•œ)๋Š” ์ž‘์„ฑ๋œ ํด๋ž˜์Šค์™€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ์กด์žฌํ•˜๋Š” ๊ฐœ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋จผ์ € ํ”„๋กœ๊ทธ๋žจ์— ์กด์žฌํ•  ๋ชจ๋“  ๊ฐœ์ฒด์— ๋Œ€ํ•œ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•œ ๋‹ค์Œ ์ƒํ˜ธ ์ž‘์šฉ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ๋งž์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ์Šต๋‹ˆ๋‹ค.

Java์—์„œ ๋ชจ๋“  ์—”ํ„ฐํ‹ฐ๋Š” ๋Ÿฐํƒ€์ž„ ์‹œ ๊ฐœ์ฒด์ด๋ฉฐ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ์€ ๊ฐœ์ฒด๊ฐ€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ฒด๋Š” ๋‹จ์ˆœํžˆ ์„œ๋กœ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์„ ์  ์„œ๋ฅ˜ ๋น„์น˜

๋ฉ”์†Œ๋“œ์— ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹น์‹ ๋ณด๋‹ค ๋จผ์ € ์˜จ ์‚ฌ๋žŒ๋“ค์€ ๋ชจ๋“  ๊ฒƒ์„ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ํด๋ž˜์Šค์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ์„ฑ ๋ชฉ์ ์„ ์„ค๋ช…ํ•˜๋Š” ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ ๊ณต์šฉ ๋ฉ”์„œ๋“œ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…๊ณผ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํด๋ž˜์Šค๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋…์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ „ํ˜€ ์•Œ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋งˆ์ˆ  ์ง€ํŒก์ด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

c:\\data.txt ํŒŒ์ผ์„ c:\\result.txt ํŒŒ์ผ๋กœ ๋ณต์‚ฌ
package com.codegym.lesson2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy
{
   public static void main(String[] args) throws IOException
   {
      FileInputStream fileInputStream = new FileInputStream("c:\\data.txt");
      FileOutputStream fileOutputStream = new FileOutputStream("c:\\result.txt");

      while (fileInputStream.available() > 0)
      {
         int data = fileInputStream.read();
         fileOutputStream.write(data);
      }

      fileInputStream.close();
      fileOutputStream.close();
   }
}

์ด ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์ฝ์œผ๋ฉด ์ผ๋ฐ˜์ ์ธ ์šฉ์–ด๋กœ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ง์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ฒฝํ—˜๊ณผ ์—ฐ์Šต์ด ํ•„์š”ํ•˜์ง€๋งŒ. ์ž ์‹œ ํ›„ ์ด ์ฝ”๋“œ๊ฐ€ ์นœ์ˆ™ํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


2. ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„

ํ”„๋กœ๊ทธ๋žจ ๋””์ž์ธ์€ ์ „์ฒด ์˜ˆ์ˆ ์ž…๋‹ˆ๋‹ค. ๋™์‹œ์— ๊ฐ„๋‹จํ•˜๊ณ  ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์—„๊ฒฉํ•œ ๋ฒ•๋ฅ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ธˆ์ง€๋˜์ง€ ์•Š์€ ๊ฒƒ์€ ๋ฌด์—‡์ด๋“  ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์Œ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์ผ์„ ํ•˜๋Š” ๋ฐ๋Š” ๋งŽ์€ ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ  ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์„ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์€ ์ฑ…์„ ์“ฐ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•œํŽธ์œผ๋กœ๋Š” ๋ฌธ์ž, ๋‹จ์–ด ๋ฐ ๋ฌธ์žฅ์„ ์”๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์ค„๊ฑฐ๋ฆฌ, ๋“ฑ์žฅ์ธ๋ฌผ, ๋‚ด์  ๋ชจ์ˆœ, ๊ฐˆ๋“ฑ, ์Šคํ† ๋ฆฌํ…”๋ง ์Šคํƒ€์ผ, ์Œ๋ชจ ๋“ฑ์ด ์ค‘์š”ํ•˜๋‹ค.

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ˆ„๊ตฌ๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค .

์ œํ’ˆ ๊ฐœ๋ฐœ์€ ํ•„์—ฐ์ ์œผ๋กœ ๋ณ€๊ฒฝ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์—ฌ๊ธฐ์— ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ , ์ €๊ธฐ์— ๋‹ค๋ฅธ ๊ฒƒ์ด ์ œ๊ฑฐ๋˜๊ณ , ๋ฌด์–ธ๊ฐ€๊ฐ€ ์žฌ์„ค๊ณ„๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ž‘์€ ๋ฐ˜๋ณต์—์„œ ํฌ๊ณ  ๊ฑฐ๋Œ€ํ•˜๊ณ  ๊ฑฐ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ํƒ„์ƒํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ž˜๋ชป๋œ ์ฝ”๋“œ๋Š” ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํ•˜์ง€๋งŒ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ๋Š” ๊ฐœ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.  ๋‹น์‹ ์ด ํ•  ์ˆ˜์žˆ๋Š” ์ผ์€ ๊ทธ๊ฒƒ์„ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ›Œ๋ฅญํ•˜๊ณ  ๊น”๋”ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์„ธ ๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์— ํ›Œ๋ฅญํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ ์ž‘์„ฑ โ€” ์ด๊ฒƒ์ด ๊ฐ€์žฅ ์‰ฌ์šด ์š”๊ตฌ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์— ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋Š” ์—”ํ„ฐํ‹ฐ ๊ฒฐ์ •
  • ํ”„๋กœ๊ทธ๋žจ์„ ๋…ผ๋ฆฌ์  ๋ถ€๋ถ„์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ถ„ํ• 

์ด๋Ÿฌํ•œ ๊ฐœ๋… ๋’ค์— ๋ฌด์—‡์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ข‹์€ ์ฝ”๋“œ ์ž‘์„ฑ

๊ธฐ๋ณธ์ ์ธ ์˜์–ด ์‹ค๋ ฅ๋งŒ ์žˆ๋‹ค๋ฉด ๋•Œ๋•Œ๋กœ ์ฝ”๋“œ๋ฅผ ์˜์–ด ๋ฌธ์žฅ์œผ๋กœ ์ฝ๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์‰ฌ์šด์ง€ ์•Œ์•„์ฐจ๋ ธ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • class Cat extends Petโ€” ์ด๊ฒƒ์€ Cat ํด๋ž˜์Šค๊ฐ€ Pet ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • while(stream.ready())โ€” ์ŠคํŠธ๋ฆผ์ด ์ค€๋น„๋˜๋Š” ํ•œ...
  • if (a<b) return a; else return bโ€” a๋ณด๋‹ค ์ž‘์œผ๋ฉด b๋ฐ˜ํ™˜ํ•˜๊ณ  a๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค b.

์ด๊ฒƒ์€ ์˜๋„์ ์ž…๋‹ˆ๋‹ค. Java๋Š” ์ž์ฒด ๋ฌธ์„œํ™” ์ฝ”๋“œ, ์ฆ‰ ์ฃผ์„ ์—†์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์—ฌ๋Ÿฌ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ข‹์€ Java ์ฝ”๋“œ์—์„œ๋Š” ๋งŽ์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์˜์–ด ๋ฌธ์žฅ์ฒ˜๋Ÿผ ์ฝํž™๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ท€ํ•˜์˜ ์ž„๋ฌด๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ฝ๊ธฐ ์‰ฌ์šด์ง€ ์ƒ๊ฐํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Java์—์„œ๋Š” ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๋ฐ”๋žŒ์งํ•˜๊ฒŒ๋Š” ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ฝ”๋“œ๋Š” ๋‹จ์ผ ํ™”๋ฉด(์˜ˆ: 20-30์ค„)์— ๋งž์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ „์ฒด Java ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐœ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์—ฐ์Šต์„ ํ†ตํ•ด์„œ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์ž‘์„ฑํ•˜๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ์—ฐ๊ตฌํ•˜๊ณ , ๊ฒฝํ—˜์ด ๋งŽ์€ ๋™๋ฃŒ์—๊ฒŒ ์ฝ”๋“œ ๊ฒ€ํ† ๋ฅผ ์š”์ฒญํ•˜์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์ด ์Šค์Šค๋กœ์—๊ฒŒ "๊ทธ๋ƒฅ ๋‚ด๋ฒ„๋ ค๋‘ฌ"๋ผ๊ณ  ๋งํ•˜๋Š” ์ˆœ๊ฐ„ ๋‹น์‹ ์˜ ์„ฑ์žฅ์€ ๋ฉˆ์ถ˜๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์„ธ์š”.

ํ”„๋กœ๊ทธ๋žจ์— ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋Š” ์—”ํ„ฐํ‹ฐ ๊ฒฐ์ •

๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 10๋ช… ์ค‘ 9๋ช…์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„์— ํด๋ž˜์Šค A, B, C๋ฅผ ํฌํ•จํ•œ๋‹ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์—๋„ ํด๋ž˜์Šค A, B, C๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•˜๊ณ  ์ž‘๋™ํ•˜๋ฉฐ ๋น ๋ฅด์ง€๋งŒ ๋น„ํ‘œ์ค€ ์ฝ”๋“œ๋Š” ๋‚˜์œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฐ๊ตฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ˆ˜์‹ญ ๋…„ ๋™์•ˆ IT ์‚ฐ์—…์—์„œ ์ถ•์ ๋œ ๋ชจ๋“  ์ง€ํ˜œ๋ฅผ ํก์ˆ˜ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹๊ณ  ๋น ๋ฅด๊ณ  ์‰ฌ์šด ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ ํ›Œ๋ฅญํ•˜๊ณ  ๋Œ€์ค‘์ ์ด๋ฉฐ ์ž˜ ๋ฌธ์„œํ™”๋œ ํ”„๋กœ์ ํŠธ์ธ Java SDK ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ๊ทธ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค.

ํด๋ž˜์Šค์™€ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฉ”์„œ๋“œ๋Š” ์ •์ ์ด๊ณ  ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ์ด์œ ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋ฉ”์†Œ๋“œ์— ํŠน์ • ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์™œ ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ์ง€, ์™œ ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋ฌด์—‡์ธ์ง€, ํŠน์ • ํŒจํ‚ค์ง€์— ํฌํ•จ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด ๋ชจ๋“  ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ์ดํ•ดํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, Java SDK์˜ ๋ฉ”์„œ๋“œ์—์„œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์ง€ ์•Š๋„๋ก ๊ฒฝ๊ณ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค . ๋งŽ์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์†๋„๋ฅผ ์ตœ๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๊ฐ€๋…์„ฑ์ด ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์„ ๋…ผ๋ฆฌ์  ๋ถ€๋ถ„์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ถ„ํ• 

๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ๋ถ€๋ถ„ ๋˜๋Š” ๋ชจ๋“ˆ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ถ€๋ถ„์€ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ณ ์œ ํ•œ ์ธก๋ฉด์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ์—๋Š” ๋งˆ๋”๋ณด๋“œ, ๋ชจ๋‹ˆํ„ฐ ๋ฐ ํ‚ค๋ณด๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋ชจ๋‘ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋Š์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ๋ถ€ํ’ˆ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ USB, HDMI ๋“ฑ์˜ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๋ณด๋“œ์— ์ปคํ”ผ๋ฅผ ์Ÿ์€ ๊ฒฝ์šฐ ์‹ฑํฌ๋Œ€์—์„œ ๊ฐ„๋‹จํžˆ ์”ป์–ด๋‚ด๊ณ  ๊ฑด์กฐ์‹œํ‚จ ๋‹ค์Œ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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


3. ๋‚˜๋งŒ์˜ ์ˆ˜์—… ๋งŒ๋“ค๊ธฐ

๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๋ง‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๋Š” ์ค‘์ด๋ฏ€๋กœ ์ž์‹ ๋งŒ์˜ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›€์œผ๋กœ์จ ์ž‘๊ฒŒ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ด๋ฏธ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์— ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋Š”์ง€, ์ด๋ฆ„์„ ์–ด๋–ป๊ฒŒ ์ง€์ •ํ•ด์•ผ ํ•˜๋Š”์ง€, ์–ด๋–ค ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์ด ์„œ๋กœ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•ด์•ผ ํ•˜๋Š”์ง€.

์—”ํ„ฐํ‹ฐ ๋ชฉ๋ก

์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”.

์ฒ˜์Œ ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์ข…์ด ํ•œ ์žฅ์„ ๋“ค๊ณ  ํ”„๋กœ๊ทธ๋žจ์— ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฐœ์ฒด(๊ฐ์ฒด) ๋ชฉ๋ก์„ ๊ฐ„๋‹จํžˆ ์ ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ ์—”ํ„ฐํ‹ฐ๋Š” ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ผ๋Š” ์›์น™์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ

์ฒด์Šค ๊ฒŒ์ž„์„ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์—”ํ„ฐํ‹ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค: ์ฒด์ŠคํŒ๊ณผ 6๊ฐ€์ง€ ์œ ํ˜•์˜ ์ฒด์Šค ๋ง. ์กฐ๊ฐ์€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์›€์ง์ด๊ณ  ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ผ๋Š” ๊ฒƒ์ด ์ด์น˜์— ๋งž์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ ์ˆ˜์—…์ด ๋งŽ์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค.

2๊ฐœ๊ฐ€ ์•„๋‹Œ 10๊ฐœ์˜ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ดˆ๋ณด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ๋งŒ๋‚˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋“œ๋ญ…๋‹ˆ๋‹ค. 10๊ฐœ์˜ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹  ์ดˆ๋ณด์ž๋Š” ๋‘ ๊ฐœ์˜ ํด๋ž˜์Šค ๋˜๋Š” ์•„๋งˆ๋„ ํ•˜๋‚˜๋งŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๋™๋ฃŒ ํ”„๋กœ๊ทธ๋ž˜๋จธ ์—ฌ๋Ÿฌ๋ถ„, ๋” ๋งŽ์€ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์˜ ์ฝ”๋“œ๋Š” ์•„๋งˆ๋„ ๋‹น์‹ ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋” ๋ช…ํ™•ํ•ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿ˜›

์ฒด์Šค

์ฒด์Šค๋ฅผ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค๋Š” ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ์„๊นŒ์š”?

์ฒด์ŠคํŒ์€ 8 x 8 ๋ฐฐ์—ด์ž…๋‹ˆ๊นŒ? ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ "chessboard" ํด๋ž˜์Šค์— ๋งŽ์€ ์œ ์šฉํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ • ์…€์ด ๋น„์–ด ์žˆ๋Š”์ง€ ๋˜๋Š” ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ์ž‘ํ•  ๋•Œ ํ•ญ์ƒ ์ด ์›์น™์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์—๋Š” ๋‹ค์–‘ํ•œ ์—”ํ„ฐํ‹ฐ๊ฐ€ ์žˆ๊ณ  ์—”ํ„ฐํ‹ฐ์—๋Š” ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์œ ํ˜•์€ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.


4. ์ •์  ๋ณ€์ˆ˜ ๋ฐ ๋ฉ”์„œ๋“œ

๋˜ํ•œ ์ •์  ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ฒด์ŠคํŒ์—์„œ ๋‹ค๋ฅธ ์ฒด์Šค ๋ง๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์ฒด์Šค ๋ง์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ์—๋Š” ์ฒด์ŠคํŒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฒซ ๋ฒˆ์งธ ๋ง๊ณผ ๋‘ ๋ฒˆ์งธ ๋ง์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ทจํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์˜ ์–ด๋””์—์„œ๋‚˜ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์ •์  ๋ณ€์ˆ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ "ํ•ญ์ƒ ์กด์žฌํ•˜๋Š”" ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ณ„์† ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธ ๋ฉ”๋ชจ
public class ChessBoard
{
   public static ChessBoard board = new ChessBoard();
   public ChessItem[][] cells = new ChessItem[8][8];
   ...
}

public class Game
{
   public static void main(String[] args)
   {
      var board = ChessBoard.board;
      board.cells[0][3] = new King(Color.WHITE);
      board.cells[0][4] = new Queen(Color.WHITE);
      ...
   }
}


๋‹จ์ผ ChessBoard๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค.
์ •์  ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ 8x8 2์ฐจ์› ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.








๋ณด๋“œ์— ์กฐ๊ฐ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š” ์ •์  ๋ณ€์ˆ˜ ๋Œ€์‹  ์‹ฑ๊ธ€ํ†ค ๊ฐœ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

public class ChessBoard
{
   private static ChessBoard board = new ChessBoard();
   public static ChessBoard getBoard()
   {
      return board;
   }

   public ChessItem[][] cells = new ChessItem[8][8];
   ...
}

public class Game
{
   public static void main(String[] args)
   {
      var board = ChessBoard.getBoard();
      board.cells[0][3] = new King(Color.WHITE);
      board.cells[0][4] = new Queen(Color.WHITE);
      ...
   }
}