diff --git a/HoistingCrane/HoistingCrane/CollectionGenericObjects/AbstractCompany.cs b/HoistingCrane/HoistingCrane/CollectionGenericObjects/AbstractCompany.cs index be9be73..b6b8cd6 100644 --- a/HoistingCrane/HoistingCrane/CollectionGenericObjects/AbstractCompany.cs +++ b/HoistingCrane/HoistingCrane/CollectionGenericObjects/AbstractCompany.cs @@ -42,13 +42,13 @@ namespace HoistingCrane.CollectionGenericObjects arr.SetMaxCount = GetMaxCount; } - public static bool operator +(AbstractCompany company, DrawningTrackedVehicle car) + public static DrawningTrackedVehicle operator +(AbstractCompany company, DrawningTrackedVehicle car) { - return company.arr?.Insert(car) ?? false; + return company.arr?.Insert(car) ?? null; } - public static bool operator -(AbstractCompany company, int position) + public static DrawningTrackedVehicle operator -(AbstractCompany company, int position) { - return company.arr?.Remove(position) ?? false; + return company.arr?.Remove(position) ?? null; } public DrawningTrackedVehicle? GetRandomObject() diff --git a/HoistingCrane/HoistingCrane/CollectionGenericObjects/ICollectionGenericObjects.cs b/HoistingCrane/HoistingCrane/CollectionGenericObjects/ICollectionGenericObjects.cs index 6187862..679548b 100644 --- a/HoistingCrane/HoistingCrane/CollectionGenericObjects/ICollectionGenericObjects.cs +++ b/HoistingCrane/HoistingCrane/CollectionGenericObjects/ICollectionGenericObjects.cs @@ -17,20 +17,25 @@ namespace HoistingCrane.CollectionGenericObjects /// /// /// - bool Insert(T obj); + T? Insert(T obj); /// /// Добавление элемента в коллекцию на определенную позицию /// /// /// /// - bool Insert(T obj, int position); + T? Insert(T obj, int position); /// /// Удаление элемента из коллекции по его позиции /// /// /// - bool Remove(int position); + T? Remove(int position); + /// + /// Получение объекта коллекции + /// + /// + /// T? Get(int position); } } diff --git a/HoistingCrane/HoistingCrane/CollectionGenericObjects/ListGenericObjects.cs b/HoistingCrane/HoistingCrane/CollectionGenericObjects/ListGenericObjects.cs index f70ddbc..ba05f0a 100644 --- a/HoistingCrane/HoistingCrane/CollectionGenericObjects/ListGenericObjects.cs +++ b/HoistingCrane/HoistingCrane/CollectionGenericObjects/ListGenericObjects.cs @@ -1,4 +1,6 @@ using System; +using System.CodeDom.Compiler; + namespace HoistingCrane.CollectionGenericObjects { public class ListGenericObjects : ICollectionGenericObjects where T : class @@ -45,45 +47,45 @@ namespace HoistingCrane.CollectionGenericObjects } - public bool Insert(T obj) + public T? Insert(T obj) { // TODO проверка, что не превышено максимальное количество элементов // TODO вставка в конец набора if(list.Count < _maxCount) { - list.Add(obj); - return true; + return Insert(obj, 0); } - return false; + return null; } - public bool Insert(T obj, int position) + public T? Insert(T obj, int position) { // TODO проверка, что не превышено максимальное количество элементов // TODO проверка позиции // TODO вставка по позиции - if(list.Count < _maxCount && position >= 0 && position < list.Count) + if(position >= 0 && position < list.Count) { if (list[position] == null) { - list[position] = obj; - return true; + list.Add(obj); + return list[position]; } } - return false; + return null; } - public bool Remove(int position) + public T? Remove(int position) { // TODO проверка позиции // TODO удаление объекта из списка if(position >= 0 && position < list.Count) { + T? temp = list[position]; list.RemoveAt(position); - return true; + return temp; } - return false; - } + return null; + } } } diff --git a/HoistingCrane/HoistingCrane/CollectionGenericObjects/MassivGenericObjects.cs b/HoistingCrane/HoistingCrane/CollectionGenericObjects/MassivGenericObjects.cs index 3e48100..bd5beca 100644 --- a/HoistingCrane/HoistingCrane/CollectionGenericObjects/MassivGenericObjects.cs +++ b/HoistingCrane/HoistingCrane/CollectionGenericObjects/MassivGenericObjects.cs @@ -33,62 +33,52 @@ namespace HoistingCrane.CollectionGenericObjects public T? Insert(T obj) { - for(int i = 0; i < Count; i++) + for (int i = 0; i < Count; i++) { - if (arr[i] == null) { - arr[i] = obj; - return true; + if (arr[i] == null) + { + return Insert(obj, 0); } } - return false; + return null; } public T? Insert(T obj, int position) { - // Проверка позиции - if (position < Count && position >= 0) + //todo Проверка позиции + if (position < 0 || position > Count) { - if (arr[position] == null) + return null; + } + + if (arr[position] == null) + { + arr[position] = obj; + return arr[position]; + } + else + { + if (Insert(obj, position + 1) != null) { - arr[position] = obj; + return arr[position + 1]; } - else + if (Insert(obj, position - 1) != null) { - int flag = -1; - for (int i = position + 1; i < arr.Length; i++) - { - if (arr[i] == null) - { - flag = 1; - arr[i] = obj; - break; - } - } - if (flag == -1 && position != 0) - { - for (int i = position - 1; i >= 0; i--) - { - if (arr[i] == null) - { - arr[i] = obj; - break; - } - } - } + return arr[position - 1]; } } - - return false; + return null; } public T? Remove(int position) { - if(position < 0 || position >= arr.Length || arr[position] == null) + if (position >= 0 && position < Count) { - return false; + T? temp = arr[position]; + arr[position] = null; + return temp; } - arr[position] = null; - return true; + return null; } } } diff --git a/HoistingCrane/HoistingCrane/CollectionGenericObjects/StorageCollection.cs b/HoistingCrane/HoistingCrane/CollectionGenericObjects/StorageCollection.cs index 49e28b5..7e84f1b 100644 --- a/HoistingCrane/HoistingCrane/CollectionGenericObjects/StorageCollection.cs +++ b/HoistingCrane/HoistingCrane/CollectionGenericObjects/StorageCollection.cs @@ -6,17 +6,17 @@ namespace HoistingCrane.CollectionGenericObjects /// /// Словарь (хранилище) с коллекциями /// - readonly Dictionary> _storages; + readonly Dictionary> dict; /// /// Возвращение списка названий коллекций /// - public List Keys => _storages.Keys.ToList(); + public List Keys => dict.Keys.ToList(); /// /// Конструктор /// public StorageCollection() { - _storages = new Dictionary>(); + dict = new Dictionary>(); } /// /// Добавление коллекции в хранилище @@ -31,11 +31,11 @@ namespace HoistingCrane.CollectionGenericObjects { if(collectionType == CollectionType.Massive) { - _storages.Add(name, new MassivGenericObjects ()); + dict.Add(name, new MassivGenericObjects ()); } if(collectionType == CollectionType.List) { - _storages.Add(name, new ListGenericObjects ()); + dict.Add(name, new ListGenericObjects ()); } } } @@ -46,9 +46,10 @@ namespace HoistingCrane.CollectionGenericObjects public void DelCollection(string name) { // TODO Прописать логику для удаления коллекции + if(Keys.Contains(name)) { - _storages.Remove(name); + dict.Remove(name); } } /// @@ -61,9 +62,9 @@ namespace HoistingCrane.CollectionGenericObjects get { // TODO Продумать логику получения объекта - if (Keys.Contains(name)) + if (dict.TryGetValue(name, out ICollectionGenericObjects? result)) { - return _storages[name]; + return result; } return null; } diff --git a/HoistingCrane/HoistingCrane/FormCarCollection.cs b/HoistingCrane/HoistingCrane/FormCarCollection.cs index 2885274..4d1678b 100644 --- a/HoistingCrane/HoistingCrane/FormCarCollection.cs +++ b/HoistingCrane/HoistingCrane/FormCarCollection.cs @@ -52,7 +52,7 @@ namespace HoistingCrane default: return; } - if (_company + drawning) + if ((_company + drawning) != null) { MessageBox.Show("Объект добавлен"); pictureBox.Image = _company.Show(); @@ -94,7 +94,7 @@ namespace HoistingCrane return; } int pos = Convert.ToInt32(maskedTextBox.Text); - if (_company - pos) + if ((_company - pos) != null) { MessageBox.Show("Объект удален!"); pictureBox.Image = _company.Show(); @@ -175,8 +175,16 @@ namespace HoistingCrane // нужно убедиться, что есть выбранная коллекция // спросить у пользователя через MessageBox, что он подтверждает, что хочет удалить запись // удалить и обновить ListBox - + if (listBoxCollection.SelectedIndex < 0 || listBoxCollection.SelectedItem == null) + { + MessageBox.Show("Коллекция не выбрана"); + return; + } + if (MessageBox.Show("Удалить коллекцию?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) + return; + _storageCollection.DelCollection(listBoxCollection.SelectedItem.ToString()); RerfreshListBoxItems(); + } private void buttonCreateCompany_Click(object sender, EventArgs e)