Начала лаб 6
This commit is contained in:
parent
9712e38913
commit
b2dd4bf3a1
@ -14,7 +14,7 @@ public interface ICollectionGenericObjects<T>
|
||||
/// <summary>
|
||||
/// Установка максимального количества элементов
|
||||
/// </summary>
|
||||
int SetMaxCount { set; }
|
||||
int MaxCount { set; }
|
||||
/// <summary>
|
||||
/// Добавление объекта в коллекцию
|
||||
/// </summary>
|
||||
@ -40,4 +40,13 @@ public interface ICollectionGenericObjects<T>
|
||||
/// <param name="position">Позиция</param>
|
||||
/// <returns>Объект</returns>
|
||||
T? Get(int position);
|
||||
/// <summary>
|
||||
/// Получение типа коллекции
|
||||
/// </summary>
|
||||
CollectionType GetCollectionType { get; }
|
||||
/// <summary>
|
||||
/// Получение объектов коллекции по одному
|
||||
/// </summary>
|
||||
/// <returns>Поэлементый вывод элементов коллекции</returns>
|
||||
IEnumerable<T?> GetItems();
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
|
||||
/// Максимально допустимое число объектов в списке
|
||||
/// </summary>
|
||||
private int _maxCount;
|
||||
public CollectionType GetCollectionType => CollectionType.List;
|
||||
public int Count => _collection.Count;
|
||||
public int SetMaxCount { set { if (value > 0) { _maxCount = value; } } }
|
||||
/// <summary>
|
||||
@ -53,4 +54,11 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
|
||||
_collection.RemoveAt(position);
|
||||
return obj;
|
||||
}
|
||||
public IEnumerable<T?> GetItems()
|
||||
{
|
||||
for (int i = 0; i < Count; ++i)
|
||||
{
|
||||
yield return _collection[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,10 +12,28 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
|
||||
/// </summary>
|
||||
private T?[] _collection;
|
||||
public int Count => _collection.Length;
|
||||
public int SetMaxCount { set { if (value > 0) { _collection = new T?[value]; } } }
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
public CollectionType GetCollectionType => CollectionType.Massive;
|
||||
public int MaxCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return _collection.Length;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value > 0)
|
||||
{
|
||||
if (_collection.Length > 0)
|
||||
{
|
||||
Array.Resize(ref _collection, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
_collection = new T?[value];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public MassiveGenericObjects()
|
||||
{
|
||||
_collection = Array.Empty<T?>();
|
||||
@ -87,4 +105,11 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
|
||||
_collection[position] = null;
|
||||
return obj;
|
||||
}
|
||||
public IEnumerable<T?> GetItems()
|
||||
{
|
||||
for (int i = 0; i < _collection.Length; ++i)
|
||||
{
|
||||
yield return _collection[i];
|
||||
}
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace SelfPropelledArtilleryUnit.CollectionGenericObjects;
|
||||
public class StorageCollection<T>
|
||||
where T : class
|
||||
where T : DrawningPropelledArtillery
|
||||
{
|
||||
/// <summary>
|
||||
/// Словарь (хранилище) с коллекциями
|
||||
@ -61,4 +61,5 @@ public class StorageCollection<T>
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -99,7 +99,10 @@ public class DrawningPropelledArtillery
|
||||
_drawningPropelledArtilleryWidth = drawningPropelledArtilleryWidth;
|
||||
_drawningPropelledArtilleryHeight = drawningPropelledArtilleryHeight;
|
||||
}
|
||||
|
||||
public DrawningPropelledArtillery(EntityPropelledArtillery propelledArtillery) : this()
|
||||
{
|
||||
EntityPropelledArtillery = new EntityPropelledArtillery(propelledArtillery.Speed, propelledArtillery.Weight, propelledArtillery.BodyColor);
|
||||
}
|
||||
/// <summary>
|
||||
/// Установка границ поля
|
||||
/// </summary>
|
||||
|
@ -18,6 +18,10 @@ public class DrawningSelfPropelledArtilleryUnit : DrawningPropelledArtillery
|
||||
EntityPropelledArtillery = new EntitySelfPropelledArtilleryUnit(speed, weight, bodyColor, additionalColor, turretCannon, launchBattery);
|
||||
//дописать
|
||||
}
|
||||
public DrawningSelfPropelledArtilleryUnit(EntitySelfPropelledArtilleryUnit ship) : base(135, 105)
|
||||
{
|
||||
EntityPropelledArtillery = new EntitySelfPropelledArtilleryUnit(ship.Speed, ship.Weight, ship.BodyColor, ship.AdditionalColor, ship.TurretCannon, ship.LaunchBattery);
|
||||
}
|
||||
|
||||
public override void DrawTransport(Graphics g)
|
||||
{
|
||||
|
@ -0,0 +1,50 @@
|
||||
using SelfPropelledArtilleryUnit.Entities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SelfPropelledArtilleryUnit.Drawnings;
|
||||
|
||||
public static class ExtentionDrawningPropelledArtillery
|
||||
{
|
||||
/// <summary>
|
||||
/// Разделитель для записи информации по объекту в файл
|
||||
/// </summary>
|
||||
private static readonly string _separatorForObject = ":";
|
||||
/// <summary>
|
||||
/// Создание объекта из строки
|
||||
/// </summary>
|
||||
/// <param name="info">Строка с данными для создания объекта</param>
|
||||
/// <returns>Объект</returns>
|
||||
public static DrawningPropelledArtillery? CreateDrawningPropelledArtillery(this string info)
|
||||
{
|
||||
string[] strs = info.Split(_separatorForObject);
|
||||
EntityPropelledArtillery? propelledArtillery = EntitySelfPropelledArtilleryUnit.CreateEntitySelfPropelledArtilleryUnit(strs);
|
||||
if (propelledArtillery != null)
|
||||
{
|
||||
return new DrawningSelfPropelledArtilleryUnit((EntitySelfPropelledArtilleryUnit)propelledArtillery);
|
||||
}
|
||||
propelledArtillery = EntityPropelledArtillery.CreateEntityPropelledArtillery(strs);
|
||||
if (propelledArtillery != null)
|
||||
{
|
||||
return new DrawningPropelledArtillery(propelledArtillery);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// Получение данных для сохранения в файл
|
||||
/// </summary>
|
||||
/// <param name="drawningCar">Сохраняемый объект</param>
|
||||
/// <returns>Строка с данными по объекту</returns>
|
||||
public static string GetDataForSave(this DrawningPropelledArtillery drawningCar)
|
||||
{
|
||||
string[]? array = drawningCar?.EntityPropelledArtillery?.GetStringRepresentation();
|
||||
if (array == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
return string.Join(_separatorForObject, array);
|
||||
}
|
||||
}
|
@ -36,4 +36,26 @@ public class EntityPropelledArtillery
|
||||
Weight = weight;
|
||||
BodyColor = bodyColor;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение строк со значениями свойств объекта класса-сущности
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public virtual string[] GetStringRepresentation()
|
||||
{
|
||||
return new[] { nameof(EntityPropelledArtillery), Speed.ToString(), Weight.ToString(), BodyColor.Name };
|
||||
}
|
||||
/// <summary>
|
||||
/// Создание объекта из массива строк
|
||||
/// </summary>
|
||||
/// <param name="strs"></param>
|
||||
/// <returns></returns>
|
||||
public static EntityPropelledArtillery? CreateEntityPropelledArtillery(string[] strs)
|
||||
{
|
||||
if (strs.Length != 4 || strs[0] != nameof(EntityPropelledArtillery))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new EntityPropelledArtillery(Convert.ToInt32(strs[1]), Convert.ToDouble(strs[2]), Color.FromName(strs[3]));
|
||||
}
|
||||
}
|
||||
|
@ -37,5 +37,28 @@ public class EntitySelfPropelledArtilleryUnit : EntityPropelledArtillery
|
||||
TurretCannon = turretcannon;
|
||||
LaunchBattery = launchbattery;
|
||||
}
|
||||
/// <summary>
|
||||
/// Получение строк со значениями свойств продвинутого объекта класса-сущности
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override string[] GetStringRepresentation()
|
||||
{
|
||||
return new[] { nameof(EntitySelfPropelledArtilleryUnit), Speed.ToString(), Weight.ToString(), BodyColor.Name, AdditionalColor.Name,
|
||||
TurretCannon.ToString(), LaunchBattery.ToString()};
|
||||
}
|
||||
/// <summary>
|
||||
/// Создание продвинутого объекта из массива строк
|
||||
/// </summary>
|
||||
/// <param name="strs"></param>
|
||||
/// <returns></returns>
|
||||
public static EntitySelfPropelledArtilleryUnit? CreateEntitySelfPropelledArtilleryUnit(string[] strs)
|
||||
{
|
||||
if (strs.Length != 7 || strs[0] != nameof(EntitySelfPropelledArtilleryUnit))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new EntitySelfPropelledArtilleryUnit(Convert.ToInt32(strs[1]), Convert.ToDouble(strs[2]), Color.FromName(strs[3]),
|
||||
Color.FromName(strs[4]), Convert.ToBoolean(strs[5]), Convert.ToBoolean(strs[6]));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user