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

UptoLike

Объектно-ориентированное программирование на С++
double y;
};
При решении задач необходимо вычислять значения функций,
заданных с помощью объектов класса Function, в различных точках
пространства. Для этого в классе должен быть определен
соответствующий метод:
// функция в левой части ограничения
class Function
{
int typeFunction; // тип кривой: 1 – линейная,
// 2 – эллиптическая,
// 3 – гиперболическая,
// 4 – параболическая
// параметры задающие функции разных типов
double a, b, p, x0, y0;
public:
. . .
double Calculate(Point);
. . .
};
// метод вычисления функции
double Function::Calculate(Point pt)
{
double value = 0.0;
switch (typeFunction)
{
case 1:
value = a * pt.x + b * pt.y;
case 2:
value = (pt.x - x0) * (pt.x - x0) / (a * a)
+(pt.y - y0) * (pt.y - y0) / (b * b);
case 3:
value = (pt.x - x0) * (pt.x - x0) / (a * a)
-(pt.y - y0) * (pt.y - y0) / (b * b);
case 4:
value = (pt.y - y0) * (pt.y - y0)
– 2 * p * pt.x;
default:
// неизвестен тип функции,
// поэтому генерируется исключение
throw FunctionException();
}
return value;
189
                         Объектно-ориентированное программирование на С++
         double y;
    };

    При решении задач необходимо вычислять значения функций,
заданных с помощью объектов класса Function, в различных точках
пространства. Для этого в классе должен быть определен
соответствующий метод:

    // функция в левой части ограничения
    class Function
    {
         int typeFunction; // тип кривой: 1 – линейная,
                           //              2 – эллиптическая,
                           //              3 – гиперболическая,
                           //              4 – параболическая
         // параметры задающие функции разных типов
         double a, b, p, x0, y0;
    public:
         .    .    .
         double Calculate(Point);
         .    .    .
    };


    // метод вычисления функции
    double Function::Calculate(Point pt)
    {
         double value = 0.0;
         switch (typeFunction)
         {
              case 1:
                   value = a * pt.x + b * pt.y;
              case 2:
                   value = (pt.x - x0) * (pt.x - x0) / (a * a)
                        +(pt.y - y0) * (pt.y - y0) / (b * b);
              case 3:
                   value = (pt.x - x0) * (pt.x - x0) / (a * a)
                         -(pt.y - y0) * (pt.y - y0) / (b * b);
              case 4:
                   value = (pt.y - y0) * (pt.y - y0)
                            – 2 * p * pt.x;
         default:
              // неизвестен тип функции,
              // поэтому генерируется исключение
              throw FunctionException();
         }
         return value;

                                                                     189