From 870c31e157f7bc2580dee74ae6fce970e11d60df Mon Sep 17 00:00:00 2001 From: MariaBelkina <89656988623@mail.ru> Date: Sat, 6 Apr 2024 12:27:28 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=82=D1=80=D0=B5=D1=82=D1=8C=D0=B5=D0=B9=20=D0=BB?= =?UTF-8?q?=D0=B0=D0=B1=D1=8B=20=D0=BD=D0=B0=20=D0=B2=D1=81=D1=8F=D0=BA?= =?UTF-8?q?=D0=B8=D0=B9=20=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ICollectoinGenericObjects.cs | 54 +++++++++++++++ .../MassiveGenericObject.cs | 69 +++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/ICollectoinGenericObjects.cs create mode 100644 ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/MassiveGenericObject.cs diff --git a/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/ICollectoinGenericObjects.cs b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/ICollectoinGenericObjects.cs new file mode 100644 index 0000000..be6c0e0 --- /dev/null +++ b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/ICollectoinGenericObjects.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectBulldozer.CollectionGenericObjects; + +/// +/// Интерфейс описания действий для набора хранимых объектов +/// +/// Параметр: ограничение - ссылочный тип +public interface ICollectoinGenericObjects + where T : class +{ + /// + /// Колличество объектов в коллекции + /// + int Count { get; } + + /// + /// Установка максимального колличества элементов + /// + int SetMaxCount { set; } + + /// + /// Добавление элемента в коллекцию + /// + /// Добавляемый объект + /// true - вставка прошла удачно, false - вставка не удалась + bool Insert(T obj); + + /// + /// Добавление объекта в коллекцию на конкретную позицию + /// + /// Добавляемый объект + /// Позиция + /// true - вставка прошла удачно, false - вставка не удалась + bool Insert(T obj, int position); + + /// + /// Удаление объекта из коллекции на конкретной позиции + /// + /// Позиция + /// + bool Remove(int position); + + /// + /// Получение объекта по позиции + /// + /// Позиция + /// Объект + T? Get(int position); +} diff --git a/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/MassiveGenericObject.cs b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/MassiveGenericObject.cs new file mode 100644 index 0000000..57b2d03 --- /dev/null +++ b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/MassiveGenericObject.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectBulldozer.CollectionGenericObjects; + +public class MassiveGenericObject : ICollectoinGenericObjects + where T : class +{ + /// + /// Массив объектов, который храним + /// + private T?[] _collection; + + public int Count => _collection.Length; + + public int SetMaxCount + { + set + { + if (value > 0) + { + Array.Resize(ref _collection, value); + } + else + { + _collection =new T?[value]; + } + } + } + + /// + /// Конструктор + /// + public MassiveGenericObject() + { + _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; + } +}