SHOW:
|
|
- or go back to the newest paste.
1 | using System; | |
2 | using System.Collections.Generic; | |
3 | using System.Linq; | |
4 | using System.Text; | |
5 | using System.Threading.Tasks; | |
6 | namespace TPhome | |
7 | { | |
8 | class Person | |
9 | { | |
10 | - | string name; |
10 | + | string name;//закрытое поле типа string, в котором хранится имя |
11 | - | string familia; |
11 | + | string familia;//закрытое поле типа string, в котором хранится фамилия; |
12 | - | DateTime birthday; |
12 | + | DateTime birthday;//закрытое поле типа System.DateTime для даты рождения |
13 | - | public Person() |
13 | + | public Person(string name, string familia, DateTime date)//конструктор c тремя параметрами типа string, string, DateTime дляинициализации всех полей класса; |
14 | { | |
15 | this.name = name; | |
16 | this.familia = familia; | |
17 | this.birthday = date; | |
18 | } | |
19 | - | public Person(string name, string familia, DateTime date) |
19 | + | public Person()//конструктор без параметров, инициализирующий все поля класса некоторыми значениями по умолчанию. |
20 | { | |
21 | birthday = new DateTime(2000, 10, 10); | |
22 | name = "Иван"; | |
23 | familia = "Иванов"; | |
24 | } | |
25 | - | public string Name |
25 | + | |
26 | public string Name//свойство типа string для доступа к полю с именем посредством методов set и get | |
27 | { | |
28 | set { name = value; } | |
29 | get { return name; } | |
30 | - | public string Familia |
30 | + | |
31 | public string Familia//свойство типа string для доступа к полю с фамилием посредством методов set и get | |
32 | { | |
33 | set { familia = value; } | |
34 | get { return familia; } | |
35 | - | public DateTime Birthday |
35 | + | |
36 | public DateTime Birthday//свойство типа string для доступа к полю с датой рождением посредством методов set и get | |
37 | { | |
38 | set { birthday = value; } | |
39 | get { return birthday; } | |
40 | - | public int Year |
40 | + | |
41 | public int Year//свойство типа string для доступа к полю с годом посредством методов set и get.AddYears года | |
42 | { | |
43 | set { birthday = birthday.AddYears(value - birthday.Year); } | |
44 | get { return birthday.Year; } | |
45 | - | public override string ToString() { return "Имя " + this.name + "\nФамилия " + this.familia + "\nДата рождения " + birthday.ToString("D"); } |
45 | + | |
46 | - | public string ToShortString() { return "Имя " + this.name + "\nФамилия " + this.familia; } |
46 | + | public override string ToString() { return "Имя " + this.name + "\nФамилия " + this.familia + "\nДата рождения " + birthday.ToString("D"); }//override виртуального метода string ToString() для формирования строки со значениями всех полей класса; |
47 | public string ToShortString() { return "Имя " + this.name + "\nФамилия " + this.familia; }//виртуальный метод string ToShortString(), который возвращает строку, содержащую только имя и фамилию. | |
48 | - | enum Frequency |
48 | + | |
49 | enum Frequency// Тип Frequency определен перечислением(enum).Значения Weekly, Monthly, Yearly | |
50 | - | weekly,monthly,yearly |
50 | + | |
51 | weekly, monthly, yearly | |
52 | } | |
53 | class Article | |
54 | - | public Person avtor; |
54 | + | |
55 | - | public string title; |
55 | + | public Person avtor;//свойство типа Person, в котором хранятся данные автора статьи |
56 | - | public double rait; |
56 | + | public string title;//свойство типа string для названия статьи |
57 | - | public Article() |
57 | + | public double rait;//свойство типа double для рейтинга статьи |
58 | //класс Article который имеет 3 свойвства описанные выше на стр 55,56,57 | |
59 | public Article()//конструктор без параметров, инициализирующий все свойства класса некоторыми значениями по умолчанию | |
60 | { | |
61 | avtor = new Person(); | |
62 | title = "Статья по программированию"; | |
63 | - | public Article(Person avtor, string title, double raiting) |
63 | + | |
64 | } | |
65 | public Article(Person avtor, string title, double raiting)//конструктор c параметрами типа Person, string, double для инициализации всех свойств класса | |
66 | { | |
67 | this.avtor = avtor; | |
68 | this.title = title; | |
69 | - | public double Raiting |
69 | + | |
70 | } | |
71 | public double Raiting//свойство типа doyble для доступа к полю с рейтингом посредством методов set и get | |
72 | { | |
73 | set { rait = value; } | |
74 | - | public override string ToString() { return this.avtor.ToString() + "\nНазвание статьи " + this.title + "\nРейтинг статьи " + this.rait + "\n"; } |
74 | + | |
75 | } | |
76 | public override string ToString() { return this.avtor.ToString() + "\nНазвание статьи " + this.title + "\nРейтинг статьи " + this.rait + "\n"; }//override версия виртуального метода string ToString() для формирования строки со значениями всех свойств класса. | |
77 | } | |
78 | - | string titlemag; |
78 | + | //класс Magazine |
79 | - | Frequency pereodichnost; |
79 | + | |
80 | - | DateTime datavihoda; |
80 | + | |
81 | - | int tiraj; |
81 | + | string titlemag;//закрытое поле типа string c названием журнала; |
82 | - | private readonly List<Article> stati = new List<Article>(); |
82 | + | Frequency pereodichnost;//закрытое поле типа Frequency с информацией о периодичности выхода журнала; |
83 | - | public Magazine() |
83 | + | DateTime datavihoda;//закрытое поле типа DateTime c датой выхода журнала; |
84 | int tiraj;//закрытое поле типа int с тиражом журнала; | |
85 | private readonly List<Article> stati = new List<Article>();//закрытое поле типа Article со списком статей в журнале | |
86 | public Magazine()//конструктор без параметров, инициализирующий поля класса значениями по умолчанию. | |
87 | { | |
88 | titlemag = "Цифровой мир"; | |
89 | pereodichnost = Frequency.weekly; | |
90 | - | public Magazine(string title, Frequency periodoch, DateTime date, int tir) |
90 | + | |
91 | tiraj = 1; | |
92 | } | |
93 | public Magazine(string title, Frequency periodoch, DateTime date, int tir)//конструктор с параметрами типа string, Frequency, DateTime, int для инициализации соответствующих полей класса; | |
94 | { | |
95 | this.titlemag = title; | |
96 | this.pereodichnost = periodoch; | |
97 | - | public string Title |
97 | + | |
98 | this.tiraj = tir; | |
99 | } | |
100 | public string Title//свойство типа string для доступа к полю с заголовкомом посредством методов set и get | |
101 | { | |
102 | - | public Frequency Period |
102 | + | |
103 | get { return titlemag; } | |
104 | } | |
105 | public Frequency Period//свойство типа Frequency для доступа к полю с периодичностью посредством методов set и get | |
106 | { | |
107 | - | public DateTime Date |
107 | + | |
108 | get { return pereodichnost; } | |
109 | } | |
110 | public DateTime Date//свойство типа DateTime для доступа к полю с временем посредством методов set и get | |
111 | { | |
112 | - | public int Tiraj |
112 | + | |
113 | get { return datavihoda; } | |
114 | } | |
115 | public int Tiraj//свойство типа int для доступа к полю с тиражом посредством методов set и get | |
116 | { | |
117 | - | public Article[] Stati |
117 | + | |
118 | get { return tiraj; } | |
119 | } | |
120 | public Article[] Stati//свойство типа Article для доступа к полю с статьями посредством методов set и get | |
121 | - | public double srreit |
121 | + | |
122 | get { return stati.ToArray(); } | |
123 | } | |
124 | public double srreit//свойство типа double ( только с методом get), в котором вычисляется среднее значение рейтинга в списке статей; | |
125 | { | |
126 | get | |
127 | { | |
128 | if (stati.Count == 0) | |
129 | return 0; | |
130 | else | |
131 | { | |
132 | double sumball = 0; | |
133 | foreach (Article a in stati) | |
134 | sumball += a.rait; | |
135 | return sumball / stati.Count; | |
136 | - | public bool this[Frequency index] |
136 | + | |
137 | } | |
138 | } | |
139 | public bool this[Frequency index]//индексатор булевского типа (только с методом get) с одним параметром типа Frequency; значение индексатора равно true, если значение поля типа Frequency совпадает со значением индекса, и false в противном случае; | |
140 | - | public void AddArticles(params Article[] stati) |
140 | + | |
141 | get { return this.pereodichnost == index; } | |
142 | } | |
143 | public void AddArticles(params Article[] stati)//метод void AddArticles (params Article[]) для добавления элементов в список статей в журнале; | |
144 | - | public override string ToString() |
144 | + | |
145 | this.stati.AddRange(stati); | |
146 | } | |
147 | public override string ToString()//override виртуального метода string ToString() для формирования строки со значениями всех полей класса, включая список статей; | |
148 | - | public string ToShortString() |
148 | + | |
149 | return String.Format("Название журнала: {0}\nПериодичность: {1}\nДата выхода: {2}\nТираж: {3}\nСтатьи: \n{4}", titlemag, pereodichnost, datavihoda.ToString("D"), tiraj, string.Join(",", stati)); | |
150 | } | |
151 | public string ToShortString()//• виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка статей, но со значением среднего рейтинга статей. | |
152 | { | |
153 | return String.Format("Название журнала: {0}\nПериодичность: {1}\nДата выхода: {2}\nТираж: {3}\nСредний рейтинг статей: {4}", titlemag, pereodichnost, datavihoda.ToString("D"), tiraj, srreit); | |
154 | } | |
155 | } | |
156 | class Program | |
157 | - | Magazine mag = new Magazine(); |
157 | + | |
158 | static void Main(string[] args) | |
159 | - | Console.WriteLine(mag[Frequency.monthly]); |
159 | + | |
160 | - | Console.WriteLine(mag[Frequency.weekly]); |
160 | + | Magazine mag = new Magazine();//объект типа Magazine |
161 | - | Console.WriteLine(mag[Frequency.yearly]); |
161 | + | |
162 | - | mag.AddArticles(new Article(new Person("Алексей", "Сергеев", new DateTime(1999, 2, 3)), "Новости робототехники", 5), new Article(new Person("Антон", "Доронин", new DateTime(1985, 5, 16)), "Новости C++", 4.3), new Article(new Person("Руслан", "Цветков", new DateTime(2001, 3, 9)), "Новости C#", 4.8)); |
162 | + | Console.WriteLine(mag[Frequency.monthly]);//вывод значений индексатора для [Frequency.monthly] |
163 | - | Console.WriteLine(mag.ToString()); |
163 | + | Console.WriteLine(mag[Frequency.weekly]);//вывод значений индексатора для [Frequency.weekly] |
164 | - | Console.WriteLine("Количество времени на операции в секундах"); |
164 | + | Console.WriteLine(mag[Frequency.yearly]);//вывод значений индексатора для [Frequency.yearly] |
165 | - | Article[] odnomer = new Article[10]; |
165 | + | mag.AddArticles(new Article(new Person("Алексей", "Сергеев", new DateTime(1999, 2, 3)), "Новости робототехники", 5), new Article(new Person("Антон", "Доронин", new DateTime(1985, 5, 16)), "Новости C++", 4.3), new Article(new Person("Руслан", "Цветков", new DateTime(2001, 3, 9)), "Новости C#", 4.8));// добавляем элемент в список статей в журнала |
166 | - | Article[,] dvymer = new Article[2, 5]; |
166 | + | Console.WriteLine(mag.ToString());//выводим как строку постредством метода ToString |
167 | - | Article[][] stypench = new Article[4][]; |
167 | + | Console.WriteLine("Количество времени на операции в секундах:\n"); |
168 | - | stypench[0] = new Article[1]; |
168 | + | Article[] odnomer = new Article[10];//создаем одномерный массив |
169 | - | stypench[1] = new Article[2]; |
169 | + | Article[,] dvymer = new Article[2, 5];//создаем двумерный прямоугольный массив |
170 | - | stypench[2] = new Article[3]; |
170 | + | Article[][] stypench = new Article[4][];//создаем двумерный ступенчатый массив |
171 | - | stypench[3] = new Article[4]; |
171 | + | stypench[0] = new Article[1];//заполеяем ступенчатый массив |
172 | - | Console.WriteLine("Одномерный массив"); |
172 | + | stypench[1] = new Article[2];//заполеяем ступенчатый массив |
173 | - | long ms = DateTime.Now.Ticks; |
173 | + | stypench[2] = new Article[3];//заполеяем ступенчатый массив |
174 | stypench[3] = new Article[4];//заполеяем ступенчатый массив | |
175 | - | odnomer[i] = new Article(); |
175 | + | Console.WriteLine("Одномерный массив\n"); |
176 | long ms = DateTime.Now.Ticks;//Возвращает число тактов, которое представляет дату и время этого экземпляра. | |
177 | - | Console.WriteLine(odnomer[i]); |
177 | + | |
178 | - | Console.WriteLine("Затраченное время {0}с", (DateTime.Now.Ticks - ms)/1000.0); |
178 | + | odnomer[i] = new Article();//заполеяем массив |
179 | - | Console.WriteLine("Двумерный массив"); |
179 | + | |
180 | - | ms = DateTime.Now.Ticks; |
180 | + | Console.WriteLine(odnomer[i]);//выводим массив |
181 | Console.WriteLine("Затраченное время {0}с", (DateTime.Now.Ticks - ms) / 1000.0);//выводим время для одномерного массива | |
182 | Console.WriteLine("Двумерный массив\n"); | |
183 | - | dvymer[i, j] = new Article(); |
183 | + | ms = DateTime.Now.Ticks; //Возвращает число тактов, которое представляет дату и время этого экземпляра. |
184 | for (int i = 0; i < 2; i++) | |
185 | for (int j = 0; j < 5; j++) | |
186 | - | Console.WriteLine(dvymer[i, j]); |
186 | + | dvymer[i, j] = new Article();//заполеяем массив |
187 | - | Console.WriteLine("Затраченное время {0}с", (DateTime.Now.Ticks - ms) / 1000.0); |
187 | + | |
188 | - | Console.WriteLine("Ступенчатый массив"); |
188 | + | |
189 | - | ms = DateTime.Now.Ticks; |
189 | + | Console.WriteLine(dvymer[i, j]);//выводим массив |
190 | Console.WriteLine("Затраченное время {0}с", (DateTime.Now.Ticks - ms) / 1000.0);//выводим время для двумерного массива Console.WriteLine("Ступенчатый массив\n"); | |
191 | - | for (int j = 0; j < i+1; j++) |
191 | + | ms = DateTime.Now.Ticks;//Возвращает число тактов, которое представляет дату и время этого экземпляра. |
192 | - | stypench[i][j] = new Article(); |
192 | + | |
193 | for (int j = 0; j < i + 1; j++) | |
194 | - | for (int j = 0; j < i+1; j++) |
194 | + | stypench[i][j] = new Article();//заполеяем массив |
195 | - | Console.WriteLine(stypench[i][j]); |
195 | + | |
196 | - | Console.WriteLine("Затраченное время {0}с", (DateTime.Now.Ticks - ms) / 1000.0); |
196 | + | for (int j = 0; j < i + 1; j++) |
197 | Console.WriteLine(stypench[i][j]);//выводим массив | |
198 | Console.WriteLine("Затраченное время {0}с", (DateTime.Now.Ticks - ms) / 1000.0);//выводим время для ступенчатого массива | |
199 | Console.ReadLine(); | |
200 | } | |
201 | } | |
202 | } |