Опубликован: 23.10.2005 | Доступ: свободный | Студентов: 4089 / 201 | Оценка: 4.44 / 4.19 | Длительность: 33:04:00
Специальности: Программист
Лекция 7:

Полезные приемы

< Лекция 6 || Лекция 7: 12 || Лекция 8 >

Техника наследования

Повторные объявления

Переопределяя подпрограмму, используйте специфические алгоритмы для повышения эффективности: perimeter в POLYGON, RECTANGLE, SQUARE.

Переопределяйте функцию как атрибут: balance в ACCOUNT.

Делайте эффективным отложенный компонент родителя.

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

Два или более эффективных компонентов можно переопределить совместно.

Доступ к родительской версии при переопределении обеспечивает precursor.

Повторные объявления сохраняют семантику (правила утверждений).

Отложенные классы

Отложенные классы описывают категории высокого уровня.

Отложенные классы служат средством анализа и проектирования, описывая абстракции без ссылок на реализацию.

Классы поведения: задают общее поведение. Эффективные подпрограммы вызывают отложенные. Класс является частично отложенным, частично реализованным (охватывает частичный выбор реализации АТД).

Полиморфизм

Полиморфные структуры данных: наследование и универсальность позволяют комбинировать в нужных пропорциях подобие и вариации.

Описатели: благодаря полиморфным атрибутам задают компонент изменяемого типа.

Динамическое связывание: позволяет избежать явного разбора случаев.

Динамическое связывание на полиморфных структурах данных: применяет к каждому элементу структуры операцию, соответствующую элементу.

В точке единственного выбора полезна предварительно вычисленная структура данных с одним объектом каждого возможного типа (как в образце с откатами).

Формы наследования

Убедитесь, что все использования наследования принадлежат одной из категорий в таксономии.

Наследование подтипов.

Наследование, приводящее к расширению модуля.

Брак по расчету: реализация абстракции конкретной структурой.

Наследование с ограничением: добавление ограничения.

Наследование общецелевых механизмов благодаря классам, предоставляющим льготы.

Наследование функциональных вариаций: "организованное хакерство", принцип Открыт-Закрыт.

Наследование вариации типа: ковариантность.

< Лекция 6 || Лекция 7: 12 || Лекция 8 >