Java.util প্যাকেজে স্ট্যাকের জন্য অবজেক্ট কনস্ট্রেট ল্যাঙ্গুয়েজ (ওসিএল)


10

আমার একটি পরীক্ষা আসছে এবং আমি কী আশা করব সে সম্পর্কে কিছু ধারণা পেতে অতীতের কাগজপত্রগুলি দেখছি। আমি নিম্নলিখিতটির উপর কিছুটা আটকে রয়েছি এবং যদি কেউ কিছু উদাহরণের উত্তর দিতে পারে তবে সত্যই প্রশংসা করব।

নিম্নলিখিত প্রতিটি ক্রিয়াকলাপের জন্য ওসিএলে পূর্ব শর্ত এবং পোস্টকন্ডিশনগুলি লিখুন (java.util প্যাকেজের স্ট্যাক শ্রেণিতে অন্তর্ভুক্ত):

  • (1) বুলিয়ান খালি () - এই স্ট্যাকটি খালি থাকলে পরীক্ষা করে
  • (২) ই পিক () - স্ট্যাকটি সরিয়ে না রেখে এই স্ট্যাকের শীর্ষে অবস্থিত অবজেক্টটিকে দেখায়
  • (3) ই পপ () - এই স্ট্যাকের শীর্ষে থাকা বস্তুটি সরিয়ে দেয় এবং এই ক্রিয়াকলাপের মান হিসাবে সেই বস্তুটিকে ফেরত দেয়
  • (4) ই পুশ (ই আইটেম) - এই স্ট্যাকের শীর্ষে একটি আইটেম ঠেলাঠেলি করে

এখানে ই স্ট্যাকের উপাদানগুলির ধরণকে বোঝায়।

আমার প্রচেষ্টা নিম্নরূপ:

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. 

আমি জানি না যে আমার স্ট্যাকের উপাদানগুলি উল্লেখ করা উচিত। উদাহরণস্বরূপ: স্ব-উপাদানসমূহ -> ইসেম্পটি () = সত্য

যদি কেউ আমাকে সহায়তা করতে পারে আমি সত্যিই এটির প্রশংসা করব।

সম্পাদনা

বন্ধুর নিম্নলিখিত ধারণাগুলি রয়েছে:

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

আপনি যদি এখানে কোনও সহায়তা না পান তবে আপনি গুগল গ্রুপগুলিতে ইউএমএলফর্ম গ্রুপটি চেষ্টা করতে পারেন।
স্টিফেন সি

1
বা স্ট্যাকওভারফ্লোতে হতে পারে :-)
স্টিফেন সি

আপনি এখানে চিত্রের ওসিএল নমুনাগুলি খুঁজে পেতে পারেন: www-st.inf.tu-dresden.de/Lehre/WS01-02/fs/slides/fss5a-sl.pdf
অ্যাক্সেল

উত্তর:


1

প্রাক- এবং পোস্টকন্ডিশনগুলি একটি চুক্তি।

  • পূর্ববর্তী অবস্থা চুক্তির অংশ যা কলকারীকে অবশ্যই পূরণ করবে। পূর্বশর্ত না trueহলে ফাংশনটি অবশ্যই একটি ত্রুটি ফেলে দেয়।
  • পোস্টকন্ডিশন চুক্তির অংশ যা অবশ্যই ফাংশনটির দ্বারা পূরণ করা উচিত এবং অবজেক্ট / বিশ্বে প্রত্যাশিত পরিবর্তনকে বর্ণনা করে। পোস্টকন্ডিশন না trueহলে বাস্তবায়নের একটি বাগ রয়েছে।

প্রাক-পূর্ববর্তী উভয়ই বুলিয়ান অভিব্যক্তি হতে হবে।

empty?একটি উদাহরণ হিসাবে নেওয়া যাক । এই ফাংশনটি সর্বদা বলা যেতে পারে, সুতরাং পূর্ব শর্ত নেই। কোনও কার্যকারিতা না থাকায় ফাংশনের কোনও পার্শ্ব প্রতিক্রিয়া নেই।

popঅন্য উদাহরণ হিসাবে নেওয়া যাক । এই ফাংশনটি যদি খালি স্ট্যাকের ক্ষেত্রে একটি ব্যতিক্রম উত্থাপন করে self.size > 0অন্যদিকে পূর্ববর্তী শর্তটি যদি ফাংশনটি nilখালি স্ট্যাকটিতে ফিরে আসে তবে পূর্বশর্ত নেই। উভয়ই বৈধ নকশার পছন্দ, জাভা পছন্দগুলির সাথে পরিচিত নয়। উভয় ক্ষেত্রেই পোস্টকন্ডিশন হ'ল self.size = previous.size - 1চুক্তিভিত্তিক পার্শ্ব প্রতিক্রিয়া হ'ল কোনও উপাদানকে সরিয়ে ফেলা।

এবং তাই…

ওসিএল এর সাথে পরিচিত না হওয়ায় এনবি, সিউডো কোড ব্যবহার করা হয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.