ฉันมีการสอบขึ้นมาและฉันกำลังดูเอกสารที่ผ่านมาเพื่อรับแนวคิดบางอย่างเกี่ยวกับสิ่งที่คาดหวัง ฉันติดอยู่กับสิ่งต่อไปนี้และจะซาบซึ้งจริง ๆ ถ้ามีคนให้คำตอบตัวอย่าง
เขียนเงื่อนไขเบื้องต้นและ postconditions ใน OCL สำหรับแต่ละการดำเนินการดังต่อไปนี้ (รวมอยู่ในสแต็คคลาสในแพ็คเกจ java.util):
- (1) บูลีนว่างเปล่า () - ทดสอบว่าสแต็กนี้ว่างเปล่าหรือไม่
- (2) E peek () - ดูที่วัตถุที่ด้านบนของสแต็กนี้โดยไม่ลบออกจากสแต็ก
- (3) E pop () - ลบวัตถุที่ด้านบนของสแต็กนี้และส่งคืนวัตถุนั้นเป็นค่าของการดำเนินการนี้
- (4) E push (รายการ 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