static void Part1() { Time obj = new Time(); bool ok = false; while (!ok) { int hours = 0; int min = 0; Console.WriteLine(@"1. Демонстация функционала класса Time (без перегруженных операторов). 2. Создать объект и заполнить с помощью ГСЧ. 3. Создать объект и заполнить вручную. 4. Показать объект. 5. Получить разность объектов статическим методом. 6. Выход"); CheckInput(out int choise); switch (choise) { case 1: ScriptDemonstrationPart1(); break; case 2: hours = rnd.Next(0, 500); min = rnd.Next(0, 500); obj.Initialization(hours, min); ShowGreen("Объект создан: " + obj); break; case 3: InputHoursMin(ref hours, ref min); obj.Initialization(hours, min); ShowGreen("Объект создан: " + obj); break; case 4: Console.ForegroundColor = ConsoleColor.DarkGreen; // устанавливаем цвет obj.Show(); Console.ResetColor(); // сбрасываем в стандартный break; case 5: Console.WriteLine("Объект 1"); InputHoursMin(ref hours, ref min); obj.Initialization(hours, min); Console.WriteLine("Объект 2"); InputHoursMin(ref hours, ref min); Time time = new Time(hours, min); obj = Time.MinusTime(obj, time); ShowGreen("Результат: " + obj); break; case 6: ok = !ok; break; default: ShowRed("Введено неопознанное значение!"); break; } } }
static void ScriptDemonstrationPart1() { Time time = new Time(); ShowGreen("Объект 1 без параметров создан: " + time); //ShowGreen("Объект 1 6 + Time: " + (6 + time)); //ShowGreen("Объект 1 Time + 6: " + (time + 6)); Console.Write("Введите часы для объекта 2: "); CheckInput(out int hours, ""); Console.Write("Введите минуты объекта 2: "); CheckInput(out int min, ""); Time time1 = new Time(hours, min); ShowGreen("Объект 2 с параметрами создан: " + time1); Console.Write("Изменение полей класса.\nПосле изменнения будет произведено вычитание статическим методом\n Введите часы для объекта 1: "); CheckInput(out hours, ""); Console.Write("Введите минуты для объекта 1: "); CheckInput(out min, ""); time.Initialization(hours, min); ShowGreen("Объект 1: " + time); Console.Write("Введите часы для объекта 2: "); CheckInput(out hours, ""); Console.Write("Введите минуты объекта 2: "); CheckInput(out min, ""); time1.Initialization(hours, min); ShowGreen("Объект 2: " + time); Time time2 = new Time(); time2 = Time.MinusTime(time, time1); Console.WriteLine("Вычитание объектов Time.\n Результат вычитания 2-го объекта из 1-го статическим методом: " + time2); Console.Write("Изменение полей класса.\nПосле изменнения будет произведено вычитание обычным методом"); Console.WriteLine("Введите часы объекта 3: "); CheckInput(out hours, ""); Console.Write("Введите минуты для объекта 3: "); CheckInput(out min, ""); Time time3 = new Time(hours, min); Console.Write("Введите часы объекта 2: "); CheckInput(out hours, ""); Console.Write("Введите минуты для объекта 2: "); CheckInput(out min, ""); time2.Initialization(hours, min); Console.WriteLine(); Console.WriteLine("Объект 3 " + time3); Console.WriteLine("Объект 2 " + time2); Console.WriteLine("Результат вычитания 2-го из 3-го объекта обычным методом: "); ShowGreen(time3.MinusTime(time2).ToString()); Console.WriteLine("Объектов было создано: " + Time.Counter); //if (true) //{ // Time time4 = new Time(); // Console.WriteLine("Создание локального объекта. Всего объектов было создано:" + Time.Counter); //} //Console.WriteLine("После выхода из локальной области: " + Time.Counter); Console.Write("Вывод объекта с помощью метода. Show() "); time.Show(); Console.WriteLine("Сравнение на равенство (Equals)"); Console.WriteLine($"Объект 1: {time}"); Console.WriteLine($"Объект 2: {time2}"); if (Time.Equals(time, time2)) { Console.WriteLine("Объекты равны"); } else { Console.WriteLine("Объекты не равны"); } Console.WriteLine("Хеш-код объекта time: " + time.GetHashCode()); }
static void Part2() { Time obj = new Time(); bool flag = false; while (!flag) { int hours = 0, min = 0; Console.WriteLine(@"1. Демонстация перегрузок класса Time. 2. Создание объекта со значениями ГСЧ. 3. Создание объекта с вводом значений. 4. Показать объект. 5. Инкремент у объекта. 6. Декремент у объекта. 7. Явное перобразование (в bool). 8. Неявное перобразование (в int). 9. Сравнение объектов. 10. Выход"); CheckInput(out int choise); switch (choise) { case 1: ScriptDemonstrationPart2(); break; case 2: hours = rnd.Next(0, 500); min = rnd.Next(0, 500); obj.Initialization(hours, min); ShowGreen("Объект создан: " + obj); break; case 3: InputHoursMin(ref hours, ref min); obj.Initialization(hours, min); ShowGreen("Объект создан: " + obj); break; case 4: Console.ForegroundColor = ConsoleColor.DarkGreen; // устанавливаем цвет obj.Show(); Console.ResetColor(); // сбрасываем в стандартный break; case 5: Console.WriteLine("Инкремент "); obj++; ShowGreen(obj.ToString()); break; case 6: Console.WriteLine("Декремент "); obj--; ShowGreen(obj.ToString()); break; case 7: Console.WriteLine("Явное преобразование: " + (bool)obj); break; case 8: int k = obj; Console.WriteLine("Неявное преобразование в int: " + k); break; case 9: Console.WriteLine("Создание нового объекта для демонстрации сравнения"); InputHoursMin(ref hours, ref min); Time crisp = new Time(hours, min); Console.WriteLine("Объект 1: " + obj); Console.WriteLine("Объект 2: " + crisp); if (obj < crisp) { ShowGreen("Объект 1 < Объект 2"); } else { ShowGreen("Объект 1 > Объект 2"); } break; case 10: flag = !flag; break; default: ShowRed("Введено неопрознанное значение!"); break; } } }