Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace TPhome
- {
- class Person
- {
- string name;//закрытое поле типа string, в котором хранится имя
- string familia;//закрытое поле типа string, в котором хранится фамилия;
- DateTime birthday;//закрытое поле типа System.DateTime для даты рождения
- public Person(string name, string familia, DateTime date)//конструктор c тремя параметрами типа string, string, DateTime дляинициализации всех полей класса;
- {
- this.name = name;
- this.familia = familia;
- this.birthday = date;
- }
- public Person()//конструктор без параметров, инициализирующий все поля класса некоторыми значениями по умолчанию.
- {
- birthday = new DateTime(2000, 10, 10);
- name = "Иван";
- familia = "Иванов";
- }
- public string Name//свойство типа string для доступа к полю с именем посредством методов set и get
- {
- set { name = value; }
- get { return name; }
- }
- public string Familia//свойство типа string для доступа к полю с фамилием посредством методов set и get
- {
- set { familia = value; }
- get { return familia; }
- }
- public DateTime Birthday//свойство типа string для доступа к полю с датой рождением посредством методов set и get
- {
- set { birthday = value; }
- get { return birthday; }
- }
- public int Year//свойство типа string для доступа к полю с годом посредством методов set и get.AddYears года
- {
- set { birthday = birthday.AddYears(value - birthday.Year); }
- get { return birthday.Year; }
- }
- public override string ToString() { return "Имя " + this.name + "\nФамилия " + this.familia + "\nДата рождения " + birthday.ToString("D"); }//override виртуального метода string ToString() для формирования строки со значениями всех полей класса;
- public string ToShortString() { return "Имя " + this.name + "\nФамилия " + this.familia; }//виртуальный метод string ToShortString(), который возвращает строку, содержащую только имя и фамилию.
- }
- enum Frequency// Тип Frequency определен перечислением(enum).Значения Weekly, Monthly, Yearly
- {
- weekly, monthly, yearly
- }
- class Article
- {
- public Person avtor;//свойство типа Person, в котором хранятся данные автора статьи
- public string title;//свойство типа string для названия статьи
- public double rait;//свойство типа double для рейтинга статьи
- //класс Article который имеет 3 свойвства описанные выше на стр 55,56,57
- public Article()//конструктор без параметров, инициализирующий все свойства класса некоторыми значениями по умолчанию
- {
- avtor = new Person();
- title = "Статья по программированию";
- rait = 5;
- }
- public Article(Person avtor, string title, double raiting)//конструктор c параметрами типа Person, string, double для инициализации всех свойств класса
- {
- this.avtor = avtor;
- this.title = title;
- this.rait = raiting;
- }
- public double Raiting//свойство типа doyble для доступа к полю с рейтингом посредством методов set и get
- {
- set { rait = value; }
- get { return rait; }
- }
- public override string ToString() { return this.avtor.ToString() + "\nНазвание статьи " + this.title + "\nРейтинг статьи " + this.rait + "\n"; }//override версия виртуального метода string ToString() для формирования строки со значениями всех свойств класса.
- }
- //класс Magazine
- class Magazine
- {
- string titlemag;//закрытое поле типа string c названием журнала;
- Frequency pereodichnost;//закрытое поле типа Frequency с информацией о периодичности выхода журнала;
- DateTime datavihoda;//закрытое поле типа DateTime c датой выхода журнала;
- int tiraj;//закрытое поле типа int с тиражом журнала;
- private readonly List<Article> stati = new List<Article>();//закрытое поле типа Article со списком статей в журнале
- public Magazine()//конструктор без параметров, инициализирующий поля класса значениями по умолчанию.
- {
- titlemag = "Цифровой мир";
- pereodichnost = Frequency.weekly;
- datavihoda = DateTime.Now;
- tiraj = 1;
- }
- public Magazine(string title, Frequency periodoch, DateTime date, int tir)//конструктор с параметрами типа string, Frequency, DateTime, int для инициализации соответствующих полей класса;
- {
- this.titlemag = title;
- this.pereodichnost = periodoch;
- this.datavihoda = date;
- this.tiraj = tir;
- }
- public string Title//свойство типа string для доступа к полю с заголовкомом посредством методов set и get
- {
- set { titlemag = value; }
- get { return titlemag; }
- }
- public Frequency Period//свойство типа Frequency для доступа к полю с периодичностью посредством методов set и get
- {
- set { pereodichnost = value; }
- get { return pereodichnost; }
- }
- public DateTime Date//свойство типа DateTime для доступа к полю с временем посредством методов set и get
- {
- set { datavihoda = value; }
- get { return datavihoda; }
- }
- public int Tiraj//свойство типа int для доступа к полю с тиражом посредством методов set и get
- {
- set { tiraj = value; }
- get { return tiraj; }
- }
- public Article[] Stati//свойство типа Article для доступа к полю с статьями посредством методов set и get
- {
- get { return stati.ToArray(); }
- }
- public double srreit//свойство типа double ( только с методом get), в котором вычисляется среднее значение рейтинга в списке статей;
- {
- get
- {
- if (stati.Count == 0)
- return 0;
- else
- {
- double sumball = 0;
- foreach (Article a in stati)
- sumball += a.rait;
- return sumball / stati.Count;
- }
- }
- }
- public bool this[Frequency index]//индексатор булевского типа (только с методом get) с одним параметром типа Frequency; значение индексатора равно true, если значение поля типа Frequency совпадает со значением индекса, и false в противном случае;
- {
- get { return this.pereodichnost == index; }
- }
- public void AddArticles(params Article[] stati)//метод void AddArticles (params Article[]) для добавления элементов в список статей в журнале;
- {
- this.stati.AddRange(stati);
- }
- public override string ToString()//override виртуального метода string ToString() для формирования строки со значениями всех полей класса, включая список статей;
- {
- return String.Format("Название журнала: {0}\nПериодичность: {1}\nДата выхода: {2}\nТираж: {3}\nСтатьи: \n{4}", titlemag, pereodichnost, datavihoda.ToString("D"), tiraj, string.Join(",", stati));
- }
- public string ToShortString()//• виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка статей, но со значением среднего рейтинга статей.
- {
- return String.Format("Название журнала: {0}\nПериодичность: {1}\nДата выхода: {2}\nТираж: {3}\nСредний рейтинг статей: {4}", titlemag, pereodichnost, datavihoda.ToString("D"), tiraj, srreit);
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Magazine mag = new Magazine();//объект типа Magazine
- mag.ToShortString();
- Console.WriteLine(mag[Frequency.monthly]);//вывод значений индексатора для [Frequency.monthly]
- Console.WriteLine(mag[Frequency.weekly]);//вывод значений индексатора для [Frequency.weekly]
- Console.WriteLine(mag[Frequency.yearly]);//вывод значений индексатора для [Frequency.yearly]
- 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));// добавляем элемент в список статей в журнала
- Console.WriteLine(mag.ToString());//выводим как строку постредством метода ToString
- Console.WriteLine("Количество времени на операции в секундах:\n");
- Article[] odnomer = new Article[10];//создаем одномерный массив
- Article[,] dvymer = new Article[2, 5];//создаем двумерный прямоугольный массив
- Article[][] stypench = new Article[4][];//создаем двумерный ступенчатый массив
- stypench[0] = new Article[1];//заполеяем ступенчатый массив
- stypench[1] = new Article[2];//заполеяем ступенчатый массив
- stypench[2] = new Article[3];//заполеяем ступенчатый массив
- stypench[3] = new Article[4];//заполеяем ступенчатый массив
- Console.WriteLine("Одномерный массив\n");
- long ms = DateTime.Now.Ticks;//Возвращает число тактов, которое представляет дату и время этого экземпляра.
- for (int i = 0; i < 10; i++)
- odnomer[i] = new Article();//заполеяем массив
- for (int i = 0; i < 10; i++)
- Console.WriteLine(odnomer[i]);//выводим массив
- Console.WriteLine("Затраченное время {0}с", (DateTime.Now.Ticks - ms) / 1000.0);//выводим время для одномерного массива
- Console.WriteLine("Двумерный массив\n");
- ms = DateTime.Now.Ticks; //Возвращает число тактов, которое представляет дату и время этого экземпляра.
- for (int i = 0; i < 2; i++)
- for (int j = 0; j < 5; j++)
- dvymer[i, j] = new Article();//заполеяем массив
- for (int i = 0; i < 2; i++)
- for (int j = 0; j < 5; j++)
- Console.WriteLine(dvymer[i, j]);//выводим массив
- Console.WriteLine("Затраченное время {0}с", (DateTime.Now.Ticks - ms) / 1000.0);//выводим время для двумерного массива Console.WriteLine("Ступенчатый массив\n");
- ms = DateTime.Now.Ticks;//Возвращает число тактов, которое представляет дату и время этого экземпляра.
- for (int i = 0; i < 4; i++)
- for (int j = 0; j < i + 1; j++)
- stypench[i][j] = new Article();//заполеяем массив
- for (int i = 0; i < 4; i++)
- for (int j = 0; j < i + 1; j++)
- Console.WriteLine(stypench[i][j]);//выводим массив
- Console.WriteLine("Затраченное время {0}с", (DateTime.Now.Ticks - ms) / 1000.0);//выводим время для ступенчатого массива
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement