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; namespace ProjectMotorBoat.CollectionGenericObjects;
/// <summary>
/// Параметризованный набор объектов
/// </summary>
/// <typeparam name="T">Параметр: ограничение - ссылочный тип</typeparam>
public class ListGenericObjects<T> : ICollectionGenericObjects<T> public class ListGenericObjects<T> : ICollectionGenericObjects<T>
where T : class where T : class
{ {
@ -21,7 +25,7 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
public T? Get(int position) public T? Get(int position)
{ {
if (_collection[position] != null && position < Count - 1) if (position < Count && _collection[position] != null)
{ {
return _collection[position]; return _collection[position];
} }
@ -30,52 +34,38 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
public int Insert(T obj) public int Insert(T obj)
{ {
for (int i = 0; i < Count; i++) if (Count < _maxCount)
{ {
if (_collection[i] == null) _collection.Add(obj);
{ return _collection.Count;
_collection[i] = obj;
return i;
}
} }
return -1; return -1;
} }
public int Insert(T obj, int position) 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.Insert(position, obj);
{
_collection[position] = obj;
return position; return position;
} }
} }
for (int i = position; i > 0; i--)
{
if (_collection[i] == null)
{
_collection[position] = obj;
return position;
}
}
}
return -1; return -1;
} }
public T? Remove(int position) public T? Remove(int position)
{
if (Count < _maxCount)
{ {
if (_collection[position] != null) if (_collection[position] != null)
{ {
T? obj = _collection[position]; T? obj = _collection[position];
_collection[position] = null; _collection.RemoveAt(position);
return obj; return obj;
} }
}
return null; 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> /// <summary>
/// Класс-хранилище коллекций /// Класс-хранилище коллекций
@ -29,11 +33,27 @@ public class StorageCollection<T>
/// Добавление коллекции в хранилище /// Добавление коллекции в хранилище
/// </summary> /// </summary>
/// <param name="name">Название коллекции</param> /// <param name="name">Название коллекции</param>
/// <param name="collectionType">тип коллекции</param> /// <param name="collectionType">Тип коллекции</param>
public void AddCollection(string name, CollectionType collectionType) public void AddCollection(string name, CollectionType collectionType)
{ {
// TODO проверка, что name не пустой и нет в словаре записи с таким ключом // проверка, что name не пустой и нет в словаре записи с таким ключом ✔
// TODO Прописать логику для добавления // Прописать логику для добавления ✔
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> /// <summary>
@ -42,7 +62,8 @@ public class StorageCollection<T>
/// <param name="name">Название коллекции</param> /// <param name="name">Название коллекции</param>
public void DelCollection(string name) public void DelCollection(string name)
{ {
// TODO Прописать логику для удаления коллекции // Прописать логику для удаления коллекции ✔
_storages.Remove(name);
} }
/// <summary> /// <summary>
@ -54,7 +75,10 @@ public class StorageCollection<T>
{ {
get get
{ {
// TODO Продумать логику получения объекта // Продумать логику получения объекта ✔
if (_storages.ContainsKey(name))
return _storages[name];
return null; return null;
} }
} }

View File

@ -222,10 +222,18 @@ public partial class FormBoatCollection : Form
/// <param name="e"></param> /// <param name="e"></param>
private void ButtonCollectionDel_Click(object sender, EventArgs e) private void ButtonCollectionDel_Click(object sender, EventArgs e)
{ {
// TODO прописать логику удаления элемента из коллекции // прописать логику удаления элемента из коллекции ✔
// нужно убедиться, что есть выбранная коллекция // нужно убедиться, что есть выбранная коллекция ✔
// спросить у пользователя через MessageBox, что он подтверждает, что хочет удалить запись // спросить у пользователя через MessageBox, что он подтверждает, что хочет удалить запись ✔
// удалить и обновить ListBox // удалить и обновить 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> /// <summary>