मेरे पास एक परीक्षा आ रही है और मैं पिछले पेपरों को देख रहा हूं कि मुझे क्या उम्मीद है। मैं निम्नलिखित पर थोड़ा अटका हुआ हूं और वास्तव में सराहना करूंगा यदि कोई व्यक्ति कुछ उदाहरण दे सकता है।
प्रत्येक निम्नलिखित कार्यों के लिए OCL में पूर्व शर्त और पोस्टकंडिशन लिखें (java.util पैकेज में स्टैक वर्ग में शामिल):
- (1) बूलियन खाली () - टेस्ट यदि यह स्टैक खाली है
- (2) ई झांकना () - इस स्टैक के शीर्ष पर स्थित वस्तु को स्टैक से हटाए बिना देखता है
- (३) ई पॉप () - इस स्टैक के शीर्ष पर स्थित वस्तु को हटाता है और उस वस्तु को इस ऑपरेशन के मान के रूप में लौटाता है
- (4) ई पुश (ई आइटम) - इस स्टैक के शीर्ष पर एक आइटम को धक्का देता है
यहाँ 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