WikiDer > Предварительное условие

Precondition

В компьютерное программирование, а предварительное условие это условие или предикат это всегда должно быть правдой непосредственно перед выполнением некоторого раздела код или перед операцией в формальная спецификация.

Если предусловие нарушено, действие раздела код становится неопределенным и, таким образом, может выполнять или не выполнять намеченную работу. Безопасность проблемы могут возникнуть из-за неправильных предварительных условий.

Часто предварительные условия просто включаются в документацию соответствующего раздела кода. Предварительные условия иногда проверяются с помощью охранники или же утверждения внутри самого кода, и в некоторых языках для этого есть специальные синтаксические конструкции.

Например: факториал определен только для целых чисел, больших или равных нулю. Таким образом, программа, которая вычисляет факториал входного числа, должна иметь предварительные условия, что это число должно быть целым числом и быть больше или равно нулю.

В объектно-ориентированном программировании

Предпосылки в объектно-ориентированный разработка программного обеспечения является неотъемлемой частью дизайн по контракту. Дизайн по контракту также включает в себя постусловие и инвариант класса.

Предварительное условие для любой подпрограммы определяет любые ограничения на состояние объекта, которые необходимы для успешного выполнения. С точки зрения разработчика программы, это составляет часть контракта, выполняемую обычным вызывающим пользователем. Затем вызывающий должен убедиться, что предварительное условие выполняется до вызова подпрограммы. Вознаграждение за усилия вызывающего выражается в вызываемой подпрограмме. постусловие.[1]

Пример Эйфеля

Подпрограмма в следующем примере написана на Эйфель принимает в качестве аргумента целое число, которое должно быть допустимым значением для часа дня, т.е. е., с 0 по 23 включительно. Предварительное условие следует за ключевым словом требовать. Он указывает, что аргумент должен быть больше или равен нулю и меньше или равен 23. Тег "действительный_аргумент:"описывает это предварительное условие и служит для его идентификации в случае нарушения предварительного условия во время выполнения.

    set_hour (час: ЦЕЛОЕ)            - Установите "час" на "a_hour"        требовать            действительный_аргумент: 0 <= час и час <= 23        делать            час := час        гарантировать            hour_set: час = час        конец

Предпосылки и наследование

При наличии наследования подпрограммы, унаследованные классами-потомками (подклассами), делают это с действующими предварительными условиями. Это означает, что любые реализации или переопределения унаследованных подпрограмм также должны быть написаны в соответствии с их унаследованным контрактом. Предварительные условия могут быть изменены в переопределенных подпрограммах, но их можно только ослабить.[2] То есть переопределенная программа может уменьшить обязательства клиента, но не увеличить их.

Смотрите также

Рекомендации