Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 60 стр.

UptoLike

59
// класс, определяющий ограничение
class Constraint
{
Function function; // объект, описывающий функцию
// в левой части ограничения
double b; // правая часть
TypeInequation type; // тип ограничения
. . .
}
// класс, определяющий множество
class Set
{
Constraint [] constraints; // массив ограничений
int n; // количество ограничений в системе
. . .
}
При определении, удовлетворяет ли точка ограничению, требуется
вычислять в этой точке значение функции, заданной с помощью объекта
класса Function. Для этого в классе должен быть определен
соответствующий метод:
// метод вычисления значения функции в заданной точке
public double Calculate(double x, double y)
{
double value = 0.0;
switch (typeFunction)
{
case 1:
value = a * x + b * y; break;
case 2:
value = (x - x0) * (x - x0) / (a * a) +
(y - y0) * (y - y0) / (b * b); break;
case 3:
value = (x - x0) * (x - x0) / (a * a)
(y - y0) * (y - y0) / (b * b); break;
case 4:
value = (y - y0) * (y - y0) 2*p*x; break;
default:
// неизвестен тип функции,
// поэтому генерируется исключение
throw new Exception("Неизвестен тип функции");
}
return value;
}
     // класс, определяющий ограничение
     class Constraint
     {
        Function function;        // объект, описывающий функцию
                                  // в левой части ограничения
        double b;                 // правая часть
        TypeInequation type;      // тип ограничения
        . . .
     }

     // класс, определяющий множество
     class Set
     {
        Constraint [] constraints; // массив ограничений
        int n;                    // количество ограничений в системе
        . . .
     }

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

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




59