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

UptoLike

62
y0 = double.Parse(Console.ReadLine());
}
// переопределение виртуальной функции вывода на печать
public override string Output()
{
return "(x-" + x0 + ")^2/" + a * a +
"+ (y - " + y0 + ")^2/" + b * b;
}
}
При такой структуре хранения функции изменяется суть поля
function класса Constraint. Внедрение объекта абстрактного типа,
определяющего функцию левой части, осуществить нельзя. Поэтому в класс
ограничения включается ссылка на базовый класс, которая может хранить
адрес объекта любого дочернего класса. С помощью такой ссылки будут
вызваны виртуальные методы вычисления, ввода и распечатки функций
дочерних классов. Таким образом, существенно изменятся методы класса
Constraint.
Теперь приведем объявление классов Constraint и Set с
внесенными изменениями:
// класс, определяющий ограничение
class Constraint
{
Function function; // ссылка на объект функции
// в левой части ограничения
double b; // правая часть
TypeInequation type; // тип ограничения
// конструктор ограничения – параметры ограничения
// инициализируются путем ввода с клавиатуры
public Constraint()
{
Input();
}
// метод проверки выполнения ограничения
public bool IsExecute(double x, double y)
{
// вычисление функции левой части ограничения
double val = function.Сalculate(x, y);
// сравнение с правой частью согласно виду ограничения
switch(type)
{
case TypeInequation.le:
if (val <= b)
return true;
          y0 = double.Parse(Console.ReadLine());
      }

      // переопределение виртуальной функции вывода на печать
      public override string Output()
      {
         return "(x-" + x0 + ")^2/" + a * a +
                                "+ (y - " + y0 + ")^2/" + b * b;
      }
  }

     При такой структуре хранения функции изменяется суть поля
function класса Constraint. Внедрение объекта абстрактного типа,
определяющего функцию левой части, осуществить нельзя. Поэтому в класс
ограничения включается ссылка на базовый класс, которая может хранить
адрес объекта любого дочернего класса. С помощью такой ссылки будут
вызваны виртуальные методы вычисления, ввода и распечатки функций
дочерних классов. Таким образом, существенно изменятся методы класса
Constraint.
     Теперь приведем объявление классов Constraint и Set с
внесенными изменениями:

  // класс, определяющий ограничение
  class Constraint
  {
     Function function;              //   ссылка на объект функции
                                     //   в левой части ограничения
     double b;                       //   правая часть
     TypeInequation type;            //   тип ограничения

      // конструктор ограничения – параметры ограничения
      // инициализируются путем ввода с клавиатуры
      public Constraint()
      {
         Input();
      }

      // метод проверки выполнения ограничения
      public bool IsExecute(double x, double y)
      {
         // вычисление функции левой части ограничения
         double val = function.Сalculate(x, y);
         // сравнение с правой частью согласно виду ограничения
         switch(type)
         {
            case TypeInequation.le:
                     if (val <= b)
                        return true;

                                                                      62