حالة لاحقة
في برمجة الحاسوب ، الشرط اللاحق هو شرط أو مُسند يجب أن يكون صحيحًا دائمًا بعد تنفيذ جزء من التعليمات البرمجية أو بعد عملية في مواصفات رسمية . تُختبر الشروط اللاحقة أحيانًا باستخدام تأكيدات داخل التعليمات البرمجية نفسها. غالبًا ما تُدرج الشروط اللاحقة ببساطة في توثيق الجزء المتأثر من التعليمات البرمجية.
على سبيل المثال: يكون ناتج المضروب دائمًا عددًا صحيحًا أكبر من أو يساوي 1. لذا، فإن البرنامج الذي يحسب مضروب عدد مُدخل سيحتوي على شروط لاحقة تنص على أن يكون الناتج بعد الحساب عددًا صحيحًا وأكبر من أو يساوي 1. مثال آخر: قد يحتوي البرنامج الذي يحسب الجذر التربيعي لعدد مُدخل على شروط لاحقة تنص على أن يكون الناتج عددًا وأن يكون مربعه مساويًا للعدد المُدخل.
الشروط اللاحقة في البرمجة الكائنية التوجه
في بعض مناهج تصميم البرمجيات، تعتبر الشروط اللاحقة، إلى جانب الشروط المسبقة وثوابت الفئة ، مكونات لمنهجية بناء البرمجيات المصممة بالعقد .
الشرط اللاحق لأي إجراء روتيني هو إعلان عن الخصائص المضمونة عند اكتمال تنفيذه. [ 1 ] وفيما يتعلق بعقد الإجراء الروتيني، يوفر الشرط اللاحق ضمانًا للمستدعين المحتملين بأنه في الحالات التي يتم فيها استدعاء الإجراء الروتيني في حالة يتحقق فيها شرطه المسبق ، فإن الخصائص المعلنة في الشرط اللاحق مضمونة.
مثال إيفل
يُحدد المثال التالي المكتوب بلغة إيفل قيمة سمة فئة hourبناءً على وسيط مُقدم من المُستدعي a_hour. ويأتي الشرط اللاحق بعد الكلمة المفتاحية ` ensure. في هذا المثال، يضمن الشرط اللاحق، في الحالات التي يتحقق فيها الشرط المسبق (أي عندما a_hourتُمثل `ساعةً صالحةً من اليوم`)، أنه بعد تنفيذ ` set_hour، ستكون لسمة الفئة hourنفس قيمة a_hour`. ويصف الوسم ` hour_set`` هذا الشرط اللاحق، ويُستخدم لتحديده في حالة انتهاك شرط لاحق أثناء التشغيل.
set_hour ( a_hour : INTEGER ) -- تعيين قيمة `hour` إلى `a_hour` يتطلب valid_argument : 0 <= a_hour و a_hour < 24 do hour := a_hour ensure hour_set : hour = a_hour endالشروط اللاحقة والإرث
في حالة وجود الوراثة ، ترث الفئات الفرعية (الفئات المنحدرة) إجراءاتها مع شروطها المسبقة واللاحقة، أي شروطها الموروثة. وهذا يعني أن أي تطبيقات أو إعادة تعريف للإجراءات الموروثة يجب أن تُكتب أيضًا بما يتوافق مع شروطها الموروثة. يمكن تعديل الشروط اللاحقة في الإجراءات المعاد تعريفها، ولكن لا يجوز إلا تعزيزها. [ 2 ] أي أن الإجراء المعاد تعريفه قد يزيد من الفوائد التي يقدمها للعميل، ولكنه لا يجوز أن يُنقص منها.
انظر أيضاً
- شرط مسبق
- التصميم بموجب عقد
- منطق هوار
- الثوابت التي تحافظ عليها الشروط
- مشغل قاعدة البيانات
مراجع
- ↑ ماير، برتراند ، بناء البرمجيات الموجهة للكائنات ، الطبعة الثانية، برنتيس هول، 1997، ص 342.
- ↑ ماير، 1997، ص 570-573.
- بنى البرمجة
- الأساليب الرسمية
- المنطق في علوم الحاسوب
- رياضيات الحوسبة
