From 336946ecfebd784e2c4ef4edbd6d7829ce7356ca Mon Sep 17 00:00:00 2001 From: F1rsTTeaM Date: Sun, 14 Apr 2024 12:12:24 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20Extentuon=20?= =?UTF-8?q?=D0=B8=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2=20=D0=BA=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=BC=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Drawnings/DrawingAirplaneWithRadar.cs | 12 +++- .../Drawnings/DrawningAirplane.cs | 9 +++ .../Drawnings/ExtentionDrawningAirplane.cs | 55 +++++++++++++++++++ 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/ExtentionDrawningAirplane.cs diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawingAirplaneWithRadar.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawingAirplaneWithRadar.cs index 8ba2e38..a4188e6 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawingAirplaneWithRadar.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawingAirplaneWithRadar.cs @@ -6,7 +6,7 @@ namespace ProjectAirplaneWithRadar.Drawnings /// Класс, отвечающий за прорисовку и перемещение объекта-сущности /// public class DrawingAirplaneWithRadar : DrawningAirplane - { + { /// /// Инициализация свойств /// @@ -21,6 +21,16 @@ namespace ProjectAirplaneWithRadar.Drawnings EntityAirplane = new EntityAirplaneWithRadar(speed, weight, bodyColor, additionalColor, wheels, radar); } + /// + /// Конструктор для метода создания объекта из строки (ExtentionDrawningAirplane) + /// + /// + public DrawingAirplaneWithRadar(EntityAirplane? airplane) : base(airplane) + { + if (airplane != null) + EntityAirplane = airplane; + } + /// /// Прорисовка объекта /// diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawningAirplane.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawningAirplane.cs index 63981d4..c2e33b6 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawningAirplane.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/DrawningAirplane.cs @@ -83,6 +83,15 @@ namespace ProjectAirplaneWithRadar.Drawnings EntityAirplane = new EntityAirplane(speed, weight, bodyColor); } + /// + /// Конструктор для метода создания объекта из строки (ExtentionDrawningAirplane) + /// + /// + public DrawningAirplane(EntityAirplane? airplane) : this() + { + EntityAirplane = airplane; + } + /// /// Конструктор для наследников /// diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/ExtentionDrawningAirplane.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/ExtentionDrawningAirplane.cs new file mode 100644 index 0000000..b23ed4b --- /dev/null +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/Drawnings/ExtentionDrawningAirplane.cs @@ -0,0 +1,55 @@ +using ProjectAirplaneWithRadar.Entities; + +namespace ProjectAirplaneWithRadar.Drawnings +{ + public static class ExtentionDrawningAirplane + { + /// + /// Разделитель для записи информации по объекту в файл + /// + private static readonly string _separatorForObject = ":"; + + /// + /// Создание объекта из строки + /// + /// Строка с данными для создания объекта + /// Объект + public static DrawningAirplane? CreateDrawningAirplane(this string info) + { + string[] strs = info.Split(_separatorForObject); + EntityAirplane? airplane = EntityAirplaneWithRadar.CreateEntityAirplaneWithRadar(strs); + + if (airplane != null) + { + return new DrawingAirplaneWithRadar(airplane); + } + + airplane = EntityAirplane.CreateEntityAirplane(strs); + + if (airplane != null) + { + return new DrawningAirplane(airplane); + } + + return null; + } + + /// + /// Получение данных для сохранения в файл + /// + /// Сохраняемый объект + /// Строка с данными по объекту + public static string GetDataForSave(this DrawningAirplane drawningAirplane) + { + string[]? array = drawningAirplane?.EntityAirplane?.GetStringRepresentation(); + + if (array == null) + { + return string.Empty; + } + + return string.Join(_separatorForObject, array); + } + + } +}