시험을 치르고 있으며 과거의 논문을보고 무엇을 기대해야하는지에 대한 아이디어를 얻고 있습니다. 나는 다음 중 하나에 약간 붙어있어 누군가가 몇 가지 예를 들어 줄 수 있다면 정말 감사하겠습니다.
다음 각 조작 (java.util 패키지의 Stack 클래스에 포함됨) 각각에 대해 OCL에 사전 조건 및 사후 조건을 작성하십시오.
- (1) Boolean empty ()-이 스택이 비어 있는지 테스트합니다
- (2) E peek ()-스택에서 제거하지 않고이 스택의 맨 위에있는 개체를 봅니다.
- (3) E pop ()-이 스택의 맨 위에있는 객체를 제거하고 해당 객체를이 연산의 값으로 반환합니다
- (4) E 푸시 (E 항목)-아이템을이 스택의 맨 위로 밉니다
여기서 E는 스택의 요소 유형을 나타냅니다.
내 시도는 다음과 같습니다.
Boolean empty()
pre: none
post: self -> IsEmpty() = true
//should this be result -> IsEmpty() = true because it returns a boolean value?
E peek()
pre: self -> NotEmpty() = true
post: result = ???
// I lose hope at this stage.
또한 스택의 요소를 참조 해야하는지 모르겠습니다. 예를 들면 : self.elements-> IsEmpty () = true
누군가 나를 도울 수 있다면 정말 감사하겠습니다.
편집하다
친구에게는 다음과 같은 아이디어가 있습니다.
context Stack empty()
pre: self.data.size = 0
context Stack peek()
pre: self.data.AsSequence.first
context Stack pop()
pre: !self.data.isEmpty
post: self.data.AsSequence.first.remove (not sure about this one)
post: self.data.count = @pre:data - 1
context Stack push(E Item)
post: self.data.asSquence.prepend(E.asSequence)
post: self.data.size = @pre.data.size + 1
여기에 도움이 없으면 Google 그룹스에서 UMLforum 그룹을 사용해보십시오.
—
Stephen C
아니면 :-)에 StackOverflow에
—
스티븐 C
당신은 여기에 설명 OCL 샘플을 찾을 수 있습니다 www-st.inf.tu-dresden.de/Lehre/WS01-02/fs/slides/fss5a-sl.pdf
—
악셀 켐퍼
—
악셀 켐퍼