2018-4-19 Bowling 중간후기

볼링프로젝트 진행중…

//FrameManager.java
public class FrameManager {
    private Frame frame = new Frame();

    public Frame onFrame(int i) {
        frame.shoot(i);
        if (frame.finishFrame()) {
            System.out.println("frame status is " + frame.checkStatus().toString());
            return frame;
        }
        return frame;
    }
}
  • 어제까지만 하더라도 onFrame의 리턴타입은 boolean이였다. boolean타입으로 리턴을 받아서 running에서 단순히 값을 출력을 해주는 형태로 진행을 하다가 Frame을 통해 값을 전달받고 불러오기 위해서 Frame의 리턴타입으로 바꾸게 되었다.
  • 이 부분을 고치고 나니 running메소드역시 고쳐야되서 설계에 대한 고민을 하다가 무사히 마무리가 되었다.
    //Game.java
    public class Game {
      private List<Frame> frames = new ArrayList<>();
    
      public void match() {
          String name = Input.inputName();
          for (int i = 1; i < 10; i++) {
              running(i, name);
    
          }
      }
    
      public List<Frame> running(int i, String name) {
          FrameManager manager = new FrameManager();
          Input input = new Input();
          Frame frame = manager.onFrame(input.inputNum(i));
          if (frame.finishFrame()) {
              frames.add(frame);
              ResultView.upperBar(getFrames(), name);
              return frames;
          }
          frame = manager.onFrame(input.inputNum(i));
          frames.add(frame);
          ResultView.upperBar(getFrames(), name);
          return frames;
      }
    
      public List<Frame> getFrames() {
          return frames;
      }
    }
    
  • match메소드를 호출을 하게되면, 1부터 9프레임까지 게임이 진행을 하게된다.
  • 처음에는 참 거짓을 통해서 단순히 프레임을 넘어가게 했다면, 이제는 각 프레임별로 ArrayList<Frame> frames에 정보가 들어가있어서 거기서 Frame에 대한 상태값 정보를 호출을 할 수 있게되었다.

오늘의 느낀점

  • 단순히 Status 객체에 대한 부분을 크게 생각을 못했었다. 밑에 점수판에 보이는 것처럼 스트라이크일때 X, 스페어일때 /, 미싱일때 - 을 콘솔에서 편리하게 출력을 하기위해서 Status 객체를 만들고 상속을 이용을 했었다. 그러다가 오늘 포비의 피드백을 들으면서 상태값들을 계속 리턴하고 업데이트를 하라고 피드백을 해주셨다. 나는 중간을 생략을 해서 최종 상태값을 리턴을 하게됬는데, 중간중간 값을 입력을 할때마다 상태값을 업로드를 해주라고 이야기를 해주셨다. 이 부분은 아직 크게 떠오르지않아서 걱정이지만, 우선 나아가야될 방향과 고민에 대한 부분은 정해졌다. 계속 고민하고 또 고민을 해야지.
  • 그리고 이제서야 상속과 인터페이스에 대해서 적용을 하기 시작을 했다. 자식클래스에서 부모클래스에 있는 값을 불러오는 것에 대해서 private 제어접근자를 사용을 하면 접근이 안된다?라고 오늘 듣게 되었다. 아… 이전에는 자바 기본서에서 인터페이스 상속을 공부를 할때 개념에 대해서만 배웠지 적용에 대한 부분은 크게 고민을 못했었다. 이제는 적용을 하기 위해서 다시 공부를 해야된다. 콜린이 말해준것처럼 이제는 슬슬 디자인패턴을 적용을 해봐야겠다. 오늘은 템플릿메소드에 대해서 가르쳐줬는데, 이것도 봐야지..

Written on April 19, 2018