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;
+ }
+}