ВУЗ:
Составители:
Задание
Для всех абстракций описать внутреннюю реализацию.
Подготовка к лабораторной работе
Перед выполнением лабораторной работы необходимо прочитать краткие
теоретические сведения.
Для допуска к работе студент обязан отчитаться по контрольным вопросам
прочитанного раздела.
Выполнение лабораторной работы
Для выполнения работы необходимо:
− описать внутреннюю реализацию;
− оформить работу и отчитаться по ней.
Методические указания к выполнению лабораторной работы
Внутреннее строение (реализация) классов и объектов разрабатывается только
после завершения проектирования их внешнего облика. При этом необходимо принять
два проектных решения: выбрать способ представления класса или объекта и способ
размещения их в модуле.
Представление классов и объектов почти всегда связано с ограничением доступа к
элементам абстракции. Это позволяет вносить изменения (например,
перераспределение памяти и временных ресурсов) без нарушения функциональных
связей с другими классами и объектами. Вирт считает, что «выбор способа
представления является нелегкой задачей и не определяется только техническими
возможностями
. Он всегда должен рассматриваться с точки зрения операций над
данными». Рассмотрим, например, класс, соответствующий совокупности планов
полета самолетов. Как его нужно оптимизировать — по эффективности поиска или по
времени включения в план и удаления из него? Поскольку невозможно реализовать и
то и другое одновременно, нужно сделать выбор на основе знаний и
характера
задачи. Не всегда удается сделать такой выбор и тогда создается семейство классов с
одинаковым интерфейсом, поведение которых зависит от направления оптимизации.
Одним из наиболее трудных решений является выбор между возможностью
вычисления элементов состояния объекта и их хранением в виде поля данных.
Рассмотрим, например, класс «корпус» с соответствующим ему методом «объем
». Этот
метод возвращает значение объема объекта. В структуре объекта хранятся данные о
высоте конуса и радиусе основания в виде отдельных полей. Следует ли еще создать
поле данных для значения объема или следует вычислять его по мере необходимости с
помощью метода «объем»? Если мы хотим получать значение объема максимально
быстро, нужно
создавать соответствующее поле данных. Если важнее экономия
памяти, лучше вычислить это значение. Оптимальный способ представления объекта
всегда определяется характером решаемой задачи. В любом случае этот выбор не
должен зависеть от внешних особенностей (интерфейса) класса, наоборот, такой выбор
не должен сказываться на отношениях с объектами-пользователями.