Tôi có một bài kiểm tra sắp tới và tôi đang xem các bài báo trước đây để có một số ý tưởng về những gì mong đợi. Tôi hơi bế tắc về điều sau đây và sẽ thực sự đánh giá cao nếu ai đó có thể đưa ra một số câu trả lời ví dụ.
Viết các điều kiện tiên quyết và hậu điều kiện trong OCL cho mỗi thao tác sau (được bao gồm trong lớp Stack trong gói java.util):
- (1) Boolean blank () - Kiểm tra xem ngăn xếp này có trống không
- (2) E peek () - Nhìn vào đối tượng ở đầu ngăn xếp này mà không xóa khỏi ngăn xếp
- (3) E pop () - Loại bỏ đối tượng ở đầu ngăn xếp này và trả về đối tượng đó làm giá trị của thao tác này
- (4) E đẩy (mục E) - đẩy một mục lên trên cùng của ngăn xếp này
Ở đây E biểu thị loại phần tử trong ngăn xếp.
Những nỗ lực của tôi như sau:
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.
Tôi cũng không biết liệu tôi có nên tham khảo các yếu tố trong ngăn xếp không. Ví dụ: self.elements -> IsEmpty () = true
Nếu ai đó có thể giúp tôi, tôi thực sự đánh giá cao nó.
BIÊN TẬP
Một người bạn có những ý tưởng sau:
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