ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
}
При такой реализации аналогичная структура программного кода
(использование оператора switch) будет использоваться во всех методах
класса Function. Недостатком этой структуры является
необходимость внесения изменений во все методы класса, если
добавляется новый тип функции или удаляется имеющийся. Если типов
функций будет много, то методы становятся объемными и трудно
читаемыми.
Еще одним недостатком является наличие неиспользуемых
переменных класса Function. Например, для задания линейной
функции достаточно использовать переменные typeFunction, a и b, а
переменные p, x0 и y0 будут определены, но их значения игнорируются.
Это говорит о неэффективном использовании памяти.
3.4.2. Иерархия классов кривых 1-ого и 2-ого порядка
Определить функции можно, используя другую структуру классов.
которая не приводит к изменению уже написанного кода при добавлении
нового типа функции и хранит для каждого типа функции столько
параметров, сколько необходимо для ее задания. В этом случае
используются принципы наследования и полиморфизма.
Для каждого типа функции задается собственный класс, например,
Line, Ellipse, Hyperbola, Parabola. Все эти классы обладают
одинаковым поведением – должно вычисляться значение функции, нужно
вводить параметры функции и выводить представление функции на
экран. Поэтому можно эти методы определить в отдельном классе
Function, родительском для классов различных типов функций.
Поскольку родительский класс «не знает», какая функция вычисляется,
как ее распечатать, какие параметры ее определяют, все эти методы
должны быть чисто виртуальными, а класс Function должен быть
абстрактным.
В этом случае классы для реализации функций будут иметь
следующие объявления:
// класс, задающий функцию в левой части ограничения
class Function
{
public:
190
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М. } При такой реализации аналогичная структура программного кода (использование оператора switch) будет использоваться во всех методах класса Function. Недостатком этой структуры является необходимость внесения изменений во все методы класса, если добавляется новый тип функции или удаляется имеющийся. Если типов функций будет много, то методы становятся объемными и трудно читаемыми. Еще одним недостатком является наличие неиспользуемых переменных класса Function. Например, для задания линейной функции достаточно использовать переменные typeFunction, a и b, а переменные p, x0 и y0 будут определены, но их значения игнорируются. Это говорит о неэффективном использовании памяти. 3.4.2. Иерархия классов кривых 1-ого и 2-ого порядка Определить функции можно, используя другую структуру классов. которая не приводит к изменению уже написанного кода при добавлении нового типа функции и хранит для каждого типа функции столько параметров, сколько необходимо для ее задания. В этом случае используются принципы наследования и полиморфизма. Для каждого типа функции задается собственный класс, например, Line, Ellipse, Hyperbola, Parabola. Все эти классы обладают одинаковым поведением – должно вычисляться значение функции, нужно вводить параметры функции и выводить представление функции на экран. Поэтому можно эти методы определить в отдельном классе Function, родительском для классов различных типов функций. Поскольку родительский класс «не знает», какая функция вычисляется, как ее распечатать, какие параметры ее определяют, все эти методы должны быть чисто виртуальными, а класс Function должен быть абстрактным. В этом случае классы для реализации функций будут иметь следующие объявления: // класс, задающий функцию в левой части ограничения class Function { public: 190
Страницы
- « первая
- ‹ предыдущая
- …
- 188
- 189
- 190
- 191
- 192
- …
- следующая ›
- последняя »