static void Main() { // Підтримка Unicode Console.OutputEncoding = Encoding.Unicode; // припустимо, що є власник, який має 4 транспорних засоби переміщеня, // із яких одне із штучним інтелектом, яке саме розвозить його дітей Tesla Human Bogdan = new Human() { FullName = "Bogdan Pinchuk", Age = 27, ColorOfEyes = Human.ColorOfEye.Brown, ColorOfHair = Human.HairColor.Black, Height = 185f, Weight = 80f, Nationality = "Ukrainian", Sex = Human.SexOfHuman.male }; // маємо гараж AVehicle[] garage = new AVehicle[] { new Horse() { Model = "Породистий кінь", Name = "Скакун", Color = ConsoleColor.DarkRed, Driver = Bogdan }, new Motorcycle() { // https://auto.24tv.ua/naitsikavishi_mototsykly_sezonu_2019_roku_v_ukraini_n12041 Name = "Kawasaki", Model = "Ninja ZX-10R KRT Replica", Color = ConsoleColor.Green, Driver = Bogdan }, new Car() { // https://www.mercedes-benz.ua/cars/models/gls-class/suv.html Name = "Mercedes-Benz", Model = "GLS AMG", Color = ConsoleColor.Gray, Driver = Bogdan }, new Car() { Name = "Tesla", Model = "Model X", Color = ConsoleColor.Red } }; // Два варіанти реалізації #if false // в даному випадку трохи запутане завдання, або не до кінця сформульоване // так як можна присвоїти машині власника і перевірити чи вона поїде // або запускати поїздку через водія, тоді втрачається смисл коли немає водія foreach (AVehicle i in garage) { i.Move(); //Bogdan.MoveOn(i); } #endif #if true foreach (IVehicle i in garage) { //i.Move(); Bogdan.MoveOn(i); } #endif // можна було і не реалізовувати абстрактний клас, а для використання // інтерфейсу використати реалізацію звичайного класу з його наслідуванням // delay Console.ReadKey(true); }
/// <summary> /// Можливість на чомусь їздити /// </summary> public void MoveOn(AVehicle vehicle) { vehicle.Move(); }