FinalLabWork4

This commit is contained in:
Tonb73 2024-04-01 16:28:49 +03:00
parent f4307c9c87
commit 7aa716fd79
4 changed files with 57 additions and 6 deletions

View File

@ -61,6 +61,7 @@ public abstract class AbstractCompany
/// <returns></returns>
public static int operator +(AbstractCompany company, DrawningLocomotive locomotive)
{
return company._collection.Insert(locomotive);
}
/// <summary>

View File

@ -32,27 +32,47 @@ namespace ProjectElectricLocomotive.CollectionGenericObjects
}
public T? Get(int position)
{
if(position >= 0 && position < Count)
{
return _collection[position];
}
// TODO проверка позиции
return _collection[position];
return null;
}
public int Insert(T obj)
{
if(Count <= _maxCount)
{
_collection.Add(obj);
return Count;
}
// TODO проверка, что не превышено максимальное количество элементов
// TODO вставка в конец набора
return 1;
return -1;
}
public int Insert(T obj, int position)
{
if(Count <= _maxCount)
{
_collection.Insert(position, obj);
return position;
}
// TODO проверка, что не превышено максимальное количество элементов
// TODO проверка позиции
// TODO вставка по позиции
return 1;
return -1;
}
public T Remove(int position)
{
if(position >= 0 && position <= _maxCount)
{
T ret = _collection[position];
_collection.RemoveAt(position);
return ret;
}
// TODO проверка позиции
// TODO удаление объекта из списка
return (T)1;
return null;
}
}

View File

@ -13,6 +13,7 @@ namespace ProjectElectricLocomotive.CollectionGenericObjects;
public class StorageCollection<T>
where T : class
{
/// <summary>
/// Словарь (хранилище) с коллекциями
/// </summary>
@ -35,6 +36,16 @@ where T : class
/// <param name="collectionType">тип коллекции</param>
public void AddCollection(string name, CollectionType collectionType)
{
if(collectionType != CollectionType.None && !_storages.ContainsKey(name)) {
if(collectionType == CollectionType.List)
{
_storages.Add(name, new ListGenericObjects<T>());
}
else if (collectionType == CollectionType.Massive)
{
_storages.Add(name, new MassiveGenericObjects<T>());
}
}
// TODO проверка, что name не пустой и нет в словаре записи с таким ключом
// TODO Прописать логику для добавления
}
@ -44,6 +55,10 @@ where T : class
/// <param name="name">Название коллекции</param>
public void DelCollection(string name)
{
if (_storages.ContainsKey(name))
{
_storages.Remove(name);
}
// TODO Прописать логику для удаления коллекции
}
/// <summary>
@ -55,8 +70,13 @@ where T : class
{
get
{
if (_storages.ContainsKey(name))
{
return _storages[name];
}
// TODO Продумать логику получения объекта
return null;
}
}
}

View File

@ -240,7 +240,7 @@ public partial class FormLocomotiveCollection : Form
}
switch (comboBoxSelectorCompany.Text)
{
case "Хранилище":
case "Депо":
_company = new LocomotiveDepo(pictureBox.Width,
pictureBox.Height, collection);
break;
@ -258,7 +258,17 @@ public partial class FormLocomotiveCollection : Form
/// <param name="e"></param>
private void buttonCollectionDel_Click(object sender, EventArgs e)
{
if (listBoxCollection.SelectedIndex < 0 || listBoxCollection.SelectedItem == null)
{
MessageBox.Show("Коллекция не выбрана");
return;
}
if (MessageBox.Show("Удалить коллекцию?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
return;
}
_storageCollection.DelCollection(listBoxCollection.SelectedItem.ToString());
RerfreshListBoxItems();
// TODO прописать логику удаления элемента из коллекции
// нужно убедиться, что есть выбранная коллекция
// спросить у пользователя через MessageBox, что он подтверждает, что хочет удалить запись