((Current * inverse) |-| One) <= (epsilon / 2)
Автор новой версии достаточно умен, чтобы не переписывать
Если повторное объявление содержит новые утверждения, они должны иметь иной синтаксис, нежели приведенный выше. Правило появится чуть позднее. |
Изменения, внесенные в утверждения, удовлетворяют правилу повторного объявления: новое предусловие
Вот как все должно происходить. Клиент исходного класса
some_client_routine (m1: MATRIX; precision: REAL) is
do
... ; m1.invert (precision); ...
-- Возможен вызов версии как MATRIX, так и NEW_MATRIX
end
которой один из его собственных клиентов передает первый параметр типа
При усилении предусловия
Устранение посредника
Последний комментарий указывает на весьма интересное следствие правила Утверждений Переобъявления. В общей схеме
Рис. 16.3. Подпрограмма, клиент и подрядчик
утверждения
Воспользоваться преимуществом нового контракта можно лишь став непосредственным клиентом
a1: A'
...
if a1.γ then a1.r end
check a1. end -- постусловие выполняется
При этом вы, естественно, объявляете
Компромисс ясен. Клиент класса
Субподряды
Правило Утверждения Переобъявления великолепно сочетается с теорией Проектирования по Контракту.
Мы видели, что утверждения подпрограммы описывают связанный с ней контракт, в котором клиент гарантирует выполнение предусловия, получая право рассчитывать на истинность постусловия; для поставщика все наоборот.
Наследование совместно с повторным объявлением и динамическим связыванием приводит к созданию субподрядов. Приняв условия контракта, вы не обязаны выполнять его сами. Подчас вы знаете кого-то еще, способного сделать это лучше и с меньшими издержками. Так происходит, когда клиент запрашивает подпрограмму из
Правило Утверждения Переобъявления просто устанавливает, что честный субподрядчик, приняв условия контракта, должен выполнить работу на тех же условиях, что и подрядчик или лучших, но никак не худших.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии