ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
В классе 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
- …
- следующая ›
- последняя »