static void Main(string[] args) { try { Car car = new Car(1000, 270, Car.Color.Red); Transformer transformer = new Transformer(3000, 120, 100, 100, "transformer1", 2002); Transformer transformer1 = new Transformer(3000, 120, 100, 100, "transformer2", 2004); Transformer transformer2 = new Transformer(3000, 120, 100, 1000, "transformer3", 2008); Human human = new Human(180, 2002, "human1"); Human human1 = new Human(180, 2008, "human2"); car.Engine = new CarControl(300); transformer.Engine = new TransformerControl(600); car.Engine.Start(); car.Engine.Stop(); transformer.Engine.Start(); transformer.Engine.Stop(); transformer.Say(); human.Say(); // Апкаст и полиморфизм Vehicle carTest = new Car(300, 300, Car.Color.Red); Console.WriteLine($"Без virtual и override: {carTest.calculateRate()}"); // Без полиморфизма подтипов Console.WriteLine($"С virtual и override: {carTest.calculateRate2()}"); // С полиморфизмом подтипов Console.WriteLine(transformer.DoClone()); // Способы преобразований Car test = new Car(1, 2, Car.Color.Red); Vehicle vehicle = test as Vehicle; if (vehicle == null) { Console.WriteLine("Преобразование прошло неудачно"); } else { Console.WriteLine(vehicle.DoClone()); } Car t = new Car(2, 3, Car.Color.Red); if (t is Vehicle) { Vehicle tt = (Vehicle)t; Console.WriteLine(tt.DoClone()); } else { Console.WriteLine("Преобразование не допустимо"); } // Переопределнный ToString() Console.WriteLine(car.ToString()); Console.WriteLine(transformer.ToString()); Console.WriteLine(human.ToString()); // 7. класс Printer c полиморфным методом // IAmPrinting(SomeAbstractClassorInterface someobj) Console.WriteLine("\n\tКласс Printer c полиморфным методом:"); Vehicle[] objects = new Vehicle[] { car, transformer, }; Printer outputObjects = new Printer(); foreach (var item in objects) { outputObjects.IAmPrinting(item); } // Лабораторная работа №6 Console.WriteLine($"\n\n-------Лабораторная работа №6-------"); Army army = new Army(); army.Add(human, transformer, transformer1, transformer2, human1); army.PrintList(); Console.WriteLine($"\n\tВывод элементов по году."); Army result = ArmyController.findElementByYear(army, 2002); result.PrintList(); Console.WriteLine($"\n\tВывод трансформеров по мощности."); result = ArmyController.findTransformersByPower(army, 100); result.PrintList(); Console.WriteLine($"\n\tКолличество боевых единииц в армии: {ArmyController.sizeOfArmy(army)}"); // Дополнительные задания Console.WriteLine($"\n\tСчитывающий данные из текстового файла в коллекцию."); army = ArmyController.fillArmyFromTXT(@"F:\HDD\OOP_3sem\OOP_3sem\OOP_Lab4\resources\Army.txt", army); army.PrintList(); Console.WriteLine($"\n\tСчитывающий данные из JSON файла в коллекцию."); army = ArmyController.fillArmyFromJSON(@"F:\HDD\OOP_3sem\OOP_3sem\OOP_Lab4\resources\Army.json", army); army.PrintList(); // Лабораторная работа №7 - Исключения #if true Human human10 = new Human(180, -2008, "human2"); // неверные данные #endif #if false object obj = "str"; int num = (int)obj; // InvalidCastException #endif #if false int[] arr = new int[3]; arr[5] = 12; // IndexOutOfRangeException #endif #if false int x = 1; int y = x / 0; // DivideByZeroException #endif #if false army.Delete(-1); // макрос Assert #endif #if false int[] aa = null; Debug.Assert(aa != null, "Values array cannot be null"); #endif Console.ReadKey(); } catch (HeaderException ex) { Console.WriteLine($"Произошла ошибка: { ex.Message}; с кодом: {ex.ErrorCode}"); Logger.FileLogger($"Произошла ошибка: { ex.Message}; с кодом: {ex.ErrorCode}", @"log.txt"); ex.ExceptionHandler(); } catch (Exception ex) { Logger.ConsoleLogger($"Произошла ошибка: { ex.Message}."); } finally { Console.WriteLine("Блок finally"); } }
public static Army fillArmyFromTXT(string path, Army army) { using (StreamReader f = new StreamReader(path, System.Text.Encoding.Default)) { string line; string[] str = new string[] { }; int index = 0; while ((line = f.ReadLine()) != null) { str = line.Split(' '); if (str[0] == "Human") { Human human = new Human(); for (int i = 1; i < str.Length; i++) { switch (i) { case 1: human.IQ = Int32.Parse(str[i]); break; case 2: human.Name = str[i]; break; case 3: human.Year = Int32.Parse(str[i]); break; } } army.Add(human); } else if (str[0] == "Transformer") { Transformer transformer = new Transformer(); for (int i = 1; i < str.Length; i++) { switch (i) { case 1: transformer.IQ = Int32.Parse(str[i]); break; case 2: transformer.Name = str[i]; break; case 3: transformer.Year = Int32.Parse(str[i]); break; case 4: transformer.MaxSpeed = Int32.Parse(str[i]); break; case 5: transformer.Weight = Int32.Parse(str[i]); break; case 6: transformer.Power = Int32.Parse(str[i]); break; } } army.Add(transformer); } else { Console.WriteLine($"\tНе распознан объект. Строка №{index}."); } index++; } } return(army); }