This commit is contained in:
user 2024-04-09 19:41:06 +04:00
parent 24bfb6da10
commit 1ee8fdc965
3 changed files with 61 additions and 39 deletions

View File

@ -1,5 +1,9 @@
namespace ProjectMotorBoat.CollectionGenericObjects;
/// <summary>
/// Параметризованный набор объектов
/// </summary>
/// <typeparam name="T">Параметр: ограничение - ссылочный тип</typeparam>
public class ListGenericObjects<T> : ICollectionGenericObjects<T>
where T : class
{
@ -21,7 +25,7 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
public T? Get(int position)
{
if (_collection[position] != null && position < Count - 1)
if (position < Count && _collection[position] != null)
{
return _collection[position];
}
@ -30,52 +34,38 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
public int Insert(T obj)
{
for (int i = 0; i < Count; i++)
if (Count < _maxCount)
{
if (_collection[i] == null)
{
_collection[i] = obj;
return i;
}
_collection.Add(obj);
return _collection.Count;
}
return -1;
}
public int Insert(T obj, int position)
{
if (_collection[position] != null)
if (Count < _maxCount)
{
for (int i = position; i < Count; i++)
if (_collection[position] == null)
{
if (_collection[i] == null)
{
_collection[position] = obj;
return position;
}
}
for (int i = position; i > 0; i--)
{
if (_collection[i] == null)
{
_collection[position] = obj;
return position;
}
_collection.Insert(position, obj);
return position;
}
}
return -1;
}
public T? Remove(int position)
{
if (_collection[position] != null)
if (Count < _maxCount)
{
T? obj = _collection[position];
_collection[position] = null;
return obj;
if (_collection[position] != null)
{
T? obj = _collection[position];
_collection.RemoveAt(position);
return obj;
}
}
return null;
}
}

View File

@ -1,4 +1,8 @@
namespace ProjectMotorBoat.CollectionGenericObjects;
using ProjectMotorBoat.Drawings;
using ProjectMotorBoat.MovementStrategy;
using System.Windows.Forms;
namespace ProjectMotorBoat.CollectionGenericObjects;
/// <summary>
/// Класс-хранилище коллекций
@ -29,11 +33,27 @@ public class StorageCollection<T>
/// Добавление коллекции в хранилище
/// </summary>
/// <param name="name">Название коллекции</param>
/// <param name="collectionType">тип коллекции</param>
/// <param name="collectionType">Тип коллекции</param>
public void AddCollection(string name, CollectionType collectionType)
{
// TODO проверка, что name не пустой и нет в словаре записи с таким ключом
// TODO Прописать логику для добавления
// проверка, что name не пустой и нет в словаре записи с таким ключом ✔
// Прописать логику для добавления ✔
if (name != null && !_storages.ContainsKey(name))
{
switch (collectionType)
{
case CollectionType.List:
{
_storages[name] = new ListGenericObjects<T>();
break;
}
case CollectionType.Massive:
{
_storages[name] = new MassiveGenericObjects<T>();
break;
}
}
}
}
/// <summary>
@ -42,7 +62,8 @@ public class StorageCollection<T>
/// <param name="name">Название коллекции</param>
public void DelCollection(string name)
{
// TODO Прописать логику для удаления коллекции
// Прописать логику для удаления коллекции ✔
_storages.Remove(name);
}
/// <summary>
@ -54,7 +75,10 @@ public class StorageCollection<T>
{
get
{
// TODO Продумать логику получения объекта
// Продумать логику получения объекта ✔
if (_storages.ContainsKey(name))
return _storages[name];
return null;
}
}

View File

@ -222,10 +222,18 @@ public partial class FormBoatCollection : Form
/// <param name="e"></param>
private void ButtonCollectionDel_Click(object sender, EventArgs e)
{
// TODO прописать логику удаления элемента из коллекции
// нужно убедиться, что есть выбранная коллекция
// спросить у пользователя через MessageBox, что он подтверждает, что хочет удалить запись
// удалить и обновить ListBox
// прописать логику удаления элемента из коллекции ✔
// нужно убедиться, что есть выбранная коллекция ✔
// спросить у пользователя через MessageBox, что он подтверждает, что хочет удалить запись ✔
// удалить и обновить ListBox ✔
if (MessageBox.Show("Удалить коллекцию?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
{
return;
}
if (_storageCollection.Keys.Contains(listBoxCollection.SelectedItem.ToString() ?? string.Empty))
_storageCollection.DelCollection(listBoxCollection.SelectedItem.ToString() ?? string.Empty);
RerfreshListBoxItems();
}
/// <summary>