Основы объектно-ориентированного программирования на языке C# book | Page 147

7.7 Полiморфiзм public class Rational
{ int a; // Чисельник int b; // Знаменник
}
// Конструктори й iншi методи...............................
Наведемо приклади перевантаження унарних операторiв для нашого класу Rational. Перевантаження операнду-( змiна знака):
public static Rational operator-( Rational x)
{ Rational t = new Rational(); t. a =- x. a; t. b = x. b; return t;
}
Тут у методi створюється новий об’ єкт t типу Rational i потiм обчислюються значення полiв цього об’ єкта. Метод повертає результат— змiнну t типу Rational, вихiдний об’ єкт залишається незмiнним. Приклад використання операцiï:
Rational x = new Rational( 2,5); Rational y = new Rational(); y =-x;
Пiсля цих дiй змiнна y буде мати значення-2 / 5. Перевантаження операнду ++( iнткремент):
public static Rational operator ++( Rational x)
{ Rational t = new Rational(); t. a = x. a + x. b; t. b = x. b; return t;
}
Перевантажимо бiнарний операнд +:
public static Rational operator +( Rational x, Rational y)
{ int t1 = x. a * y. b + x. b * y. a; int t2 = x. b * y. b; socrat( ref t1, ref t2); return new Rational( t1, t2);
}
Завдяки тому, що при виконаннi операцiï додавання, ми можемо отримати дрiб, для якого необхiдне скорочення, то ми викликаємо закритий статичний метод Euklid(). Цей метод по скороченню дроби необхiдно робити статичним, тому-що зi статичного методу( а метод, що перевантажує додавання, зобов’ язано бути статичним!) можна викликати теж лише статичний метод.
147