Example #1
0
        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);
        }
Example #2
0
        /// <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());
            }
        }