View difference between Paste ID: Bj3xuUHn and Ck1edd0f
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
}