public static void Run() { //task 1 //Создать объект типа T с непустым списком элементов, для которого //предусмотрен ввод данных с консоли.Создать полную копию объекта с //помощью метода, использующего сериализацию, и вывести исходный //объект и его копию. ResearchTeam researchTeam1 = new ResearchTeam("R1", new Team("team1", 220020), TimeFrame.Long); Person person1 = new Person("N1", "S1", new DateTime(2000, 1, 1)); Person person2 = new Person("N2", "S2", new DateTime(2000, 2, 1)); Person person3 = new Person("N1", "S2", new DateTime(2000, 1, 1)); researchTeam1.AddPersons(person1, person2, person3); researchTeam1.AddPapers(new Paper("T1", person1, new DateTime(2020, 7, 20)), new Paper("T2", person3, new DateTime(2019, 7, 20))); ResearchTeam researchTeam2 = researchTeam1.DeepCopy(true); Console.WriteLine(researchTeam1); Console.WriteLine(researchTeam2); //task 2 //Предложить пользователю ввести имя файла: // если файла с введенным именем нет, приложение должно //сообщить об этом и создать файл; // если файл существует, вызвать метод Load(string filename) для //инициализации объекта T данными из файла. ResearchTeam researchTeam3 = new ResearchTeam(); Console.WriteLine("Write file name"); string filename = Console.ReadLine(); if (File.Exists(filename + ".dat")) { bool isLoadSucces = researchTeam3.Load(filename); if (!isLoadSucces) { Console.WriteLine("load from clear file"); } } else { Console.WriteLine("File didn\'t found but create now"); File.Create(filename + ".dat"); } //task 3 //Вывести объект T. Console.WriteLine(researchTeam3); //task 4 //Для этого же объекта T сначала вызвать метод AddFromConsole(), затем //метод Save(string filename). Вывести объект T. researchTeam3.AddFromConsole(); researchTeam3.Save(filename + ".dat"); Console.WriteLine(researchTeam3); //task 5 //Вызвать последовательно // статический метод Load(string filename, T obj), передав как //параметры ссылку на тот же самый объект T и введенное ранее имя //файла; // метод AddFromConsole(); // статический метод Save(string filename, T obj). ResearchTeam.Load(filename + ".dat", researchTeam3); researchTeam3.AddFromConsole(); ResearchTeam.Save(filename + ".dat", researchTeam3); //task 6 //Вывести объект T. Console.WriteLine(researchTeam3); }
/// <summary> /// done tasks from lab 1 /// </summary> public static void Run() { //task 1 //Создать два объекта типа Team с совпадающими данными и проверить, //что ссылки на объекты не равны, а объекты равны, вывести значения хэш- //кодов для объектов. Team team1 = new Team(); Team team2 = new Team(); Console.WriteLine("Equals by value: " + team1.Equals(team2)); Console.WriteLine("Equals by ref: " + Object.ReferenceEquals(team1, team2)); Console.WriteLine("Hashcode 1: " + team1.GetHashCode()); Console.WriteLine("Hashcode 2: " + team1.GetHashCode()); //task 2 //В блоке try/catch присвоить свойству с номером регистрации //некорректное значение, в обработчике исключения вывести сообщение, //переданное через объект-исключение try { team1.RegisterNumber = 0; } catch (Exception e) { Console.WriteLine(e.Message); } //task 3 //Создать объект типа ResearchTeam, добавить элементы в список //публикаций и список участников проекта и вывести данные объекта //ResearchTeam. ResearchTeam researchTeam1 = new ResearchTeam(); Person person1 = new Person("N1", "S1", new DateTime(2000, 1, 1)); Person person2 = new Person("N2", "S2", new DateTime(2000, 2, 1)); Person person3 = new Person("N1", "S2", new DateTime(2000, 1, 1)); researchTeam1.AddPersons(person1, person2, person3); researchTeam1.AddPapers(new Paper("T1", person1, new DateTime(2020, 7, 20)), new Paper("T2", person3, new DateTime(2019, 7, 20))); //task 4 //Вывести значение свойства Team для объекта типа ResearchTeam. Console.WriteLine(researchTeam1.ToString()); //task 5 // С помощью метода DeepCopy() создать полную копию объекта //ResearchTeam.Изменить данные в исходном объекте ResearchTeam и //вывести копию и исходный объект, полная копия исходного объекта //должна остаться без изменений. ResearchTeam researchTeam2 = (ResearchTeam)researchTeam1.DeepCopy(); researchTeam2.RegisterNumber = 999998; Console.WriteLine(researchTeam1.ToString()); Console.WriteLine(researchTeam2.ToString()); //task 6 //С помощью оператора foreach для итератора, определенного в классе //ResearchTeam, вывести список участников проекта, которые не имеют //публикаций. foreach (object obj in researchTeam1) { Console.WriteLine(obj.ToString()); } //task 7 //С помощью оператора foreach для итератора с параметром, //определенного в классе ResearchTeam, вывести список всех публикаций, //вышедших за последние два года. foreach (object obj in researchTeam1.GetEnumerator(2)) { Console.WriteLine(obj.ToString()); } //task 8 //С помощью оператора foreach для объекта типа ResearchTeam вывести //список участников проекта, у которых есть публикации. foreach (object obj in researchTeam1.GetPersonsWithPubs()) { Console.WriteLine(obj.ToString()); } //task 9 //С помощью оператора foreach для итератора, определенного в классе //ResearchTeam, вывести список участников проекта, имеющих более //одной публикации. foreach (object obj in researchTeam1.GetPersonsWithMoreOnePubs()) { Console.WriteLine(obj.ToString()); } //task 10 //C помощью оператора foreach для итератора, определенного в классе //ResearchTeam, вывести список публикаций, вышедших за последний год. foreach (object obj in researchTeam1.GetThisYearPubs()) { Console.WriteLine(obj.ToString()); } }