Эйфелева: ослабляя предварительные условия и затягивая поэспублики?

StackOverflow https://stackoverflow.com/questions/3681503

  •  02-10-2019
  •  | 
  •  

Вопрос

В Эйфеле сказано, что мы должны «ослабить предварительные условия и ужесточение поэтаус», но я не уверен, что это значит. Как это выгодно / пользуется подкладками?

Спасибо

Это было полезно?

Решение

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

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

В результате необходимо убедиться, что результат из производной функции соответствует всем требованиям, помещаемым на базовую функцию - но он также может добавлять больше ограничений. Например, полученная версия выше функции выше может принять решение только к результатам, которые были многократными по 8. Каждое множественное из 8 явно даже даже соответствует требованию базовой функции, но также наложил дополнительное ограничение.

Наоборот не будет работать: если функция базового класса позволяет не отрицательными целыми числами в качестве ввода, то полученный класс должен Продолжайте принимать все неотрицательные целые числа в качестве ввода. Попытка изменить его, чтобы принять только положительные целые числа (т. Е. Отклонить 0, которое разрешено базовым классом), не будет разрешено - ваш полученный класс больше не может быть заменен базовой версией при любых обстоятельствах.

Аналогично с результатами: если базовый класс наложил «множественное из 8» требований к результату, полученная версия должна также обеспечить, чтобы все результаты были кратные 8. Возврат 2 или 4 нарушит это требование.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top