[x]. Предусловие задает область определения
[x]. Постусловие задает для каждого
Правило Утверждения Переобъявления означает, что повторное объявление может расширять область определения и сужать множество результатов. Пометив новые множества знаком
DOM' DOM
RESULTS' (x) RESULTS (x) для всех x из DOM
Предусловие устанавливает, что подпрограмма и ее повторные объявления, как минимум, должны принимать некоторые входы (
В этом описании состояние системы в период выполнения определяется состоянием (значениями) всех достижимых объектов. Кроме того, входные состояния (элементы
Глобальная структура наследования
Ранее мы уже ссылались на универсальные (universal) классы
Универсальные классы
Удобно использовать следующее соглашение:
Правило Универсального Класса
Любой класс, не содержащий предложение наследования, неявно содержит предложение вида:
inherit ANY,
ссылающееся на класс
Тем самым становится возможным определить по умолчанию целый ряд компонентов, наследуемых всеми классами. Эти компоненты реализуют общие, универсальные операции: копирование, клонирование, сравнение, базовый ввод и вывод.
Для большей гибкости поместим эти компоненты в класс
Для построения нетривиального |
Рис. 16.4. Глобальная структура наследования
Нижняя часть иерархии
На рис. 16.4 представлен также класс
[x].
[x]. Чтобы скрыть компонент от всех клиентов, достаточно экспортировать его только классу
Первое свойство объясняет, почему значение
По симметрии ко второму свойству заметим, что объявление, начинающееся с feature и экспортирующее все компоненты во все классы, написанные разработчиком, считается сокращением от feature {ANY}. Для повторного экспорта во все классы