Книга: Технологии программирования
8.8.5. Шаг 4. Задание интерфейсов классов
8.8.5. Шаг 4. Задание интерфейсов классов
Спрячем подробности реализации за фасадом интерфейса. Объект инкапсулирует поведение, если он умеет выполнять некоторые действия, но подробности, как это делается, остаются скрытыми за фасадом интерфейса. Эта идея была сформулирована специалистом по информатике Дэвидом Парнасом в виде правил, которые часто называются принципами Парнаса.
Правило 1. Разработчик программы должен предоставлять пользователю всю информацию, которая нужна для эффективного использования приложения, и ничего кроме этого.
Правило 2. Разработчик программного обеспечения должен знать только требуемое поведение объекта и ничего кроме этого.
Следствие принципа отделения интерфейса от реализации состоит в том, что программист может экспериментировать с различными алгоритмами, не затрагивая остальные классы объектов программы.
На этом шаге дается четкое описание классов, их данных и методов (опуская реализацию и, возможно, скрытые методы). Всем методам задаются точные типы параметров.
Идеальный интерфейс представляет пользователю полный и последовательный набор понятий; согласован со всеми частями компоненты; не открывает подробности реализации и может быть реализован различными способами; ограниченно и четко определенным образом зависит от других интерфейсов.
Интерфейсы классов предоставляют полную информацию для реализации классов на этапе кодирования.
Существует золотое правило: если класс не допускает, по крайней мере, двух существенно отличающихся реализаций, то что-то явно не в порядке с этим классом, это просто замаскированная реализация, а не представление абстрактного понятия. Во многих случаях для ответа на вопрос: "Достаточно ли интерфейс класса независим от реализации?" — надо указать, возможна ли для класса схема обычных вычислений.
- 8.8.1. Укрупненное изложение проектной процедуры Б. Страуструпа
- 8.8.2. Шаг 1. Выделение понятий и установление основных связей между ними
- 8.8.3. Шаг 2. Уточнение классов с определением набора операций (методов) для каждого
- 8.8.4. Шаг 3. Уточнение классов с точным определением их зависимостей от других классов
- 8.8.5. Шаг 4. Задание интерфейсов классов
- 8.8.6. Перестройка иерархии классов
- 8.8.7. Свод правил
- 8.8.8. Пример простейшего проекта
- Пошаговые инструкции для перехода на 3-й диалект
- Задание a1 для исполнителя Робот
- Семерка - первый шаг нового семейства
- Шаг 1. Приветствие
- Шаг 1
- Домашнее задание
- Задание
- Шаг 6 Завершение продажи на кассе, предложение сопутствующих товаров
- Первые шаги в нефтяном деле
- 3.6. Шаг 5. Балансировка ассортимента по глубине
- 2.3.6. Задание объектов физической памяти
- Шаг 2. Начало беседы