- •План лекции
- •Синтаксис описания класса
- •Методы-свойства
- •Методы-свойства
- •Методы-свойства
- •Методы-свойства
- •Пример работы с полями
- •Индексаторы
- •Индексаторы
- •Индексаторы
- •Конструкторы и деструкторы
- •Пример проектирования
- •Конструкторы класса Rational
- •Методы класса Rational
- •Печать рациональных чисел
- •Тестирование создания рациональных чисел
- •Операции над рациональными числами. Сложение
- •Операции над рациональными числами. Сложение
- •Операции над рациональными числами. Вычитание
- •Операции над рациональными числами. Умножение
- •Операции над рациональными числами. Деление
- •Пример применения
- •Вопросы
Конструкторы и деструкторы
класса
Person pers1 = new Person(), pers2 = new Person(); Person pers3= new Person("Петрова");
static Person()
{
Console.WriteLine("Выполняется статический конструктор!");
}
~Person()
{
//Код деструктора
}
03. C#. ООП. Классы |
12 |
Пример проектирования
класса/// <summary> Класс Rational определяет новый тип данных -
///рациональные числа и основные операции над ними - сложение,
///умножение, вычитание и деление. Рациональное число задается
///парой целых чисел (m,n) и изображается обычно в виде дроби m/n.
///Число m называется числителем,n - знаменателем. Для
///каждого рационального числа существует множество его
///представлений, например, 1/2, 2/4, 3/6, 6/12 - задают
///одно и тоже рациональное число. Среди всех представлений
///можно выделить то, в котором числитель и знаменатель
///взаимно несократимы. Такой представитель будет храниться
///в полях класса. Операции над рациональными числами
///определяются естественным для математики образом
///</summary>
public class Rational
{
// Описание тела класса Rational }//Rational
03. C#. ООП. Классы |
13 |
Конструкторы класса Rational
///<summary> Конструктор класса. Создает рациональное число
///m/n, эквивалентное a/b, но со взаимно несократимыми
///числителем и знаменателем. Если b=0, то результатом
///является рациональное число 0 -пара (0,1). </summary>
///<param name="a">числитель</param>
///<param name="b">знаменатель</param>
public Rational(int a, int b)
{
if(b==0) {m=0; n=1;} else
{
//приведение знака
if( b<0) {b=-b; a=-a;} //приведение к несократимой дроби int d = nod(a,b);
m=a/d; n=b/d;
}
}
03. C#. ООП. Классы |
14 |
Методы класса Rational
///<summary>
///Закрытый метод класса.
///Возвращает наибольший общий делитель чисел a,b
///</summary>
///<param name="a">первое число</param>
///<param name="b">второе число, положительное</param>
///<returns>НОД(a,b)</returns>
int nod(int m, int n)
{
int p=0;
m=Math.Abs(m); n =Math.Abs(n); if(n>m){p=m; m=n; n=p;}
do
{
p = m%n; m=n; n=p; }while (n!=0); return(m);
}//nod
03. C#. ООП. Классы |
15 |
Печать рациональных чисел
public void PrintRational(string name)
{
Console.WriteLine(" {0} = {1}/{2}",name,m,n);
}
03. C#. ООП. Классы |
16 |
Тестирование создания рациональных чисел
public void TestCreateRational()
{
Rational r1=new Rational(0,0), r2 = new Rational(1,1); Rational r3=new Rational(10,8), r4 = new Rational(2,6); Rational r5=new Rational(4,-12), r6 = new Rational (-12,-14); r1.PrintRational("r1:(0,0)");
r2.PrintRational("r2:(1,1)");
r3.PrintRational("r3:(10,8)");
r4.PrintRational("r4:(2,6)"); r5.PrintRational("r5: (4,-12)"); r6.PrintRational("r6: (-12,-14)");
}
03. C#. ООП. Классы |
17 |
Операции над рациональными числами. Сложение
public Rational Plus(Rational a)
{
int u,v;
u = m*a.n +n*a.m; v= n*a.n; return( new Rational(u, v));
}//Plus
public static Rational operator +(Rational r1, Rational r2)
{
return (r1.Plus(r2));
}
03. C#. ООП. Классы |
18 |
Операции над рациональными числами. Сложение
public void TestPlusRational()
{
Rational r1=new Rational(0,0), r2 = new Rational(1,1); Rational r3=new Rational(10,8), r4 = new Rational(2,6); Rational r5=new Rational(4,-12), r6 = new Rational(-12,-14); Rational r7,r8, r9,r10, r11, r12;
r7 = r1.Plus(r2); r8 = r3.Plus(r4); r9 = r5.Plus(r6);
r10 = r1+r2; r11 = r3+r4; r12 = r5+r6+r10+r11; r1.PrintRational("r1:(0,0)"); r2.PrintRational("r2:(1,1)"); r3.PrintRational("r3:(10,8)"); r4.PrintRational("r4:(2,6)"); r5.PrintRational("r5: (4,-12)"); r6.PrintRational
("r6: (-12,-14)");
r7.PrintRational("r7: (r1+r2)"); r8.PrintRational ("r8: (r3+r4)");
r9.PrintRational("r9: (r5+r6)"); r10.PrintRational ("r10: (r1+r2)");
r11.PrintRational("r11: (r3+r4)"); r12.PrintRational("r12: (r5+r6+r10+r11)");
}
03. C#. ООП. Классы |
19 |
Операции над рациональными числами. Вычитание
public Rational Minus(Rational a)
{
int u,v;
u = m*a.n - n*a.m; v= n*a.n; return( new Rational(u, v));
}//Minus
public static Rational operator -(Rational r1, Rational r2)
{
return (r1.Minus(r2));
}
03. C#. ООП. Классы |
20 |
Операции над рациональными числами. Умножение
public Rational Mult(Rational a)
{
int u,v;
u = m*a.m; v= n*a.n; return( new Rational(u, v));
}//Mult
public static Rational operator *(Rational r1, Rational r2)
{
return (r1.Mult(r2));
}
03. C#. ООП. Классы |
21 |
