2018-3-27 TIL 클래스와 인스턴스에 관한 생각들...

public Lotto() {
        Collections.shuffle(numbers);
        lotto = new ArrayList<>();
        for (int i = 0; i < 6; i++) {
            lotto.add(numbers.get(i));
        }
    }

    public Lotto(String string) {
        right = Arrays.asList(string.split(","));
        System.out.println("Lotto 객체생성 " + getRight());
    }
  • 레이싱카 프로젝트를 했을때는, static메소드를 이용을 많이 했었다. 사실 static로 생성을 하는것과 인스턴스를 생성하는것에 대해서 차이를 잘 몰랐었다. 그당시에 이해를 했던 부분은 공유가 가능한가와 공유가 불가능하고, 고유한 객체를 생성을 한다고만 이해를 했었다. 인스턴스를 생성하면 각각의 인스턴스를 구분하기위해서 고유값을 사용한다는 것을 크게 생각을 하지 않았었다.
  • 로또를 구현을 하면서 로또라는 각각의 객체를 생성을 하지만, 고유값에 대해서는 생각을 못했었다. 그러다가 로또 step3을 진행을 하면서 객체생성에 대해서 다시 생각을 하게됬었다. step3을 진행을 하게되면 수동구매를 하게되는데, scanner.nextLine()을 통해서 입력을 받고 Lotto(String string)을 통해서 Lotto객체를 생성을 하게된다. 나는 이전에 rightNum이라는 당첨번호를 Lotto객체를 만들어서 사용을 했었는데, 수동로또 입력에서도 String으로 입력을 받으면 겹치지 않나라는 생각을 했었다. 그러다가 pobi한테 인스턴스에 관해서 생각을 하라는 이야기를 듣고 고유값에 대해서 생각을 하게됬다. 예를들면 클래스는 갤럭시s9의 설계도이고 그 설계도안에는 갤럭시s9을 어떻게 만드는지에 대한 설명과 기능들이 다 구현이 되어있다. 설계도를 바탕으로 갤럭시s9을 10대를 찍어낸다고했을때, 각각의 갤럭시s9은 기능은 같지만 다른휴대폰이므로 이것은 다른객체라고 말할 수 있는것이고, 갤럭시s9에는 각각의 고유값이 있으므로 구분이 된다. 이 부분을 객체에 적용을 해보면 인스턴스를 생성을 하게될때, 각각의 인스턴스에는 고유값이 있으므로 Lotto(String string)을 통해 Lotto객체를 생성을 하게될때, rightNum이라는 당첨번호와 수동구매를 할때 생성을 하는 로또 인스턴스가 구분이 된다는것에 대해서 알게되었다. :)
Written on March 27, 2018