From 1ee8fdc9658145f0bc3949dd589b1b48240362c7 Mon Sep 17 00:00:00 2001 From: user <732603@gmail.com> Date: Tue, 9 Apr 2024 19:41:06 +0400 Subject: [PATCH] Done --- .../ListGenericObjects.cs | 48 ++++++++----------- .../StorageCollection.cs | 36 +++++++++++--- .../ProjectMotorBoat/FormBoatCollection.cs | 16 +++++-- 3 files changed, 61 insertions(+), 39 deletions(-) diff --git a/ProjectMotorBoat/ProjectMotorBoat/CollectionGenericObjects/ListGenericObjects.cs b/ProjectMotorBoat/ProjectMotorBoat/CollectionGenericObjects/ListGenericObjects.cs index 0f53bbd..ddb1ebe 100644 --- a/ProjectMotorBoat/ProjectMotorBoat/CollectionGenericObjects/ListGenericObjects.cs +++ b/ProjectMotorBoat/ProjectMotorBoat/CollectionGenericObjects/ListGenericObjects.cs @@ -1,5 +1,9 @@ namespace ProjectMotorBoat.CollectionGenericObjects; +/// +/// Параметризованный набор объектов +/// +/// Параметр: ограничение - ссылочный тип public class ListGenericObjects : ICollectionGenericObjects where T : class { @@ -21,7 +25,7 @@ public class ListGenericObjects : ICollectionGenericObjects 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 : ICollectionGenericObjects 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; } } diff --git a/ProjectMotorBoat/ProjectMotorBoat/CollectionGenericObjects/StorageCollection.cs b/ProjectMotorBoat/ProjectMotorBoat/CollectionGenericObjects/StorageCollection.cs index 1422a9d..eabc5d7 100644 --- a/ProjectMotorBoat/ProjectMotorBoat/CollectionGenericObjects/StorageCollection.cs +++ b/ProjectMotorBoat/ProjectMotorBoat/CollectionGenericObjects/StorageCollection.cs @@ -1,4 +1,8 @@ -namespace ProjectMotorBoat.CollectionGenericObjects; +using ProjectMotorBoat.Drawings; +using ProjectMotorBoat.MovementStrategy; +using System.Windows.Forms; + +namespace ProjectMotorBoat.CollectionGenericObjects; /// /// Класс-хранилище коллекций @@ -29,11 +33,27 @@ public class StorageCollection /// Добавление коллекции в хранилище /// /// Название коллекции - /// тип коллекции + /// Тип коллекции 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(); + break; + } + case CollectionType.Massive: + { + _storages[name] = new MassiveGenericObjects(); + break; + } + } + } } /// @@ -42,7 +62,8 @@ public class StorageCollection /// Название коллекции public void DelCollection(string name) { - // TODO Прописать логику для удаления коллекции + // Прописать логику для удаления коллекции ✔ + _storages.Remove(name); } /// @@ -54,7 +75,10 @@ public class StorageCollection { get { - // TODO Продумать логику получения объекта + // Продумать логику получения объекта ✔ + if (_storages.ContainsKey(name)) + return _storages[name]; + return null; } } diff --git a/ProjectMotorBoat/ProjectMotorBoat/FormBoatCollection.cs b/ProjectMotorBoat/ProjectMotorBoat/FormBoatCollection.cs index df11543..96b3d04 100644 --- a/ProjectMotorBoat/ProjectMotorBoat/FormBoatCollection.cs +++ b/ProjectMotorBoat/ProjectMotorBoat/FormBoatCollection.cs @@ -222,10 +222,18 @@ public partial class FormBoatCollection : Form /// 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(); } ///