ВУЗ:
Составители:
Рубрика:
97
В данном случае две одинаковые строки кода будут приводить к
вызову двух разных методов: базового и производного классов.
Конструкторы классов не могут являться виртуальными функциями,
поскольку производным классом не наследуется конструктор базового
класса.
Виртуальные функции могут быть перекрыты в производных классах
только виртуальными функциями. В этом случае метод производного класса
не считается переопределенным и будет вызываться только для объекта
производного класса.
Снова обратимся к классу «Квадратное уравнение». В приложении
выделяются три вида уравнений – уравнения 0-ого, 1-ого и 2-ого порядков.
Для решения каждого из них используется свой собственный метод решения.
В случае расширения функциональности класса для решения уравнений
более высоких порядков, появится необходимость внесения изменений в
методы анализа и решения уравнения. Если типов уравнений будет много, то
при добавлении нового типа уравнения методы необходимо изменять, при
этом их код становится объемным. Еще одним недостатком является наличие
неиспользуемых переменных класса Equation. Например, для задания
уравнения 0-ого порядка достаточно хранить один коэффициент, а
переменные для других коэффициентов и корней не нужны. Остальные
элементы класса Equation будут использовать ресурсы, но их значения
будут игнорироваться. Это говорит о неэффективном использовании памяти.
Определить уравнения можно, используя другую структуру классов,
которая не приводит к изменению уже написанного кода при добавлении
нового типа уравнений и хранит для каждого типа столько параметров,
сколько необходимо для его задания.
Для каждого типа уравнения задается собственный класс, например,
Equation_0, Equation_1, Equation_2. Все эти классы обладают
одинаковым поведением – решается уравнение и печатается результат.
Поэтому можно эти методы определить как виртуальные в отдельном
родительском классе Equation. Поскольку родительский класс «не знает»,
каков тип уравнения, как его решать и как распечатать результат, методы
родительского класса будут только информировать о том, что необходимо
использовать объекты классов-наследников.
Базовый класс нашего примера теперь будет иметь вид:
В данном случае две одинаковые строки кода будут приводить к
вызову двух разных методов: базового и производного классов.
Конструкторы классов не могут являться виртуальными функциями,
поскольку производным классом не наследуется конструктор базового
класса.
Виртуальные функции могут быть перекрыты в производных классах
только виртуальными функциями. В этом случае метод производного класса
не считается переопределенным и будет вызываться только для объекта
производного класса.
Снова обратимся к классу «Квадратное уравнение». В приложении
выделяются три вида уравнений – уравнения 0-ого, 1-ого и 2-ого порядков.
Для решения каждого из них используется свой собственный метод решения.
В случае расширения функциональности класса для решения уравнений
более высоких порядков, появится необходимость внесения изменений в
методы анализа и решения уравнения. Если типов уравнений будет много, то
при добавлении нового типа уравнения методы необходимо изменять, при
этом их код становится объемным. Еще одним недостатком является наличие
неиспользуемых переменных класса Equation. Например, для задания
уравнения 0-ого порядка достаточно хранить один коэффициент, а
переменные для других коэффициентов и корней не нужны. Остальные
элементы класса Equation будут использовать ресурсы, но их значения
будут игнорироваться. Это говорит о неэффективном использовании памяти.
Определить уравнения можно, используя другую структуру классов,
которая не приводит к изменению уже написанного кода при добавлении
нового типа уравнений и хранит для каждого типа столько параметров,
сколько необходимо для его задания.
Для каждого типа уравнения задается собственный класс, например,
Equation_0, Equation_1, Equation_2. Все эти классы обладают
одинаковым поведением – решается уравнение и печатается результат.
Поэтому можно эти методы определить как виртуальные в отдельном
родительском классе Equation. Поскольку родительский класс «не знает»,
каков тип уравнения, как его решать и как распечатать результат, методы
родительского класса будут только информировать о том, что необходимо
использовать объекты классов-наследников.
Базовый класс нашего примера теперь будет иметь вид:
97
Страницы
- « первая
- ‹ предыдущая
- …
- 95
- 96
- 97
- 98
- 99
- …
- следующая ›
- последняя »
