diff --git a/WinFormsAppExcavator/WinFormsAppExcavator/CollectionGenericObjects/ICollectionGenericObjects.cs b/WinFormsAppExcavator/WinFormsAppExcavator/CollectionGenericObjects/ICollectionGenericObjects.cs new file mode 100644 index 0000000..5d2db32 --- /dev/null +++ b/WinFormsAppExcavator/WinFormsAppExcavator/CollectionGenericObjects/ICollectionGenericObjects.cs @@ -0,0 +1,48 @@ +namespace WinFormsAppExcavator.CollectionGenericObjects; + +/// +/// Интерфейс описания действий для набора хранимых объектов +/// +/// +public interface ICollectionGenericObjects + where T : class +{ + /// + /// колличество объектов в коллекции + /// + int Count { get; } + + /// + /// Установка максимального количества элементов + /// + int SetMaxCount { set; } + + /// + /// Добавление объекта в коллекцию + /// + /// Добавляемый объект + /// true - вставка прошла удачно, false - вставка не удалась + bool Insert(T obj); + + /// + /// Добавление объекта в коллекцию на конкретную позицию + /// + /// Добавляемый объект + /// Позиция + /// true - вставка прошла удачно, false - вставка не удалась + bool Insert(T obj, int position); + + /// + /// Удаление объекта из коллекции с конкретной позиции + /// + /// Позиция + /// true - удаление прошло удачно, false - удаление не удалось + bool Remove(int position); + + /// + /// Получение объекта по позиции + /// + /// Позиция + /// Объект + T? Get(int position); +} diff --git a/WinFormsAppExcavator/WinFormsAppExcavator/CollectionGenericObjects/MassiveGenericObjects.cs b/WinFormsAppExcavator/WinFormsAppExcavator/CollectionGenericObjects/MassiveGenericObjects.cs new file mode 100644 index 0000000..bcab8ba --- /dev/null +++ b/WinFormsAppExcavator/WinFormsAppExcavator/CollectionGenericObjects/MassiveGenericObjects.cs @@ -0,0 +1,69 @@ +namespace WinFormsAppExcavator.CollectionGenericObjects; +/// +/// параметризованный набор объектов +/// +/// +public class MassiveGenericObjects : ICollectionGenericObjects + where T : class +{ + /// + /// массив объектов, которые храним + /// + private T?[] _collection; + public int Count => _collection.Length; + + public int SetMaxCount + { + set + { + if (value > 0) + { + if (_collection.Length > 0) + { + Array.Resize(ref _collection, value); + } + else + { + _collection = new T?[value]; + } + } + } + } + + /// + /// Конструктор + /// + public MassiveGenericObjects() + { + _collection = Array.Empty(); + } + + public T? Get(int position) + { + // TODO проверка позиции + return _collection[position]; + } + + public bool Insert(T obj) + { + // TODO вставка в свободное место набора + return false; + } + + public bool Insert(T obj, int position) + { + // TODO проверка позиции + // TODO проверка, что элемент массива по этой позиции пустой, если нет, то + // ищется свободное место после этой позиции и идет вставка туда + // если нет после, ищем до + // TODO вставка + return false; + } + + public bool Remove(int position) + { + // TODO проверка позиции + // TODO удаление объекта из массива, присвоив элементу массива значение null + return true; + } +} diff --git a/WinFormsAppExcavator/WinFormsAppExcavator/FormExcavator.Designer.cs b/WinFormsAppExcavator/WinFormsAppExcavator/FormExcavator.Designer.cs index 5897aac..9858944 100644 --- a/WinFormsAppExcavator/WinFormsAppExcavator/FormExcavator.Designer.cs +++ b/WinFormsAppExcavator/WinFormsAppExcavator/FormExcavator.Designer.cs @@ -122,7 +122,7 @@ namespace WinFormsAppExcavator // // buttonStrategyStep // - buttonStrategyStep.Location = new Point(790, 48); + buttonStrategyStep.Location = new Point(792, 48); buttonStrategyStep.Name = "buttonStrategyStep"; buttonStrategyStep.Size = new Size(94, 29); buttonStrategyStep.TabIndex = 8;