Объектно-ориентированное программирование на С#. Андрианова А.А - 99 стр.

UptoLike

99
// переопределенный виртуальный метод печати
// результата решения уравнения
override public void PrintSolution()
{
Console.WriteLine("{0} = 0", c);
if (count == -1)
{
// вызов базовой реализации метода
base.PrintSolution();
return;
}
if (count==0)
Console.WriteLine("Корней нет");
else
Console.WriteLine("Любое x является решением");
}
}
В класс Equation_0 также вводятся элементы, необходимые для
задания уравнения нулевого порядка: коэффициент c, конструктор класса.
Аналогичным образом определяются классы и для других типов уравнений.
В нашем случае это классы Equation_1, Equation_2.
Для решения конкретных типов уравнений в базовом классе создадим
специальный метод CreateEquation(), который производит анализ типа
уравнения по его коэффициентам и создает объект-уравнение нужного типа.
Поскольку при создании уравнений нет необходимости создавать объект
базового класса, этот метод определим как статический. Тип возвращаемого
значения метода CreateEquation ссылка на базовый класс, которая
может хранить адрес объекта любого дочернего класса.
// метод базового класса, предназначенный для создания
// объектов-уравнений в зависимости от набора коэффициентов
public static Equation CreateEquation
(params double[] coef)
{
double a, b, c;
// инициализируем коэффициенты уравнения
// в зависимости от длины массива коэффициентов
switch (coef.Length)
{
case 3:
a = coef[0];
b = coef[1];
c = coef[2];
break;
case 2:
a = 0.0;
b = coef[0];
       // переопределенный виртуальный метод печати
       // результата решения уравнения
       override public void PrintSolution()
       {
          Console.WriteLine("{0} = 0", c);
          if (count == -1)
          {
             // вызов базовой реализации метода
             base.PrintSolution();
             return;
          }
          if (count==0)
             Console.WriteLine("Корней нет");
          else
             Console.WriteLine("Любое x является решением");
       }
   }
     В класс Equation_0 также вводятся элементы, необходимые для
задания уравнения нулевого порядка: коэффициент c, конструктор класса.
Аналогичным образом определяются классы и для других типов уравнений.
В нашем случае это классы Equation_1, Equation_2.
     Для решения конкретных типов уравнений в базовом классе создадим
специальный метод CreateEquation(), который производит анализ типа
уравнения по его коэффициентам и создает объект-уравнение нужного типа.
Поскольку при создании уравнений нет необходимости создавать объект
базового класса, этот метод определим как статический. Тип возвращаемого
значения метода CreateEquation – ссылка на базовый класс, которая
может хранить адрес объекта любого дочернего класса.

   // метод базового класса, предназначенный для создания
   // объектов-уравнений в зависимости от набора коэффициентов
   public static Equation CreateEquation
                              (params double[] coef)
   {
      double a, b, c;
      // инициализируем коэффициенты уравнения
      // в зависимости от длины массива коэффициентов
      switch (coef.Length)
      {
         case 3:
            a = coef[0];
            b = coef[1];
            c = coef[2];
            break;
         case 2:
            a = 0.0;
            b = coef[0];

                                                                      99