Правки в перегрузке операторов +, -

This commit is contained in:
sheymuh 2024-03-20 16:27:23 +04:00
parent e1c1cd865e
commit c42289f922
5 changed files with 23 additions and 22 deletions

View File

@ -57,9 +57,9 @@ public abstract class AbstractCompany
/// <param name="company">Компания</param> /// <param name="company">Компания</param>
/// <param name="warship">Добавляемый объект</param> /// <param name="warship">Добавляемый объект</param>
/// <returns></returns> /// <returns></returns>
public static bool operator +(AbstractCompany company, DrawningWarship warship) public static int operator +(AbstractCompany company, DrawningWarship warship)
{ {
return company._collection?.Insert(warship) ?? false; return company._collection.Insert(warship);
} }
/// <summary> /// <summary>
@ -68,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 DrawningWarship? operator -(AbstractCompany company, int position)
{ {
return company._collection?.Remove(position) ?? false; return company._collection?.Remove(position);
} }
/// <summary> /// <summary>

View File

@ -3,9 +3,9 @@ using ProjectAircraftCarrier_.Drawnings;
namespace ProjectAircraftCarrier_.CollectionGenericObjects; namespace ProjectAircraftCarrier_.CollectionGenericObjects;
public class WarshipSharingService : AbstractCompany public class Docks : AbstractCompany
{ {
public WarshipSharingService(int picWidth, int picHeight, ICollectionGenericObjects<DrawningWarship> collection) : base(picWidth, picHeight, collection) public Docks(int picWidth, int picHeight, ICollectionGenericObjects<DrawningWarship> collection) : base(picWidth, picHeight, collection)
{ {
} }

View File

@ -22,7 +22,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 +30,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

@ -34,7 +34,7 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
return _collection[position]; return _collection[position];
} }
public bool Insert(T obj) public int Insert(T obj)
{ {
// TODO вставка в свободное место набора // TODO вставка в свободное место набора
for (int i = 0; i < Count; i++) for (int i = 0; i < Count; i++)
@ -42,13 +42,13 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
if (_collection[i] == null) if (_collection[i] == null)
{ {
_collection[i] = obj; _collection[i] = obj;
return true; return i;
} }
} }
return false; return -1;
} }
public bool Insert(T obj, int position) public int Insert(T obj, int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO проверка, что элемент массива по этой позиции пустой, если нет, то // TODO проверка, что элемент массива по этой позиции пустой, если нет, то
@ -57,13 +57,13 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
// TODO вставка // TODO вставка
if (position < 0 || position > Count) if (position < 0 || position > Count)
{ {
return false; return -1;
} }
if (_collection[position] == null) if (_collection[position] == null)
{ {
_collection[position] = obj; _collection[position] = obj;
return true; return position;
} }
for (int i = position + 1; i < Count; i++) for (int i = position + 1; i < Count; i++)
@ -71,7 +71,7 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
if (_collection[i] == null) if (_collection[i] == null)
{ {
_collection[i] = obj; _collection[i] = obj;
return true; return position;
} }
} }
@ -80,24 +80,25 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
if (_collection[i] == null) if (_collection[i] == null)
{ {
_collection[i] = obj; _collection[i] = obj;
return true; return position;
} }
} }
return false; return -1;
} }
public bool Remove(int position) public T? Remove(int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO удаление объекта из массива, присвоив элементу массива значение null // TODO удаление объекта из массива, присвоив элементу массива значение null
if (position < 0 || position > Count || _collection[position] == null) if (position < 0 || position > Count || _collection[position] == null)
{ {
return false; return null;
} }
T? obj = _collection[position];
_collection[position] = null; _collection[position] = null;
return true; return obj;
} }
} }

View File

@ -31,7 +31,7 @@ public partial class FormWarshipCollection : Form
switch (comboBoxSelectorCompany.Text) switch (comboBoxSelectorCompany.Text)
{ {
case "Хранилище": case "Хранилище":
_company = new WarshipSharingService(pictureBox.Width, pictureBox.Height, new MassiveGenericObjects<DrawningWarship>()); _company = new Docks(pictureBox.Width, pictureBox.Height, new MassiveGenericObjects<DrawningWarship>());
break; break;
} }
} }