проектирования'. Отложенные процедуры - это тоже изобретение Симулы (под другим именем (виртуальные процедуры) и при других соглашениях).
Отношение 'является' изучалось, в основном, с точки зрения приложений искусственного интеллекта в [Brachman 1983].
Формальное изучение наследования и его семантики проведено в [Cardelli 1984].
Соглашение об использовании для переопределения двойного плюса пришло из системы обозначений Business Object Notation, предложенной Nerson'ом и Walden'ом (ссылки в лекции 9 курса 'Основы объектно-ориентированного проектирования').
Конструкция
Упражнения
У14.1 Многоугольники и прямоугольники
Дополните версии классов
У14.2 Многоугольник с малым числом вершин
Инвариант класса
У14.3 Геометрические объекты с двумя координатами
Опишите класс
У14.4 Наследование без классов
В этой лекции были представлены два взгляда на наследование: будучи модулем, класс-наследник предлагает службы своего родителя плюс еще некоторые, будучи типом, он реализует отношение 'является' (каждый экземпляр наследника является также экземпляром каждого из родителей). 'Пакетами' модульных, но не ОО-языков (таких как Ада (Ada) или Модула-2 (Modula-2)) являются модули, но не типы. При первой интерпретации к ним можно было бы применить наследование. Обсудите, в каком виде наследование может быть введено в модульные языки. Не забудьте рассмотреть при этом принцип Открыт-Закрыт.
У14.5 Классы без объектов
Не разрешается создавать объекты отложенных классов. В одной из предыдущих лекций был указан другой способ создания класса без объектов: включить в него пустую процедуру создания. Эквивалентны ли эти два механизма? Можно ли выделить случаи, когда использование одного из них предпочтительнее, чем другого? (Указание: в отложенном классе должен быть хоть один отложенный компонент.)
У14.6 Отложенные классы и прототип
Отложенные классы нельзя инициализировать. С другой стороны, были приведены аргументы в пользу того, чтобы в первой версии класса в проекте все компоненты оставались отложенными. Может появиться желание 'выполнить' такой проект: при проектировании ПО иногда хочется вступить в игру как можно раньше, исполнить неполные реализации, чтобы получить практический опыт и проверить некоторые аспекты системы даже при неполностью реализованных других аспектах. Обсудите доводы за и против того, чтобы иметь в компиляторе специальную параметр 'прототип', позволяющий инициализировать отложенный класс и выполнить отложенный компонент (как пустую операцию). Обсудите детали.
У14.7 Библиотека поиска в таблицах (семестровый проект)
Основываясь на обсуждении таблиц в этой лекции и в лекции о повторном использовании, спроектируйте библиотеку классов таблиц, включающую различные категории представлений таблиц: хеш- таблицы, последовательные (линейные) таблицы, древообразные таблицы и др.
У14.8 Виды отложенных компонентов
Может ли атрибут быть отложенным?
У14.9 Комплексные числа
(Это упражнение предполагает знакомство со всеми лекциями вплоть до 5-й курса 'Основы объектно-ориентированного проектирования'.) В примере, рассмотренном при обсуждении интерфейса модулей, использовались комплексные числа с двумя разными представлениями, при этом соответствующие изменения в представлениях остались 'за кадром'. Определите можно ли получить эквивалентный результат с помощью наследования, а именно, создать класс
