ВУЗ:
Составители:
Рубрика:
105
Equation e = new Equation();
// обращение к виртуальному методу базового класса
e.Solve();
// создание объекта класса Equation_2
e = Equation.CreateEquation(1, -4, 4);
// вызов вирутального метода решения
// квадратного уравнения из класса Equation_2
e.Solve();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Рис.6.4. Результат работы программы решения уравнений
с созданием иерархии классов
В результате работы программного кода, приведенного в качестве
примера, первое сообщение соответствует выполнению метода Solve()
базового класса, поскольку объект для конкретного типа уравнения еще не
создан и решать пока нечего. Далее, анализируя коэффициенты уравнения с
помощью метода CreateEquation(), создается объект типа Equation_2
и производится решение уравнения, после чего результат выводится на
экран. В этом случае выполняются переопределенные методы Solve() и
PrintSolution() класса Equation_2.
Приведенный пример показывает, что возникают случаи, когда
использование объекта базового класса несущественно, но выделение общего
поведения желательно. В этих ситуациях можно выделить базовый класс,
который определяет некоторое абстрактное понятие с абстрактным
поведением. Такие классы называют абстрактными.
Поскольку поведение этих классов определить невозможно,
виртуальные функции только объявляются в классе, но не определяются.
Equation e = new Equation();
// обращение к виртуальному методу базового класса
e.Solve();
// создание объекта класса Equation_2
e = Equation.CreateEquation(1, -4, 4);
// вызов вирутального метода решения
// квадратного уравнения из класса Equation_2
e.Solve();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Рис.6.4. Результат работы программы решения уравнений
с созданием иерархии классов
В результате работы программного кода, приведенного в качестве
примера, первое сообщение соответствует выполнению метода Solve()
базового класса, поскольку объект для конкретного типа уравнения еще не
создан и решать пока нечего. Далее, анализируя коэффициенты уравнения с
помощью метода CreateEquation(), создается объект типа Equation_2
и производится решение уравнения, после чего результат выводится на
экран. В этом случае выполняются переопределенные методы Solve() и
PrintSolution() класса Equation_2.
Приведенный пример показывает, что возникают случаи, когда
использование объекта базового класса несущественно, но выделение общего
поведения желательно. В этих ситуациях можно выделить базовый класс,
который определяет некоторое абстрактное понятие с абстрактным
поведением. Такие классы называют абстрактными.
Поскольку поведение этих классов определить невозможно,
виртуальные функции только объявляются в классе, но не определяются.
105
Страницы
- « первая
- ‹ предыдущая
- …
- 103
- 104
- 105
- 106
- 107
- …
- следующая ›
- последняя »
