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