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

UptoLike

16
В определении функции сложения дроби с целым числом
осуществляется преобразование этого целого числа в дробь (создается новый
объект класса Fraction, значение которого равно целому числу) и вызов
оператора сложения двух дробей.
// метод сложения дроби с целым числом
static public Fraction operator + (Fraction ob1, int a)
{
// если к дроби прибавляется число, равное 0,
// результат совпадает с операндом-дробью
if (a == 0)
return new Fraction(ob1.numerator, ob1.denominator,
ob1.intPart, ob1.sign);
// создание новой дроби ob2 = a
Fraction ob2=new Fraction(0, 1, Math.Abs(a), a/Math.Abs(a));
Fraction res = ob1 + ob2; //сложение двух дробей
return res;
}
// метод сложения целого числа и дроби
static public Fraction operator + (int a, Fraction ob1)
{
// если к дроби прибавляется число, равное 0,
// результат совпадает с операндом-дробью
if (a == 0)
return new Fraction(ob1.numerator, ob1.denominator,
ob1.intPart, ob1.sign);
// создание новой дроби ob2 = a
Fraction ob2=new Fraction(0, 1, Math.Abs(a), a/Math.Abs(a));
Fraction res = ob1 + ob2; //сложение двух дробей
return res;
}
Аналогичным образом определяют и другие арифметические операции.
Обсудим особенности ввода и вывода рациональных дробей.
Поскольку при вводе пользователь задает символьную строку,
представляющую дробь, то задача ввода дроби сводится к созданию метода
преобразования символьной строки в дробь. При выводе происходит
противоположная операция. Поэтому для организации вывода в класс
Fraction введем операцию неявного преобразования дроби в тип string,
а для ввода статический метод Parse() формирования объекта-дроби из
строки.
Для представления дроби пользователю удобно использовать ее
привычный математический вид с учетом существования целой и/или
     В определении функции сложения дроби с целым числом
осуществляется преобразование этого целого числа в дробь (создается новый
объект класса Fraction, значение которого равно целому числу) и вызов
оператора сложения двух дробей.

   // метод сложения дроби с целым числом
   static public Fraction operator + (Fraction ob1, int a)
   {
      // если к дроби прибавляется число, равное 0,
      // результат совпадает с операндом-дробью
      if (a == 0)
         return new Fraction(ob1.numerator, ob1.denominator,
                                      ob1.intPart, ob1.sign);
      // создание новой дроби ob2 = a
      Fraction ob2=new Fraction(0, 1, Math.Abs(a), a/Math.Abs(a));
      Fraction res = ob1 + ob2;       //сложение двух дробей
      return res;
   }

   // метод сложения целого числа и дроби
   static public Fraction operator + (int a, Fraction ob1)
   {
      // если к дроби прибавляется число, равное 0,
      // результат совпадает с операндом-дробью
      if (a == 0)
         return new Fraction(ob1.numerator, ob1.denominator,
                                      ob1.intPart, ob1.sign);
      // создание новой дроби ob2 = a
      Fraction ob2=new Fraction(0, 1, Math.Abs(a), a/Math.Abs(a));
      Fraction res = ob1 + ob2;       //сложение двух дробей
      return res;
   }

      Аналогичным образом определяют и другие арифметические операции.
      Обсудим особенности ввода и вывода рациональных дробей.
Поскольку при вводе пользователь задает символьную строку,
представляющую дробь, то задача ввода дроби сводится к созданию метода
преобразования символьной строки в дробь. При выводе происходит
противоположная операция. Поэтому для организации вывода в класс
Fraction введем операцию неявного преобразования дроби в тип string,
а для ввода – статический метод Parse() формирования объекта-дроби из
строки.
      Для представления дроби пользователю удобно использовать ее
привычный математический вид с учетом существования целой и/или

                                                                       16