ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
В классе Constraint используется принцип полиморфизма при
работе с объектами функций левой части ограничения. Класс содержит
указатель на абстрактный класс Function, который может хранить
адрес объекта класса Line, Ellipse, Hyperbola или Parabola,
задающего конкретную функцию. При вводе ограничения у пользователя
запрашивается вид нужной функции и создается объект
соответствующего класса, адрес которого сохраняется в переменной-
указателе function. При вызове методов Input(), Output() и
Calculate(Point) через указатель function будут вызываться
виртуальные функции того класса, адрес которого хранится в function.
Такие вызовы выполняются как в функциях ввода/вывода ограничения,
так и в методах проверки выполнения некоторых условий для точки.
Таким образом, анализировать в этих методах тип функции левой части
ограничения уже не потребуется.
Приведем далее определение методов класса Constraint и
дружественных ему функций.
// функция, определяющая оператор ввода ограничения
istream& operator >> (istream& in, Constraint& ob)
{
int choice;
// ввод типа ограничения
while(true)
{
cout << "Линейная - 1,
Эллиптическая - 2,
Гиперболическая - 3,
Параболическая - 4";
in >> choice;
if(choice >= 1 && choice <= 4)
break;
}
// создание объекта функции левой части ограничения
// в зависимости от введенного типа
switch(choice)
{
case 1:
ob.function = new Line(); break;
case 2:
ob.function = new Ellipse(); break;
case 3:
ob.function = new Hyperbola(); break;
195
Объектно-ориентированное программирование на С++
В классе Constraint используется принцип полиморфизма при
работе с объектами функций левой части ограничения. Класс содержит
указатель на абстрактный класс Function, который может хранить
адрес объекта класса Line, Ellipse, Hyperbola или Parabola,
задающего конкретную функцию. При вводе ограничения у пользователя
запрашивается вид нужной функции и создается объект
соответствующего класса, адрес которого сохраняется в переменной-
указателе function. При вызове методов Input(), Output() и
Calculate(Point) через указатель function будут вызываться
виртуальные функции того класса, адрес которого хранится в function.
Такие вызовы выполняются как в функциях ввода/вывода ограничения,
так и в методах проверки выполнения некоторых условий для точки.
Таким образом, анализировать в этих методах тип функции левой части
ограничения уже не потребуется.
Приведем далее определение методов класса Constraint и
дружественных ему функций.
// функция, определяющая оператор ввода ограничения
istream& operator >> (istream& in, Constraint& ob)
{
int choice;
// ввод типа ограничения
while(true)
{
cout << "Линейная - 1,
Эллиптическая - 2,
Гиперболическая - 3,
Параболическая - 4";
in >> choice;
if(choice >= 1 && choice <= 4)
break;
}
// создание объекта функции левой части ограничения
// в зависимости от введенного типа
switch(choice)
{
case 1:
ob.function = new Line(); break;
case 2:
ob.function = new Ellipse(); break;
case 3:
ob.function = new Hyperbola(); break;
195
Страницы
- « первая
- ‹ предыдущая
- …
- 193
- 194
- 195
- 196
- 197
- …
- следующая ›
- последняя »
