[컬러잇자바] #7 - 간단한 자바프로그램 만들어보기

2026. 2. 9. 22:29·Language/ColorIt_Java

※[컬러잇 자바] 시리즈는 "왜?"라는 질문을 중심으로 자바의 기초문법에서 고급 자바기술까지 알아보는 컬러잇 개발블로그 시리즈입니다.

 

컬러잇 자바시리즈 7편. 저번시간에는 본격적으로 자바 프로그램을 실행하기 위해 main 메서드에 대해 알아보고, main 메서드와 관련된 정적변수, 접근제어자, 로컬변수 등에 대해서 알아보았습니다.

 

컬러잇자바 시리즈 한 편에 들어가는 내용이 다소 많은 편이기도하고, 결국에 프로그래밍 언어는 직접 프로그램을 만들어가며 경험해봐야 실력이 늡니다.

따라서 이번시간에는 쉬어가는 겸, 그리고 직접 자바 프로그래밍을 경험해보기 위해서 간단한 예제를 풀어볼 예정입니다.

 

당부하고 싶은 말은 오늘 코드를 단순히 따라치고, 어떤 결과가 나오는지 그냥 읽는 게 아니라, 이 코드가, 이 클래스가, 이 메서드가 어떤 일을 하는지 생각해보면서 글을 읽어보고, 이 글 뿐 아니라 관련된 예제를 더 풀어본다면 자바 개발자로 성장할 가능성이 높아질 것입니다. 때로는 AI에게 직접 내용을 질문해봐도 좋겠죠.

 

또한 우리는 아직 연산자, 조건문, 반복문에 대해서 배우지 않았습니다. 이 기능들은 이 글 다음편부터 차차 등장할 예정이니, 지금은 이해하기 어렵더라도 이 이후에 조건문, 반복문, 연산자에 대해 다룬 후에 다시 한 번 읽어보면 더 도움이 될 것입니다.

 

이번 내용에서는 객체 생성의 부담을 줄이기 위해 많은 메서드들을 static으로 선언했습니다. 실제로는 객체를 생성해도됩니다. 이 때는 참조형 변수를 사용하면됩니다.

 

그럼 시작합니다.


무엇을 만들 것인가?

오늘 만들어볼 것은, 숫자 맞추기 게임입니다.

 

- 컴퓨터는 1부터 100까지 중 임의의 난수를 만듭니다.

- 사용자는 20번의 기회 안에 컴퓨터가 생성한 난수를 예측해야합니다.

- 만약 사용자가 입력한 수가 컴퓨터가 생성한 난수보다 작다면 down, 높다면 up, 같다면 "맞습니다!"를 출력합니다.

- 사용자가 컴퓨터가 만들어낸 수를 맞추면 "맞습니다!"와 함께 몇 번만에 맞췄는지 같이 출력합니다.


객체는 누가 있을까?

숫자 맞추기 게임을 진행하기 위해서는, 어떤 기능들이 필요한지 생각하고, 각 기능을 어느 클래스, 어느 객체가 담당할지 생각해봐야합니다. 자바 프로그램은 객체를 통해 표현되기 때문에, 각 기능들 역시 객체가 담당합니다.

 

숫자 맞추기 게임에서 개발해야할 기능은

 

- 게임시작

- 1부터 100까지 범위 내에서 임의의 난수 생성하기

- 사용자로부터 입력 받기

- 입력받은 수와 컴퓨터가 생성한 난수가 같은지 조사하고, 결과값을 출력하기

 

정도가 있겠습니다.

제일 클래스가 적고 복잡한 방식으로는 main 메서드에 모든 코드를 작성하는 것입니다. 하지만 그렇다면 코드가 아주 복잡해지죠. 개발을 할 때에는 클래스의 수가 많아지더라도 되도록 한 클래스가 담당하는 기능이 적은 편이 좋습니다.

 

따라서 각 기능마다 클래스를 연결해주자면

- GameLauncher 클래스 - 게임 시작기능을 담당하는 클래스

- RandomNumberSetter 클래스 - 임의의 난수를 생성하는 클래스

- UserInputReader - 사용자로부터 입력을 받는 클래스

- JudgeUserNumber - 사용자의 입력을 컴퓨터가 생성한 난수와 비교하는 클래스


개발해보기

기능개발을 할 때에는 우선 핵심적인 기능부터 개발하고 그 핵심기능들을 연결해주는 기능들은 나중에 개발하는 것이 좋습니다. 숫자 맞추기 게임의 핵심기능은 "임의의 난수 생성", "사용자로부터 수 입력받기", "난수와 입력받은 값 비교하기" 정도가 되겠습니다.


기능#1 - 임의의 난수 생성하기

임의의 난수를 생성해야합니다. RandomNumberSetter 클래스가 담당하는 기능이죠.

우선 어떻게 기능을 구현할지는 나중에 생각하고, 이 클래스에는 어떤 변수와 메서드가 담겨야할까요?

 

변수: 없음

메서드: 랜덤한 난수를 생성하기

정도가 있겠습니다. 랜덤수 생성기는 별다른 상태나 속성이 필요하지 않기 때문에 변수가 필요하지 않습니다. 랜덤하게 생성된 수를 변수에 저장해야하지 않나싶지만, 랜덤 난수 생성 메서드는 난수를 반환하고, 변수에 저장은 해당 메서드를 호출하는 쪽에서 저장하면 되기 때문에 굳이 필요하지 않습니다. 나중에 보조기능들까지 개발한 후에 이 글을 다시 읽어보면 도움이 될 겁니다.

 

임의의 난수는 어떻게 생성할까요?

자바는 개발에 편리한 여러 클래스들을 제공합니다. 대표적인 예시가 수학적 연산에 사용되는 Math 클래스입니다. 반올림, 원주율 변수, 제곱근 등의 기능들을 제공합니다. 뿐만 아니라 임의의 난수를 생성하는 기능들도 제공하죠. 따라서 임의의 난수생성에는 이 클래스를 사용하면 됩니다.

 

class RandomNumberSetter {
    public static int generateRandomNumber() {
        return (int) (Math.random()*100) + 1;
    }
}

이렇게 생성할 수 있습니다. Math.random() 메서드는 이전에 배운 정적메서드에 해당하며, 호출될 시 임의의 난수를 0과 1 사이의 범위에서 반환합니다. 100을 곱한 이유는 0부터 100 사이에 값을 원해서이고, 1을 더한 이유는 값이 1부터 100까지의 난수를 받기 위해서죠.

 

반환문 앞에 (int)라는 것은 형변환이라는 것에 해당합니다. 나중에 알아보도록 하겠습니다만 우선은 소수를 정수로 바꾼다고 알아두면 되겠습니다.

 

static으로 메서드를 선언한 이유는 다른 인스턴스 변수를 필요로하지 않는 간단한 기능이고, 저번에 배웠다싶이 static으로 메서드를 선언하면 메서드를 호출할 때마다 객체를 생성할 필요가 없기 때문에 편한 편이어서 static으로 선언한 것입니다.


기능 #2 - 사용자로부터 수 입력받기

UserInputReader 클래스의 내용에 해당합니다. 여기서는 어떤 변수와 메서드가 필요할까요? 

 

변수: 없음

메서드: 사용자에게서 수를 입력받는 메서드

여기 역시 오로지 "기능"만 담당하고 있기 때문에, 굳이 변수가 필요하지 않습니다.

 

사용자로부터 입력받는 기능을 담은 클래스 역시 Scanner라는 클래스로 미리 제공됩니다..만 앞서 Math 클래스와는 다른 차이점이 있는데, 바로 import를 해주어야합니다.


자바에서는 개발에 편리한 기능들을 여럿 제공합니다. 그리고 이 기능들은 비슷한 것끼리 뭉쳐서 패키지라는 단위로 제공됩니다. 자바에서 기본으로 제공하는 모든 기능들과 클래스들은 이 패키지에 속합니다. 가령 위에서 다룬 Math 클래스와, 문자열에 사용되는 String 클래스는 모두 java.lang 패키지에서 제공됩니다.

 

이번에 다룰 Scanner 클래스는 java.util이라는 패키지에서 제공됩니다. Scanner, java.util 뿐 아니라 다른 여러 패키지와 그에 속한 클래스들은 자바 개발을 더 쉽게 할 수 있는 기능들을 제공하죠.

 

알아두어야 할 점은 서로 다른 패키지라면 클래스 이름이 같아도 된다는 점입니다. 실제로 java.util 패키지와 java.sql 패키지에서는 모두 Date라는 클래스를 제공하죠. 문제는 이 두 클래스는 이름이 같더라도 당연히 호환이 되지 않습니다.

 

따라서 자바는 그냥 클래스만 사용하면 "이 클래스는 정확히 어느 패키지에 속한지 알아야 클래스를 사용할 수 있어"라고하며 에러를 발생시킵니다. 따라서 우리는 자바에게 이 클래스가 정확히 어떤 패키지에 속한지 알려야하는데, 이 때 import를 사용합니다.

 

import java.util.Scanner;

그래서 패키지에 속한 클래스를 사용하려는 클래스 위에 이렇게 import 문을 작성하면 됩니다.

 

여담으로 String이나 Math와 같은 java.lang 패키지에 담긴 클래스들은 자바 프로그램 내에서 사용빈도가 매우 많기 때문에 import 없이도 사용할 수 있게되는 겁니다. 일종의 예외적인 경우라고 볼 수 있죠.


import java.util.Scanner;

public class UserInputReader {
    public static int getUserInput() {
        Scanner sc = new Scanner(System.in);
        return sc.nextInt();
    }
}

유저의 입력을 받는 클래스와 메서드는 이렇게 작성할 수 있습니다. Scanner의 생성자에 들어간 매개변수 System.in은 "콘솔창 (출력함수를 사용할 때 출력문이 나오는 부분입니다.)으로 입력을 받겠어"라는 뜻입니다. 나중에는 매개변수로 파일의 위치를 전해주면 해당 파일에서 값을 읽어올 수도 있습니다.

 

sc.nextInt()는 "사용자가 수를 입력할 것이니까 수를 읽어와라"라는 뜻입니다. 그리고 이 함수의 반환값은 읽어온 수가 되겠죠.

 

따라서 getUserInput() 메서드가 실행되면 사용자의 입력을 받아서 이를 반환하게됩니다.


기능 #3 - 사용자 수와 컴퓨터가 생성한 수 비교하기

JudgeUserNumber 클래스가 이 기능을 담당합니다. 어떤 변수와 메서드가 필요할까요?

 

변수: 없음

메서드: 사용자의 입력값과 컴퓨터가 생성한 값 비교하기

위의 두 핵심기능과 같이 기능만 담당하기 때문에 변수가 없습니다. 값의 저장은 이 핵심기능들을 호출하는 쪽에서 담당하죠.

 

여기서는 조건문이라는 것을 사용해야합니다. 이 글 이후에 배울 것이므로 간단히 설명만하자면,

if (만약 ~~이 참이라면~) {
    여기에 있는 코드를 실행한다.
} else if (만약 거짓일 때, ~~이 참이라면~) {
    여기에 있는 코드를 실행한다.
} else {
    만약 위의 조건이 모두 거짓이라면 이 코드를 실행한다.
}

정도가 되겠습니다.

 

여기서 조건은, 만약 사용자가 입력한 변수가 컴퓨터가 생성한 변수와 같다면~이 되겠습니다. 따라서 코드를

public class JudgeUserNumber {
    public static boolean isCorrect(int ComputerNumber, int UserNumber) {
        if (ComputerNumber == UserNumber) {
            System.out.println("맞았습니다!");
            return true;
        } else {
            System.out.println("틀렸습니다!");
            return false;
        }
    }
}

이렇게 짤 수 있습니다. 메서드의 매개변수로 컴퓨터가 임의로 생성한 난수(ComputerNumber)와 유저가 입력한 수(UserNumber)를 받아서, 두 값을 비교하는 것입니다.

메서드가 boolean 값을 반환하는데, 이는 게임 한 판 당 주어진 기회가 20번이므로 사용자로부터 값을 받아서 컴퓨터가 생성한 난수와 비교하는 과정을 20번 동안 반복해야하는데, 만약 20번 이내로 맞춘 경우 반복을 중지하기 위한 신호로 주는 것입니다. 나중에 자세히 알아보겠습니다.

 

public class JudgeUserNumber {
    public static boolean isCorrect(int ComputerNumber, int UserNumber) {
        if (ComputerNumber == UserNumber) {
            System.out.println("right!");
            return true;
        } else {
            if (ComputerNumber < UserNumber) {
                System.out.println("down");
            } else {
                System.out.println("up");
            }

            return false;
        }
    }
}

만약 up / down 여부를 알려주려면 이렇게 코드를 짤 수가 있겠습니다. else if 문을 사용하면 더 간결하게 짤 수 있지만, 이것은 조건문을 배우면서 차차 진행해보도록 하겠습니다. 우선은 if문 두 개를 사용했습니다.


기능 #4 - 연결하기

이제 핵심기능들인

 

임의의 난수 생성 (RandomNumberSetter 클래스)

사용자로부터 수 입력받기 (UserInputReader 클래스)

입력받은 값과 난수 비교하기 (JudgeUserNumber 클래스)

의 코드 작성이 끝났습니다.

 

코드를 짜면서 "왜 기능들이 따로놀지? 수를 비교하고, 생성한다고해도 이것을 변수에 저장하지도 않고, 그냥 메서드에서 반환만하고, 매개변수로 값을 받고만 있는데?"라고 생각할 수 있습니다.

 

지금까지의 핵심기능들은, 오로지 그 기능에만 집중한 것입니다. 임의의 난수를 생성해 반환만하고, 사용자의 입력을 받아서 반환만하고, 매개변수로 값을 받아와서 비교하는 기능입니다. 따라서 이 만들어진 기능들을 연결하는 클래스가 필요하죠. 반환된 임의의 난수와 사용자의 입력을 받아서 값 비교기의 매개변수로 전해주는 클래스가 필요합니다. 이것이 GameLauncher 클래스입니다.

 

GameLauncher 클래스는 지금까지 만든 클래스를 호출하고, 게임이 이어지도록 관리합니다. 여기서 필요한 변수와 메서드는

 

변수

- 이제 생성된 임의의 난수를 변수에 저장해야합니다. 이 값을 토대로 JudgeUserNumber 클래스에게 값을 전해줘서 비교하게됩니다. 여기서는 ComputerNumber 변수라고 칭하겠습니다.

- 또한 사용자로부터 입력받은 값을 저장해야합니다. 역시 JudgeUserNumber 클래스에게 전해줄 값입니다. 여기서는 UserNumber 변수라고 칭하겠습니다.

- 게임이 끝났을 때 몇 번만에 맞췄는지 알려줘야하기 때문에, 값을 몇 번 입력했는지도 세야합니다. 이 변수는 count 변수라고 칭하겠습니다.

 

메서드

이제 앞서 만든 클래스들을 호출해가며 게임을 실행시키고, 유지해야합니다. 이 기능들을 담당하는 메서드를 만들어야합니다.

 

우선은 임의의 난수를 생성해야합니다. 즉, RandomNumberSetter 클래스의 generateRandomNumber() 메서드를 호출해야하죠.

public class GameLauncher {
    static int ComputerNumber;

    public static void startGame(){
        ComputerNumber = RandomNumberSetter.generateRandomNumber();
    }
}

앞서 generateRandomNumber 메서드를 static 메서드로 선언한 이유입니다. RandomNumberSetter 클래스의 인스턴스 변수를 필요로하지 않기 때문에 객체의 생성없이 보다 간단하게 호출할 수 있죠. 만약 static 메서드가 아니라면 생성자를 통해 객체를 생성하고, 참조형 변수도 선언하고, 참조형 변수를 통해 메서드에 접근했어야했습니다.

 

그런 다음, 사용자로부터 값을 받아와야합니다. 즉, UserInputReader 클래스의 getUserInput() 메서드를 호출해야합니다.

 

public class GameLauncher {
    static int ComputerNumber;
    static int UserNumber;

    public static void startGame(){
        ComputerNumber = RandomNumberSetter.generateRandomNumber();
        UserNumber = UserInputReader.getUserInput();
    }
}

그래서 이제 컴퓨터가 생성한 난수와 사용자가 입력한 값이 있습니다.

 

이제 두 값을 비교해야하는데, 역시 JudgeUserNumber. 클래스의 isCorrect() 메서드를 호출하고, ComputerNumber 변수와 UserNumber 변수를 넘겨주면됩니다,

public class GameLauncher {
    static int ComputerNumber;
    static int UserNumber;
    static int count = 0;

    public static void startGame(){
        ComputerNumber = RandomNumberSetter.generateRandomNumber();
        UserNumber = UserInputReader.getUserInput();
        
        boolean gameOver = JudgeUserNumber.isCorrect(ComputerNumber, UserNumber);
    }
}

모든 메서드가 정적메서드기 때문에 편리하게 호출합니다.

isCorrect() 메서드까지 호출되었기 때문에 이제 startGame() 메서드를 실행하면 임의의 난수를 생성하고, 사용자로부터 값을 입력받아서 비교한 후 결과를 출력할 수 있습니다. gameOver 변수에는 isCorrect() 메서드가 반환한 값이 들어가게될 것입니다.\

 

여기까지가 게임 "한 번"입니다.

앞서 말했지만, 게임 한 판에는 총 20번의 기회가 있죠.

 

public class GameLauncher {
    static int ComputerNumber;
    static int UserNumber;

    public static void startGame(){
        ComputerNumber = RandomNumberSetter.generateRandomNumber();

        for(int idx = 0; idx < 20; idx++){
            UserNumber = UserInputReader.getUserInput();
            boolean gameOver = JudgeUserNumber.isCorrect(ComputerNumber, UserNumber);
        }
    }
}

그래서 코드를 이렇게 짤 수 있습니다.

 

for는 반복문에 해당합니다. 역시 나중에 다룰 것이지만,

for (idx라는 변수를 0으로 선언하고요; idx가 20이 될 때까지; idx를 1씩 증가시키면서) {
    아래 코드를 반복하세요
}

라는 뜻입니다. 이제 컴퓨터값을 생성하고나서, 사용자로부터 값을 입력받고, 비교하는 과정을 총 20번 반복하는 것입니다.

 

하지만 몇 가지 기능들이 더 남았습니다. 만약 사용자가 난수를 맞췄다면, 20번 중에서 횟수가 조금 더 남았더라도 반복을 종료해야합니다.

public class GameLauncher {
    static int ComputerNumber;
    static int UserNumber;

    public static void startGame(){
        ComputerNumber = RandomNumberSetter.generateRandomNumber();

        for(int idx = 0; idx < 20; idx++){
            UserNumber = UserInputReader.getUserInput();
            count = count + 1;
            boolean gameOver = JudgeUserNumber.isCorrect(ComputerNumber, UserNumber);

            if (gameOver == true){
                System.out.println("게임이 끝났습니다! " + count + "번 만에 맞췄습니다.");
                break;
            }
        }
    }
}

앞서 나왔던 if문을 사용할 수 있습니다.

break 키워드의 뜻은 "얼마나 더 반복해야하나에 상관없이, 지금당장 반복을 중지하세요"라는 뜻입니다. 그리고 만약 맞추기 못했다면 count 값을 1 증가시켜서 사용자가 수를 예측한 횟수가 한 번 증가했다는 것을 반영합니다. count 값은 한 번 값을 입력한 이후로 시도횟수를 세기 위해 증가시켰고, 값을 비교한 이후에 count 값을 증가시켜도됩니다.

 

따라서 이제 startGame() 메서드를 실행하면 임의의 난수를 생성하고, 유저에게서 번호를 받아서 맞춰보는 과정을 20번 반복하되, 숫자를 맞출 경우 게임이 즉시 종료되고 몇 번만에 맞췄는지 출력합니다.

 

마지막으로, 20번 안에 맞추지 못한 경우 그냥 끝나는게 아니라 20번 안에 숫자를 맞추지 못했다는 것을 출력해야합니다.

public class GameLauncher {
    static int ComputerNumber;
    static int UserNumber;
    static int count = 0;

    public static void startGame(){
        ComputerNumber = RandomNumberSetter.generateRandomNumber();

        for(int idx = 0; idx < 20; idx++){
            UserNumber = UserInputReader.getUserInput();
            count = count + 1;
            boolean gameOver = JudgeUserNumber.isCorrect(ComputerNumber, UserNumber);

            if (gameOver == true){
                System.out.println("게임이 끝났습니다! " + count + "번 만에 맞췄습니다.");
                break;
            }

            if (count == 20){
                System.out.println("숫자를 20번 안에 맞추지 못했습니다.");
                break;
            }
        }
    }
}

코드 내에서 사용자가 수를 입력한 횟수를 세는 count 변수를 사용하므로 이 count 변수가 20이고, (즉, 사용자가 수를 20번 입력했을 때) 20번째 값도 맞추지 못했다면 게임이 종료되는 것입니다.

 

이렇게 숫자 게임의 실행기를 짤 수 있습니다. 임의의 난수를 설정한 다음, 사용자로부터 수를 입력받아 임의의 생성된 난수와 비교하는 과정을 20번씩 반복, 20번이 지난다면 게임이 종료됩니다.


기능 #5 - 실행시키기

이제 본격적으로 게임을 실행시켜보겠습니다. 이전에 배운 main 메서드가 이를 담당합니다.

main 메서드에서는 GameLauncher만 불러오면됩니다.

 

보통 main 메서드에는 코드를 잘 작성하지 않습니다. 단지 프로그램을 본격적으로 실행시킬 클래스나 메서드를 불러오는게 끝입니다.

자바는 객체 간의 상호작용으로 이루어진다고 할 수 있겠습니다. 여기서도 "난수생성기", "수 비교기", "수 입력기"라는 객체들이 서로 수를 생성해내고, 비교해가면서 프로그램이 진행됩니다.

 

따라서 main 메서드에 코드를 줄줄이 작성하면 main 메서드와 main 메서드가 해당된 클래스 역시 "프로그램 시작하기"라는 역할에 더해 몇 가지 기능들 담은 하나의 "객체"가됩니다. 따라서 다른 객체와 상호작용을 해야합니다.

 

이는 main 메서드에게 불필요한 기능들을 추가하는 것이기도합니다.

자바에서는 최대한 한 클래스에게 많은 기능을 부여하지 않는 것이 좋습니다.

 

게다가 main 메서드가 다른 객체와 상호작용하기엔 상당히 까다로운 편에 속합니다. 우선 main 메서드는 static 메서드기 때문에 main 메서드 내에서는 인스턴스 변수를 사용할 수 없습니다. 또한 main 메서드를 호출할 때에도 매개변수에 있는 String[] args 때문에 단순히 호출할 수 없고, 그러는 경우가 극히 드문 편입니다.

 

따라서 main 메서드는 오로지 "프로그램 시작"이라는 역할만 담당할 뿐, 다른 기능들은 일절 담당하지 않는 것이 바람직합니다. 그래서 여기서도

public class Main{
    public static void main(String[] args){
        GameLauncher.startGame();
    }
}

GameLauncher 클래스만 호출하고 끝납니다.

 

다른 주요기능들이 별다른 인스턴스 변수를 필요로하지 않아 호출이 쉽게 static 메서드를 사용했던 것과 달리, GameLauncher 클래스의 startGame 메서드는 main 메서드에서 호출하기 쉽도록 static으로 선언한 것입니다. 실제로는 GameLauncher 객체를 생성해서 사용하는 경우도 있습니다.


실행시켜보기

이제 코드를 실행시켜볼까요?

이렇게 재밌게 게임을 진행할 수 있습니다.


오늘 작성한 코드들은 모두

 

https://github.com/kimdoes/GuessRandomNumbers

 

GitHub - kimdoes/GuessRandomNumbers: 랜덤 난수 맞추기

랜덤 난수 맞추기. Contribute to kimdoes/GuessRandomNumbers development by creating an account on GitHub.

github.com

깃허브에 올라가있으니 코드를 보면서 한 번씩 어려울 때 하나씩 건들여가면서 코드를 조작해보는 것도 좋겠습니다.


오늘은 한 클래스가 하나의 기능만 담당하도록 코드를 짜봤습니다. RandomNumberSetter 클래스와 UserInputReader 클래스는 그 길이가 매우 짧은 편에 속합니다.

 

하나의 클래스가 담당하는 역할이 최소가 되는 것이 좋지만, 오직 한 클래스가 하나의 기능만 담당하는 것도 코드를 읽을 때 집중이 파편화되기 때문에 바람직하지 않습니다. 따라서 여러 개발을 해보며, 한 클래스가 얼마만큼의 기능을 담당해야 적절한지 익히는 것도 중요합니다. 예를들면 RandomNumberSetter 클래스와 UserInputReader 클래스를 하나로 합치고, 기능에 따른 메서드만 따로 분리하는 방법도 있겠죠.

 

이렇게 오늘은 여태까지 배웠던 클래스, 객체, 메서드, 변수, 생성자 등의 내용들을 토대로 간단한 자바 프로그램 예제를 만들어보았습니다. 여태까지 강조했던 "객체 간의 상호작용" 역시, GameLauncher 클래스가 RandomNumberSetter와 UserInputReader 클래스를 호출하며 값을 받아오고, 이 값들을 JudgeUserNumber 클래스에게 넘기는, 네 개의 객체가 서로 호출해가며 값을 넘기는 형태로 객체 간의 상호작용이 일어나고 있습니다.

 

 

여기까지 정리해보며, 객체, 클래스, 변수, 메서드까지, "객체"와 관련된 하나의 챕터가 끝났습니다. 객체는 자바에 있어서 아주 중요한 개념들이며, 여태까지 내용들을 여러 번 복습하여 익숙해지는 것이 중요합니다. 따라서 <컬러잇자바> 시리즈가 아니더라도, 자바의 객체와 클래스, 그리고 그것을 이루고 있는 요소들에 대해서는 잘 알아두는 것이 좋겠습니다.

 

다음 게시글, 다음 챕터에서는 위에서 다룬 조건문, 반복문 등에 대해 다뤄보도록 하겠습니다. 조건문, 반복문, 연산자, 배열 등, 이 내용을 안다면, 기초적인 자바 개발은 능숙하게 진행할 수 있을 것입니다. 다음 글에서는 그 첫 번째 타자로 연산자에 대해서 알아보도록하겠습니다. 감사합니다!

'Language > ColorIt_Java' 카테고리의 다른 글

[컬러잇자바] #6. 왜 main 메서드를 사용할까?  (0) 2026.02.02
[컬러잇자바] #5. 왜 생성자를 사용할까?  (0) 2026.01.26
[컬러잇자바] #4. 왜 메서드를 사용할까?  (1) 2026.01.19
[컬러잇자바] #3. 왜 변수와 타입을 사용할까?  (1) 2026.01.12
[컬러잇 자바] #2. 왜 객체를 사용할까?  (1) 2026.01.05
'Language/ColorIt_Java' 카테고리의 다른 글
  • [컬러잇자바] #6. 왜 main 메서드를 사용할까?
  • [컬러잇자바] #5. 왜 생성자를 사용할까?
  • [컬러잇자바] #4. 왜 메서드를 사용할까?
  • [컬러잇자바] #3. 왜 변수와 타입을 사용할까?
컬러잇
컬러잇
개발을 합니다.
  • 컬러잇
    Color_It!
    컬러잇
  • 전체
    오늘
    어제
    • 분류 전체보기 (7)
      • Language (7)
        • ColorIt_Java (7)
      • CS (0)
      • 개인 프로젝트 (0)
      • 팀 프로젝트 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 디디디 개발블로그
  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
컬러잇
[컬러잇자바] #7 - 간단한 자바프로그램 만들어보기
상단으로

티스토리툴바