Лабараторная работа #3 2

This commit is contained in:
Dmitriev.An 2024-03-04 10:06:30 +04:00
parent 82f06ed48b
commit 0c3397fcee
5 changed files with 24 additions and 25 deletions

View File

@ -23,7 +23,7 @@ public abstract class AbstractCompany
/// <summary> /// <summary>
/// Коллекция судов /// Коллекция судов
/// </summary> /// </summary>
protected ICollectionGenericObjects<DrawningShip>? _collection = null; public ICollectionGenericObjects<DrawningShip>? _collection = null;
/// <summary> /// <summary>
/// Вычисление максимального количества элементов, который можно разместить в окне /// Вычисление максимального количества элементов, который можно разместить в окне
/// </summary> /// </summary>
@ -47,9 +47,9 @@ public abstract class AbstractCompany
/// <param name="company">Компания</param> /// <param name="company">Компания</param>
/// <param name="ship">Добавляемый объект</param> /// <param name="ship">Добавляемый объект</param>
/// <returns></returns> /// <returns></returns>
public static bool operator +(AbstractCompany company, DrawningShip ship) public static int operator +(AbstractCompany company, DrawningShip ship)
{ {
return company._collection?.Insert(ship) ?? false; return company._collection.Insert(ship);
} }
/// <summary> /// <summary>
/// Перегрузка оператора удаления для класса /// Перегрузка оператора удаления для класса
@ -57,9 +57,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 DrawningShip operator -(AbstractCompany company, int position)
{ {
return company._collection?.Remove(position) ?? false; return company._collection?.Remove(position);
} }
/// <summary> /// <summary>
/// Получение случайного объекта из коллекции /// Получение случайного объекта из коллекции

View File

@ -16,20 +16,20 @@ 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>
/// Добавление объекта в коллекцию на конкретную позицию /// Добавление объекта в коллекцию на конкретную позицию
/// </summary> /// </summary>
/// <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>
/// Получение объекта по позиции /// Получение объекта по позиции
/// </summary> /// </summary>

View File

@ -22,7 +22,7 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
if (position >= _collection.Length || position < 0) return null; if (position >= _collection.Length || position < 0) return null;
return _collection[position]; return _collection[position];
} }
public bool Insert(T obj) public int Insert(T obj)
{ {
// TODO вставка в свободное место набора // TODO вставка в свободное место набора
int index = 0; int index = 0;
@ -31,13 +31,13 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
if (_collection[index] == null) if (_collection[index] == null)
{ {
_collection[index] = obj; _collection[index] = obj;
return true; return index;
} }
++index; ++index;
} }
return false; return -1;
} }
public bool Insert(T obj, int position) public int Insert(T obj, int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO проверка, что элемент массива по этой позиции пустой, если нет, то // TODO проверка, что элемент массива по этой позиции пустой, если нет, то
@ -45,10 +45,10 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
// если нет после, ищем до // если нет после, ищем до
// TODO вставка // TODO вставка
if (position >= _collection.Length || position < 0) if (position >= _collection.Length || position < 0)
return false; return -1;
if (_collection[position] == null) { if (_collection[position] == null) {
_collection[position] = obj; _collection[position] = obj;
return true; return position;
} }
int index = position + 1; int index = position + 1;
while (index < _collection.Length) while (index < _collection.Length)
@ -56,7 +56,7 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
if (_collection[index] == null) if (_collection[index] == null)
{ {
_collection[index] = obj; _collection[index] = obj;
return true; return index;
} }
++index; ++index;
} }
@ -66,19 +66,20 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
if (_collection[index] == null) if (_collection[index] == null)
{ {
_collection[index] = obj; _collection[index] = obj;
return true; return index;
} }
--index; --index;
} }
return false; return -1;
} }
public bool Remove(int position) public T Remove(int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO удаление объекта из массива, присвоив элементу массива значение null // TODO удаление объекта из массива, присвоив элементу массива значение null
if (position >= _collection.Length || position < 0) if (position >= _collection.Length || position < 0)
return false; return null;
T obj = _collection[position];
_collection[position] = null; _collection[position] = null;
return true; return obj;
} }
} }

View File

@ -19,8 +19,7 @@ public class ShipPortService : AbstractCompany
{ {
for (int j = 0; j < height + 1; ++j) for (int j = 0; j < height + 1; ++j)
{ {
g.DrawLine(pen, i * _placeSizeWidth, j * _placeSizeHeight, g.DrawLine(pen, i * _placeSizeWidth, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth - 5, j * _placeSizeHeight);
i * _placeSizeWidth + _placeSizeWidth - 5, j * _placeSizeHeight);
} }
} }
} }
@ -40,7 +39,6 @@ public class ShipPortService : AbstractCompany
_collection.Get(i).SetPictureSize(_pictureWidth, _pictureHeight); _collection.Get(i).SetPictureSize(_pictureWidth, _pictureHeight);
_collection.Get(i).SetPosition(_placeSizeWidth * curWidth + 20, curHeight * _placeSizeHeight + 4); _collection.Get(i).SetPosition(_placeSizeWidth * curWidth + 20, curHeight * _placeSizeHeight + 4);
} }
if (curWidth > 0) if (curWidth > 0)
curWidth--; curWidth--;
else else

View File

@ -42,7 +42,7 @@ public partial class FormShipCollection : Form
default: default:
return; return;
} }
if (_company + drawningShip) if (_company + drawningShip != -1)
{ {
MessageBox.Show("Объект добавлен"); MessageBox.Show("Объект добавлен");
pictureBox.Image = _company.Show(); pictureBox.Image = _company.Show();
@ -84,7 +84,7 @@ public partial class FormShipCollection : Form
return; return;
} }
int pos = Convert.ToInt32(maskedTextBox.Text); int pos = Convert.ToInt32(maskedTextBox.Text);
if (_company - pos) if (_company - pos != null)
{ {
MessageBox.Show("Объект удален"); MessageBox.Show("Объект удален");
pictureBox.Image = _company.Show(); pictureBox.Image = _company.Show();