From be8ee033b268ee3e31503ef6b4ced2dda938ecb9 Mon Sep 17 00:00:00 2001 From: Maxim Boyko Date: Thu, 14 Mar 2024 09:42:38 +0400 Subject: [PATCH] fix --- .idea/.idea.BoykoSolution/.idea/.gitignore | 13 ++ .idea/.idea.BoykoSolution/.idea/.name | 1 + .idea/.idea.BoykoSolution/.idea/encodings.xml | 4 + .../.idea.BoykoSolution/.idea/indexLayout.xml | 8 + .idea/.idea.BoykoSolution/.idea/vcs.xml | 6 + .../AbstractCompany.cs | 9 +- .../ICollectionGenericObjects.cs | 10 +- .../MassiveGenericObjects.cs | 188 +++++++++--------- .../FormTransCollection.Designer.cs | 2 +- ProjectElectroTrans/FormTransCollection.cs | 6 +- 10 files changed, 145 insertions(+), 102 deletions(-) create mode 100644 .idea/.idea.BoykoSolution/.idea/.gitignore create mode 100644 .idea/.idea.BoykoSolution/.idea/.name create mode 100644 .idea/.idea.BoykoSolution/.idea/encodings.xml create mode 100644 .idea/.idea.BoykoSolution/.idea/indexLayout.xml create mode 100644 .idea/.idea.BoykoSolution/.idea/vcs.xml diff --git a/.idea/.idea.BoykoSolution/.idea/.gitignore b/.idea/.idea.BoykoSolution/.idea/.gitignore new file mode 100644 index 0000000..e5028a2 --- /dev/null +++ b/.idea/.idea.BoykoSolution/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/projectSettingsUpdater.xml +/.idea.BoykoSolution.iml +/modules.xml +/contentModel.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.BoykoSolution/.idea/.name b/.idea/.idea.BoykoSolution/.idea/.name new file mode 100644 index 0000000..4264369 --- /dev/null +++ b/.idea/.idea.BoykoSolution/.idea/.name @@ -0,0 +1 @@ +BoykoSolution \ No newline at end of file diff --git a/.idea/.idea.BoykoSolution/.idea/encodings.xml b/.idea/.idea.BoykoSolution/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/.idea/.idea.BoykoSolution/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.BoykoSolution/.idea/indexLayout.xml b/.idea/.idea.BoykoSolution/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.BoykoSolution/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.BoykoSolution/.idea/vcs.xml b/.idea/.idea.BoykoSolution/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/.idea.BoykoSolution/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ProjectElectroTrans/CollectionGenericObjects/AbstractCompany.cs b/ProjectElectroTrans/CollectionGenericObjects/AbstractCompany.cs index 7f4fa39..68b0455 100644 --- a/ProjectElectroTrans/CollectionGenericObjects/AbstractCompany.cs +++ b/ProjectElectroTrans/CollectionGenericObjects/AbstractCompany.cs @@ -57,10 +57,9 @@ public abstract class AbstractCompany /// Компания /// Добавляемый объект /// - public static bool operator +(AbstractCompany company, DrawingTrans trans) + public static int operator +(AbstractCompany company, DrawingTrans trans) { - return company._collection?.Insert(trans) ?? false; - + return company._collection.Insert(trans); } /// @@ -69,9 +68,9 @@ public abstract class AbstractCompany /// Компания /// Номер удаляемого объекта /// - public static bool operator -(AbstractCompany company, int position) + public static DrawingTrans? operator -(AbstractCompany company, int position) { - return company._collection?.Remove(position) ?? false; + return company._collection?.Remove(position); } /// diff --git a/ProjectElectroTrans/CollectionGenericObjects/ICollectionGenericObjects.cs b/ProjectElectroTrans/CollectionGenericObjects/ICollectionGenericObjects.cs index d3902ba..f22a93e 100644 --- a/ProjectElectroTrans/CollectionGenericObjects/ICollectionGenericObjects.cs +++ b/ProjectElectroTrans/CollectionGenericObjects/ICollectionGenericObjects.cs @@ -1,4 +1,6 @@ -namespace ProjectElectroTrans.CollectionGenericObjects; +using ProjectElectroTrans.Drawnings; + +namespace ProjectElectroTrans.CollectionGenericObjects; /// /// Интерфейс описания действий для набора хранимых объектов @@ -22,7 +24,7 @@ public interface ICollectionGenericObjects /// /// Добавляемый объект /// true - вставка прошла удачно, false - вставка не удалась - bool Insert(T obj); + int Insert(T obj); /// /// Добавление объекта в коллекцию на конкретную позицию @@ -30,14 +32,14 @@ public interface ICollectionGenericObjects /// Добавляемый объект /// Позиция /// true - вставка прошла удачно, false - вставка не удалась - bool Insert(T obj, int position); + int Insert(T obj, int position); /// /// Удаление объекта из коллекции с конкретной позиции /// /// Позиция /// true - удаление прошло удачно, false - удаление не удалось - bool Remove(int position); + T? Remove(int position); /// /// Получение объекта по позиции diff --git a/ProjectElectroTrans/CollectionGenericObjects/MassiveGenericObjects.cs b/ProjectElectroTrans/CollectionGenericObjects/MassiveGenericObjects.cs index 6b36e27..2beb914 100644 --- a/ProjectElectroTrans/CollectionGenericObjects/MassiveGenericObjects.cs +++ b/ProjectElectroTrans/CollectionGenericObjects/MassiveGenericObjects.cs @@ -1,4 +1,5 @@ using System.Runtime.Remoting; +using ProjectElectroTrans.Drawnings; namespace ProjectElectroTrans.CollectionGenericObjects; @@ -6,89 +7,94 @@ namespace ProjectElectroTrans.CollectionGenericObjects; /// Параметризованный набор объектов /// /// Параметр: ограничение - ссылочный тип -public class MassiveGenericObjects :ICollectionGenericObjects - where T : class +public class MassiveGenericObjects : ICollectionGenericObjects + where T : class { - /// - /// Массив объектов, которые храним - /// - private T?[] _collection; + /// + /// Массив объектов, которые храним + /// + private T?[] _collection; - public int Count => _collection.Length; + public int Count => _collection.Length; - public int SetMaxCount - { - set - { - if (value > 0) - { - if (_collection.Length > 0) - { - Array.Resize(ref _collection, value); - } - else - { - _collection = new T?[value]; - } - } - } - } - - /// - /// Конструктор - /// - public MassiveGenericObjects() - { - _collection = Array.Empty(); - } - - public T? Get(int position) - { - if (position >= 0 && position < Count) - { - return _collection[position]; + public int SetMaxCount + { + set + { + if (value > 0) + { + if (_collection.Length > 0) + { + Array.Resize(ref _collection, value); + } + else + { + _collection = new T?[value]; + } + } } - return null; } - public bool Insert(T obj) - { - // вставка в свободное место набора - for (int i = 0; i< Count; i++) - { - if (_collection[i] == null) - { - _collection[i] = obj; - return true; - } - } - return false; - } + /// + /// Конструктор + /// + public MassiveGenericObjects() + { + _collection = Array.Empty(); + } - public bool Insert(T obj, int position) - { - // проверка позиции - if (position < 0 || position >= Count) - { - return false; - } - // проверка, что элемент массива по этой позиции пустой, если нет, то - // ищется свободное место после этой позиции и идет вставка туда - // если нет после, ищем до - if (_collection[position] != null) - { - bool pushed = false; - for (int index = position + 1; index < Count; index++) { - if (_collection[index] == null) - { - position = index; - pushed = true; - break; - } + public T? Get(int position) + { + if (position >= 0 && position < Count) + { + return _collection[position]; + } + + return null; + } + + public int Insert(T obj) + { + // вставка в свободное место набора + for (int i = 0; i < Count; i++) + { + if (_collection[i] == null) + { + _collection[i] = obj; + return i; } - if (!pushed) - { - for (int index = position- 1; index >= 0; index--) + } + + return -1; + } + + public int Insert(T obj, int position) + { + // проверка позиции + if (position < 0 || position >= Count) + { + return -1; + } + + // проверка, что элемент массива по этой позиции пустой, если нет, то + // ищется свободное место после этой позиции и идет вставка туда + // если нет после, ищем до + if (_collection[position] != null) + { + bool pushed = false; + for (int index = position + 1; index < Count; index++) + { + if (_collection[index] == null) + { + position = index; + pushed = true; + break; + } + } + + if (!pushed) + { + for (int index = position - 1; index >= 0; index--) { if (_collection[index] == null) { @@ -98,26 +104,30 @@ public class MassiveGenericObjects :ICollectionGenericObjects } } } - if (!pushed) - { - return false; - } - } + + if (!pushed) + { + return position; + } + } // вставка _collection[position] = obj; - return false; - } + return position; + } - public bool Remove(int position) - { + public T? Remove(int position) + { // проверка позиции if (position < 0 || position >= Count) { - return false; + return null; } - // удаление объекта из массива, присвоив элементу массива значение null - _collection[position] = null; - return true; - } + + if (_collection[position] == null) return null; + + T? temp = _collection[position]; + _collection[position] = null; + return temp; + } } \ No newline at end of file diff --git a/ProjectElectroTrans/FormTransCollection.Designer.cs b/ProjectElectroTrans/FormTransCollection.Designer.cs index b4131a4..d1adee7 100644 --- a/ProjectElectroTrans/FormTransCollection.Designer.cs +++ b/ProjectElectroTrans/FormTransCollection.Designer.cs @@ -111,7 +111,7 @@ namespace ProjectElectroTrans buttonAddSportCar.Name = "buttonAddSportCar"; buttonAddSportCar.Size = new Size(167, 40); buttonAddSportCar.TabIndex = 2; - buttonAddSportCar.Text = "Добавление спортивного поезда"; + buttonAddSportCar.Text = "Добавление электропоезда"; buttonAddSportCar.UseVisualStyleBackColor = true; buttonAddSportCar.Click += ButtonAddElectroTrans_Click; // diff --git a/ProjectElectroTrans/FormTransCollection.cs b/ProjectElectroTrans/FormTransCollection.cs index 692a929..e700e38 100644 --- a/ProjectElectroTrans/FormTransCollection.cs +++ b/ProjectElectroTrans/FormTransCollection.cs @@ -70,7 +70,7 @@ public partial class FormTransCollection : Form drawingTrans = new DrawingTrans(random.Next(100, 300), random.Next(1000, 3000), GetColor(random)); break; case nameof(DrawingElectroTrans): - // TODO вызов диалогового окна для выбора цвета + // вызов диалогового окна для выбора цвета drawingTrans = new DrawingElectroTrans(random.Next(100, 300), random.Next(1000, 3000), GetColor(random), GetColor(random), @@ -80,7 +80,7 @@ public partial class FormTransCollection : Form return; } - if (_company + drawingTrans) + if (_company + drawingTrans != -1) { MessageBox.Show("Объект добавлен"); pictureBox.Image = _company.Show(); @@ -126,7 +126,7 @@ public partial class FormTransCollection : Form } int pos = Convert.ToInt32(maskedTextBoxPosition.Text); - if (_company - pos) + if (_company - pos != null) { MessageBox.Show("Объект удален"); pictureBox.Image = _company.Show();