Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
[TIL] Mission 2.연습문제 풀이
#pragmatic
2년 전
518

💡 연습문제 14.
부엌용 믹서의 인터페이스를 설계하라. 이 믹서는 나중에 웹으로 쓸 수 있도 록 사물 인터넷IoT으로 연결될 예정이지만, 지금으로서는 믹서를 제어할 수 있는 인터페이스만 있으면 된다. 속도를 열 단계로 설정할 수 있는데 0은 중 지를 의미한다. 비어 있는 상태에서는 작동할 수 없고, 한 번에 한 칸씩만 속 도를 바꿀 수 있다. 즉 0에서 1, 1에서 2는 되지만, 0에서 2는 안 된다. 다음과 같은 메서드가 있을 때, 적절한 선행, 후행 조건과 불변식을 추가하라.

int getSpeed() void setSpeed(int x) boolean isFull() void fill() void empty()

✅ 풀이 과정 & 💡 책에 있는 해답

  • 우선 인터페이스를 자바 코드로 적어 봤다. 계약 내용은 주석에 적는다. 먼저 이 클래스의 불변식이다.

    • <인터페이스>
      /* @invariant getSpeed() > 0
      implies isFull() // 빈 상태로는 돌리지 못한다.
      @invariant getSpeed() >= 0 &&
      getSpeed() < 10 // 범위 검사
      */
      </인터페이스>

  • 다음은 선행 조건과 후행 조건이다.

  • /* @pre Math.abs(getSpeed() - x) <= 1 // 한 단계씩만 바꿀 수 있다.
    @pre x >= 0 && x < 10 // 범위 검사
    @post getSpeed() == x // 요청한 속도가 되었다.
    */ public void setSpeed(final int x)

  • /* @pre !isFull() // 차 있는데 또 채우지 않는다.
    @post isFull() // 수행되었는지 확인한다.
    * / void fill()

  • /* @pre isFull() // 비어 있는데 또 비우지 않는다.
    @post !isFull() // 수행되었는지 확인한다.
    */ void empty()


느낀점 : 간단해보였지만 헷갈렸다. 문제를 풀어보고 안 풀어보고는 확실히 차이가 있는 것 같다.