diff --git a/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Drawnings/ExtentionDrawningWarship.cs b/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Drawnings/ExtentionDrawningWarship.cs
new file mode 100644
index 0000000..8f58c7b
--- /dev/null
+++ b/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Drawnings/ExtentionDrawningWarship.cs
@@ -0,0 +1,58 @@
+using ProjectAircraftCarrier_.Drawnings;
+using ProjectAircraftCarrier_.Entities;
+
+namespace ProjectAircraftwarshiprier_.Drawnings;
+
+///
+/// Расширение для класса EntityWarship
+///
+public static class ExtentionDrawningWarship
+{
+ ///
+ /// Разделитель для записи информации по объекту в файл
+ ///
+ private static readonly string _separatorForObject = ":";
+
+ ///
+ /// Создание объекта из строки
+ ///
+ /// Строка с данными для создания объекта
+ /// Объект
+ public static DrawningWarship? CreateDrawningWarship(this string info)
+ {
+ string[] strs = info.Split(_separatorForObject);
+ EntityWarship? warship = EntityAircraftCarrier.CreateEntityAircraftCarrier(strs);
+ if (warship != null)
+ {
+ return new DrawningAircraftCarrier(warship.Speed, warship.Weight, warship.BodyColor,
+ (warship as EntityAircraftCarrier).AdditionalColor, (warship as EntityAircraftCarrier).DeckForAircraftTakeOff,
+ (warship as EntityAircraftCarrier).ControlCabin, (warship as EntityAircraftCarrier).FighterJet);
+ }
+
+ warship = EntityWarship.CreateEntityWarship(strs);
+ if (warship != null)
+ {
+ return new DrawningWarship(warship.Speed, warship.Weight, warship.BodyColor);
+ }
+
+ return null;
+ }
+
+ ///
+ /// Получение данных для сохранения в файл
+ ///
+ /// Сохраняемый объект
+ /// Строка с данными по объекту
+ public static string GetDataForSave(this DrawningWarship drawningWarship)
+ {
+ string[]? array = drawningWarship?.EntityWarship?.GetStringRepresentation();
+
+ if (array == null)
+ {
+ return string.Empty;
+ }
+
+ return string.Join(_separatorForObject, array);
+ }
+
+}
diff --git a/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Entities/EntityAircraftCarrier.cs b/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Entities/EntityAircraftCarrier.cs
index 3e87b05..5c36aaf 100644
--- a/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Entities/EntityAircraftCarrier.cs
+++ b/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Entities/EntityAircraftCarrier.cs
@@ -51,4 +51,35 @@ public class EntityAircraftCarrier : EntityWarship
{
AdditionalColor = newColor;
}
+
+ public override string[] GetStringRepresentation()
+ {
+ return new[]
+ {
+ nameof(EntityAircraftCarrier),
+ Speed.ToString(),
+ Weight.ToString(),
+ BodyColor.Name,
+ AdditionalColor.Name,
+ DeckForAircraftTakeOff.ToString(),
+ ControlCabin.ToString(),
+ FighterJet.ToString()
+ };
+ }
+
+ ///
+ /// Создание объекта из массива строк
+ ///
+ ///
+ ///
+ public static EntityAircraftCarrier? CreateEntityAircraftCarrier(string[] strs)
+ {
+ if (strs.Length != 8 || strs[0] != nameof(EntityAircraftCarrier))
+ {
+ return null;
+ }
+
+ return new EntityAircraftCarrier(Convert.ToInt32(strs[1]), Convert.ToDouble(strs[2]), Color.FromName(strs[3]),
+ Color.FromName(strs[4]), Convert.ToBoolean(strs[5]), Convert.ToBoolean(strs[6]), Convert.ToBoolean(strs[7]));
+ }
}
\ No newline at end of file
diff --git a/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Entities/EntityWarship.cs b/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Entities/EntityWarship.cs
index 23ab4d3..2d323b3 100644
--- a/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Entities/EntityWarship.cs
+++ b/ProjectAircraftCarrier_/ProjectAircraftCarrier_/Entities/EntityWarship.cs
@@ -46,4 +46,28 @@ public class EntityWarship
{
BodyColor = newColor;
}
+
+ ///
+ /// Получение строк со значениями свойств объекта класса-сущности
+ ///
+ ///
+ public virtual string[] GetStringRepresentation()
+ {
+ return new[] { nameof(EntityWarship), Speed.ToString(), Weight.ToString(), BodyColor.Name };
+ }
+
+ ///
+ /// Создание объекта из массива строк
+ ///
+ ///
+ ///
+ public static EntityWarship? CreateEntityWarship(string[] strs)
+ {
+ if (strs.Length != 4 || strs[0] != nameof(EntityWarship))
+ {
+ return null;
+ }
+
+ return new EntityWarship(Convert.ToInt32(strs[1]), Convert.ToDouble(strs[2]), Color.FromName(strs[3]));
+ }
}