Community

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

← Go back
#Assignment 9
#pragmatic
2년 전
670

💡 연습문제 14. 다음과 같은 메서드가 있을 때, 적절한 성행,후행조건과 불변식을 추가하라.

✅ 풀이 과정

  • //클래스불변 //getSpeed()는 0보다 같거나 크며, 10보다 작다. //스피드를 반환(후행조건) -> X int getSpeed() //선행조건 x는 getSpeed() + 1 or getSpeed() - 1 //선행조건 isFull을 통해 10단계 이상의 속도는 불가 //선행조건 반드시 fill된 상태 # 후행조건 getSpeed == x void setSpeed(int x) boolean isFull() //선행 조건 empty 되어 있어야함 # 후행조건 isFull() void fill() //선행조건 fill되어있어야함 # 후행조건 !isFull() void empty() //중지시키는 것도 속도를 1칸씩 내려 중지시킨다고 가정했을때, fill되어 있어야 한다고 생각했다. 혹은 // 속도를 올리는 것 또한 fill 되어 있는 상태어야한다고 생각했다. # 후행조건에 대한 이해가 부족했었는데, 연습문제를 통해 좀더 자세히 알 수 있었다. #


    💡 연습문제 15. 0,5,10,15,…,100 이라는 수열에 숫자가 몇개나 있는가?

  • ✅ 풀이 과정
    21개. 0부터 100까지 5의 배수 20개 + 0*(1개)

    → 울타리 말뚝 오류를 조심하자. 말뚝 수를 세어야지, 말뚝 사이의 공간을 세지 말자.

✅ 참고 (서적 Topic 23 . 계약에 의한 설계)

  • 인터페이스 설계

    목적 - 믹서를 제어할 수 있는 인터페이스만 있으면 된다.

    • 동작

    • 속도를 열단계설정

    • 0은 중지

    • 비어있는 상태 작동 불가

    • 한번의 한칸씩의 속도 변경

    문제를 해결하기 위해 다시 학습할 내용

    선행 조건 - 루틴이 호출되기 위해 참이여야하는 것 즉 , 루틴의 요구사항

    후행 조건 - 루튼의 할일. 완료 되었을 때의 상태

    클래스 불변식 - 이 조건이 언제나 참인 것을 클래스가 보장한다.

  • <aside> 🔥 만약 호출자가 루틴의 모든 선행조건을 충족한다면 해당 루틴은 종료시 모든 후행조건과 불변식이 참이 되는 것을 보장한다.

    </aside>