Объектно-ориентированное программирование на C++. Андрианова А.А - 192 стр.

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// класс, задающий гиперболическую функцию
class Hyperbola : public Function
{
// параметры, задающие гиперболическую функцию
double a, b;
double x0, y0;
public:
// конструктор гиперболической функции
Hyperbola(double = 1, double = 1,
double = 1, double = 1);
// переопределение виртуальной функции
// вычисления функции
double Calculate(Point);
// переопределение виртуальной функции ввода
// параметров функции
void Input();
// переопределение виртуальной функции
// вывода на печать
void Output();
};
// класс, задающий параболическую функцию
class Parabola: public Function
{
// параметры, задающие параболическую функцию
double p;
double y0;
public:
// конструктор параболической функции
Parabola(double = 1, double = 1);
// переопределение виртуальной функции
// вычисления функции
double Calculate(Point);
// переопределение виртуальной функции ввода
// параметров функции
void Input();
// переопределение виртуальной функции
// вывода на печать
void Output();
};
При такой структуре хранения функции требуется внести изменения
в класс Constraint. Внедрение объекта абстрактного типа,
определяющего функцию левой части, осуществить нельзя. Поэтому в
класс ограничения включается указатель на базовый класс, который
может хранить адрес объекта любого дочернего класса. С помощью
такого указателя будут вызваны виртуальные методы вычисления, ввода
и распечатки функций дочерних классов.
192
                               Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
      // класс, задающий гиперболическую функцию
      class Hyperbola : public Function
      {
           // параметры, задающие гиперболическую функцию
           double a, b;
           double x0, y0;
      public:
           // конструктор гиперболической функции
           Hyperbola(double = 1, double = 1,
                                    double = 1, double = 1);
           // переопределение виртуальной функции
           // вычисления функции
           double Calculate(Point);
           // переопределение виртуальной функции ввода
           // параметров функции
           void Input();
           // переопределение виртуальной функции
           // вывода на печать
           void Output();
      };

      // класс, задающий параболическую функцию
      class Parabola: public Function
      {
           // параметры, задающие параболическую функцию
           double p;
           double y0;
      public:
           // конструктор параболической функции
           Parabola(double = 1, double = 1);
           // переопределение виртуальной функции
           // вычисления функции
           double Calculate(Point);
           // переопределение виртуальной функции ввода
           // параметров функции
           void Input();
           // переопределение виртуальной функции
           // вывода на печать
           void Output();
      };
     При такой структуре хранения функции требуется внести изменения
в класс Constraint. Внедрение объекта абстрактного типа,
определяющего функцию левой части, осуществить нельзя. Поэтому в
класс ограничения включается указатель на базовый класс, который
может хранить адрес объекта любого дочернего класса. С помощью
такого указателя будут вызваны виртуальные методы вычисления, ввода
и распечатки функций дочерних классов.

192