diff --git a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/AbstractCompany.cs b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/AbstractCompany.cs
index 7752bc8..94802bc 100644
--- a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/AbstractCompany.cs
+++ b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/AbstractCompany.cs
@@ -32,8 +32,7 @@ public abstract class AbstractCompany
///
/// Вычисление максимального количества элементов, который можно разместить в окне
///
- private int GetMaxCount => _pictureWidth * _pictureHeight /
- (_placeSizeWidth * _placeSizeHeight);
+ private int GetMaxCount => _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight);
///
/// Конструктор
///
@@ -52,11 +51,11 @@ public abstract class AbstractCompany
/// Перегрузка оператора сложения для класса
///
/// Компания
- /// Добавляемый объект
+ /// Добавляемый объект
///
- public static bool operator +(AbstractCompany company, DrawningTruck truck)
+ public static int operator +(AbstractCompany company, DrawningTruck truck)
{
- return company._collection?.Insert(truck) ?? false;
+ return company._collection?.Insert(truck)??-1;
}
///
@@ -65,9 +64,9 @@ public abstract class AbstractCompany
/// Компания
/// Номер удаляемого объекта
///
- public static bool operator -(AbstractCompany company, int position)
+ public static DrawningTruck? operator -(AbstractCompany company, int position)
{
- return company._collection?.Remove(position) ?? false;
+ return company._collection?.Remove(position);
}
///
@@ -88,7 +87,7 @@ public abstract class AbstractCompany
{
Bitmap bitmap = new(_pictureWidth, _pictureHeight);
Graphics graphics = Graphics.FromImage(bitmap);
- DrawBackgound(graphics);
+ DrawBackground(graphics);
SetObjectsPosition();
for (int i = 0; i < (_collection?.Count ?? 0); ++i)
{
@@ -102,7 +101,7 @@ public abstract class AbstractCompany
/// Вывод заднего фона
///
///
- protected abstract void DrawBackgound(Graphics g);
+ protected abstract void DrawBackground(Graphics g);
///
/// Расстановка объектов
diff --git a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/Autopark.cs b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/Autopark.cs
index 6ca095a..26a4d27 100644
--- a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/Autopark.cs
+++ b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/Autopark.cs
@@ -13,7 +13,7 @@ public class Autopark : AbstractCompany
{
}
- protected override void DrawBackgound(Graphics g)
+ protected override void DrawBackground(Graphics g)
{
Pen pen = new(Color.Black, 2);
Pen widerPen = new(Color.Black, 5);
diff --git a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/ICollectionGenericObject.cs b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/ICollectionGenericObject.cs
index 59b57ef..9cc73dc 100644
--- a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/ICollectionGenericObject.cs
+++ b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/ICollectionGenericObject.cs
@@ -25,7 +25,7 @@ public interface ICollectionGenericObject
///
/// Добавляемый объект
/// true - вставка прошла удачно, false - вставка не удалась
- bool Insert(T obj);
+ int Insert(T obj);
///
/// Добавление объекта на конкретную позиуцию
@@ -33,14 +33,14 @@ public interface ICollectionGenericObject
/// Добавляемый объектПозиция
/// 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/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/MassiveGenericObjects.cs b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/MassiveGenericObjects.cs
index d353df4..a50c650 100644
--- a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/MassiveGenericObjects.cs
+++ b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObject/MassiveGenericObjects.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection.Metadata.Ecma335;
using System.Text;
using System.Threading.Tasks;
@@ -14,19 +15,11 @@ public class MassiveGenericObjects : ICollectionGenericObject
/// Массив объектов, которые храним
///
private T?[] _collection;
- 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 int Count => _collection.Length;
+
+ public int SetMaxCount { set { if (value > 0) { _collection = new T?[value]; } } }
+
///
/// Конструктор
///
@@ -38,27 +31,78 @@ public class MassiveGenericObjects : ICollectionGenericObject
public T? Get(int position)
{
// TODO проверка позиции
- return _collection[position];
+ if (position >= 0 && position < Count)
+ {
+ return _collection[position];
+ }
+
+ return null;
}
- public bool Insert(T obj)
+ public int Insert(T obj)
{
// TODO вставка в свободное место набора
- return false;
+ for (int i = 0; i < _collection.Length; i++)
+ {
+ if (_collection[i] != null)
+ {
+ _collection[i] = obj;
+ return i;
+ }
+ }
+ return -1;
}
- public bool Insert(T obj, int position)
+ public int Insert(T obj, int position)
{
// TODO проверка позиции
// TODO проверка, что элемент массива по этой позиции пустой, если нет, то
- // ищется свободное место после этой позиции и идет вставка туда, если нет после, ищем до
+ // ищется свободное место после этой позиции и идет вставка туда
+ // если нет после, ищем до
// TODO вставка
- return false;
+ if (position < 0 || position > Count)
+ {
+ return -1;
+ }
+
+ if (_collection[position] == null)
+ {
+ _collection[position] = obj;
+ return position;
+ }
+
+ for (int i = position + 1; i < Count; i++)
+ {
+ if (_collection[i] == null)
+ {
+ _collection[i] = obj;
+ return position;
+ }
+ }
+
+ for (int i = position - 1; i >= 0; i--)
+ {
+ if (_collection[i] == null)
+ {
+ _collection[i] = obj;
+ return position;
+ }
+ }
+
+ return -1;
}
- public bool Remove(int position)
+ public T? Remove(int position)
{
- // TODO проверка позиции
- // TODO удаление объекта из массива, присвоив элементу массива значение null
- return true;
+ // проверка позиции
+ if (position < 0 || position >= Count)
+ {
+ return null;
+ }
+
+ if (_collection[position] == null) return null;
+
+ T? temp = _collection[position];
+ _collection[position] = null;
+ return temp;
}
}
\ No newline at end of file
diff --git a/ProjectDumpTruck/ProjectDumpTruck/FormTruckCollection.cs b/ProjectDumpTruck/ProjectDumpTruck/FormTruckCollection.cs
index dcd73aa..a4d6706 100644
--- a/ProjectDumpTruck/ProjectDumpTruck/FormTruckCollection.cs
+++ b/ProjectDumpTruck/ProjectDumpTruck/FormTruckCollection.cs
@@ -64,16 +64,14 @@ public partial class FormTruckCollection : Form
case nameof(DrawningDumpTruck):
drawningTruck = new DrawningDumpTruck(random.Next(100, 300), random.Next(1000, 3000),
- GetColor(random),
- Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),
- Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
+ GetColor(random),GetColor(random), Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
break;
default:
return;
}
- if (_company + drawningTruck)
+ if (_company + drawningTruck!=-1)
{
MessageBox.Show("Объект добавлен");
pictureBox.Image = _company.Show();
@@ -109,7 +107,7 @@ public partial class FormTruckCollection : Form
if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return;
int pos = Convert.ToInt32(maskedTextBoxPosition.Text);
- if (_company - pos)
+ if (_company - pos!=null)
{
MessageBox.Show("Объект удален");