This commit is contained in:
Maxim Boyko 2024-03-14 09:42:38 +04:00
parent fe90aefffa
commit be8ee033b2
10 changed files with 145 additions and 102 deletions

View File

@ -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

View File

@ -0,0 +1 @@
BoykoSolution

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -57,10 +57,9 @@ public abstract class AbstractCompany
/// <param name="company">Компания</param> /// <param name="company">Компания</param>
/// <param name="car">Добавляемый объект</param> /// <param name="car">Добавляемый объект</param>
/// <returns></returns> /// <returns></returns>
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);
} }
/// <summary> /// <summary>
@ -69,9 +68,9 @@ public abstract class AbstractCompany
/// <param name="company">Компания</param> /// <param name="company">Компания</param>
/// <param name="position">Номер удаляемого объекта</param> /// <param name="position">Номер удаляемого объекта</param>
/// <returns></returns> /// <returns></returns>
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);
} }
/// <summary> /// <summary>

View File

@ -1,4 +1,6 @@
namespace ProjectElectroTrans.CollectionGenericObjects; using ProjectElectroTrans.Drawnings;
namespace ProjectElectroTrans.CollectionGenericObjects;
/// <summary> /// <summary>
/// Интерфейс описания действий для набора хранимых объектов /// Интерфейс описания действий для набора хранимых объектов
@ -22,7 +24,7 @@ public interface ICollectionGenericObjects<T>
/// </summary> /// </summary>
/// <param name="obj">Добавляемый объект</param> /// <param name="obj">Добавляемый объект</param>
/// <returns>true - вставка прошла удачно, false - вставка не удалась</returns> /// <returns>true - вставка прошла удачно, false - вставка не удалась</returns>
bool Insert(T obj); int Insert(T obj);
/// <summary> /// <summary>
/// Добавление объекта в коллекцию на конкретную позицию /// Добавление объекта в коллекцию на конкретную позицию
@ -30,14 +32,14 @@ public interface ICollectionGenericObjects<T>
/// <param name="obj">Добавляемый объект</param> /// <param name="obj">Добавляемый объект</param>
/// <param name="position">Позиция</param> /// <param name="position">Позиция</param>
/// <returns>true - вставка прошла удачно, false - вставка не удалась</returns> /// <returns>true - вставка прошла удачно, false - вставка не удалась</returns>
bool Insert(T obj, int position); int Insert(T obj, int position);
/// <summary> /// <summary>
/// Удаление объекта из коллекции с конкретной позиции /// Удаление объекта из коллекции с конкретной позиции
/// </summary> /// </summary>
/// <param name="position">Позиция</param> /// <param name="position">Позиция</param>
/// <returns>true - удаление прошло удачно, false - удаление не удалось</returns> /// <returns>true - удаление прошло удачно, false - удаление не удалось</returns>
bool Remove(int position); T? Remove(int position);
/// <summary> /// <summary>
/// Получение объекта по позиции /// Получение объекта по позиции

View File

@ -1,4 +1,5 @@
using System.Runtime.Remoting; using System.Runtime.Remoting;
using ProjectElectroTrans.Drawnings;
namespace ProjectElectroTrans.CollectionGenericObjects; namespace ProjectElectroTrans.CollectionGenericObjects;
@ -6,7 +7,7 @@ namespace ProjectElectroTrans.CollectionGenericObjects;
/// Параметризованный набор объектов /// Параметризованный набор объектов
/// </summary> /// </summary>
/// <typeparam name="T">Параметр: ограничение - ссылочный тип</typeparam> /// <typeparam name="T">Параметр: ограничение - ссылочный тип</typeparam>
public class MassiveGenericObjects<T> :ICollectionGenericObjects<T> public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
where T : class where T : class
{ {
/// <summary> /// <summary>
@ -48,37 +49,41 @@ public class MassiveGenericObjects<T> :ICollectionGenericObjects<T>
{ {
return _collection[position]; return _collection[position];
} }
return null; return null;
} }
public bool Insert(T obj) public int Insert(T obj)
{ {
// вставка в свободное место набора // вставка в свободное место набора
for (int i = 0; i< Count; i++) for (int i = 0; i < Count; i++)
{ {
if (_collection[i] == null) if (_collection[i] == null)
{ {
_collection[i] = obj; _collection[i] = obj;
return true; return i;
} }
} }
return false;
}
public bool Insert(T obj, int position) return -1;
}
public int Insert(T obj, int position)
{ {
// проверка позиции // проверка позиции
if (position < 0 || position >= Count) if (position < 0 || position >= Count)
{ {
return false; return -1;
} }
// проверка, что элемент массива по этой позиции пустой, если нет, то // проверка, что элемент массива по этой позиции пустой, если нет, то
// ищется свободное место после этой позиции и идет вставка туда // ищется свободное место после этой позиции и идет вставка туда
// если нет после, ищем до // если нет после, ищем до
if (_collection[position] != null) if (_collection[position] != null)
{ {
bool pushed = false; bool pushed = false;
for (int index = position + 1; index < Count; index++) { for (int index = position + 1; index < Count; index++)
{
if (_collection[index] == null) if (_collection[index] == null)
{ {
position = index; position = index;
@ -86,9 +91,10 @@ public class MassiveGenericObjects<T> :ICollectionGenericObjects<T>
break; break;
} }
} }
if (!pushed) if (!pushed)
{ {
for (int index = position- 1; index >= 0; index--) for (int index = position - 1; index >= 0; index--)
{ {
if (_collection[index] == null) if (_collection[index] == null)
{ {
@ -98,26 +104,30 @@ public class MassiveGenericObjects<T> :ICollectionGenericObjects<T>
} }
} }
} }
if (!pushed) if (!pushed)
{ {
return false; return position;
} }
} }
// вставка // вставка
_collection[position] = obj; _collection[position] = obj;
return false; return position;
} }
public bool Remove(int position) public T? Remove(int position)
{ {
// проверка позиции // проверка позиции
if (position < 0 || position >= Count) if (position < 0 || position >= Count)
{ {
return false; return null;
} }
// удаление объекта из массива, присвоив элементу массива значение null
if (_collection[position] == null) return null;
T? temp = _collection[position];
_collection[position] = null; _collection[position] = null;
return true; return temp;
} }
} }

View File

@ -111,7 +111,7 @@ namespace ProjectElectroTrans
buttonAddSportCar.Name = "buttonAddSportCar"; buttonAddSportCar.Name = "buttonAddSportCar";
buttonAddSportCar.Size = new Size(167, 40); buttonAddSportCar.Size = new Size(167, 40);
buttonAddSportCar.TabIndex = 2; buttonAddSportCar.TabIndex = 2;
buttonAddSportCar.Text = "Добавление спортивного поезда"; buttonAddSportCar.Text = "Добавление электропоезда";
buttonAddSportCar.UseVisualStyleBackColor = true; buttonAddSportCar.UseVisualStyleBackColor = true;
buttonAddSportCar.Click += ButtonAddElectroTrans_Click; buttonAddSportCar.Click += ButtonAddElectroTrans_Click;
// //

View File

@ -70,7 +70,7 @@ public partial class FormTransCollection : Form
drawingTrans = new DrawingTrans(random.Next(100, 300), random.Next(1000, 3000), GetColor(random)); drawingTrans = new DrawingTrans(random.Next(100, 300), random.Next(1000, 3000), GetColor(random));
break; break;
case nameof(DrawingElectroTrans): case nameof(DrawingElectroTrans):
// TODO вызов диалогового окна для выбора цвета // вызов диалогового окна для выбора цвета
drawingTrans = new DrawingElectroTrans(random.Next(100, 300), random.Next(1000, 3000), drawingTrans = new DrawingElectroTrans(random.Next(100, 300), random.Next(1000, 3000),
GetColor(random), GetColor(random),
GetColor(random), GetColor(random),
@ -80,7 +80,7 @@ public partial class FormTransCollection : Form
return; return;
} }
if (_company + drawingTrans) if (_company + drawingTrans != -1)
{ {
MessageBox.Show("Объект добавлен"); MessageBox.Show("Объект добавлен");
pictureBox.Image = _company.Show(); pictureBox.Image = _company.Show();
@ -126,7 +126,7 @@ public partial class FormTransCollection : Form
} }
int pos = Convert.ToInt32(maskedTextBoxPosition.Text); int pos = Convert.ToInt32(maskedTextBoxPosition.Text);
if (_company - pos) if (_company - pos != null)
{ {
MessageBox.Show("Объект удален"); MessageBox.Show("Объект удален");
pictureBox.Image = _company.Show(); pictureBox.Image = _company.Show();