Done
This commit is contained in:
parent
24bfb6da10
commit
1ee8fdc965
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user