лаба7, готовая, но более уверенная

This commit is contained in:
a.puchkina 2023-12-20 02:08:29 +04:00
parent d177de49ad
commit 925cc7a006
5 changed files with 43 additions and 53 deletions

View File

@ -60,13 +60,13 @@ namespace AirplaneWithRadar.Generics
/// <param name="collect"></param>
/// <param name="obj"></param>
/// <returns></returns>
public static bool operator +(AirplanesGenericCollection<T, U> collect, T? obj)
public static int operator +(AirplanesGenericCollection<T, U> collect, T? obj)
{
if (obj == null)
{
return false;
return -1;
}
return (bool)collect?._collection.Insert(obj);
return collect._collection.Insert(obj);
}
/// <summary>
/// Перегрузка оператора вычитания
@ -78,11 +78,7 @@ namespace AirplaneWithRadar.Generics
pos)
{
T? obj = collect._collection[pos];
if (obj != null)
{
collect._collection.Remove(pos);
}
return false;
return collect._collection.Remove(pos);
}
/// <summary>
/// Получение объекта IMoveableObject

View File

@ -63,10 +63,9 @@ namespace AirplaneWithRadar.Generics
/// <param name="name">Название набора</param>
public void AddSet(string name)
{
if (_airplaneStorages.ContainsKey(name))
return;
_airplaneStorages[name] = new AirplanesGenericCollection<DrawningAirplane,
DrawningObjectAirplane>(_pictureWidth, _pictureHeight);
if (!_airplaneStorages.ContainsKey(name))
_airplaneStorages.Add(name,new AirplanesGenericCollection<DrawningAirplane,
DrawningObjectAirplane>(_pictureWidth, _pictureHeight));
}
/// <summary>
/// Удаление набора
@ -171,7 +170,7 @@ namespace AirplaneWithRadar.Generics
DrawningAirplane? airplane = elem?.CreateDrawningAirplane(_separatorForObject, _pictureWidth, _pictureHeight);
if (airplane != null)
{
if (!(collection + airplane))
if (collection + airplane == -1)
{
throw new InvalidOperationException("Ошибка добавления в коллекцию");
}

View File

@ -25,11 +25,11 @@ namespace AirplaneWithRadar.DrawningObjects
/// <summary>
/// Ширина окна
/// </summary>
private int _pictureWidth;
public int _pictureWidth;
/// <summary>
/// Высота окна
/// </summary>
private int _pictureHeight;
public int _pictureHeight;
/// <summary>
/// /// Левая координата прорисовки самолета
/// </summary>

View File

@ -169,34 +169,44 @@ namespace AirplaneWithRadar
_logger.LogWarning("Коллекция не выбрана");
return;
}
var obj = _storage[listBoxStorages.SelectedItem.ToString() ??
string.Empty];
if (obj == null)
var formAirplaneConfig = new FormAirplaneConfig();
formAirplaneConfig.AddEvent(AddAirplane);
formAirplaneConfig.Show();
}
private void AddAirplane(DrawningAirplane airplane)
{
airplane._pictureWidth = pictureBoxCollection.Image.Width;
airplane._pictureHeight = pictureBoxCollection.Image.Height;
if (listBoxStorages.SelectedIndex == -1)
{
return;
}
var formAirplaneConfig = new FormAirplaneConfig();
formAirplaneConfig.Show();
Action<DrawningAirplane>? airplaneDelegate = new((m) =>
var obj = _storage[listBoxStorages.SelectedItem.ToString() ?? string.Empty];
if (obj == null)
{
bool isAddSuccessful = (obj + m);
if (isAddSuccessful)
_logger.LogWarning($"Не удалось добавить объект: набор пуст");
return;
}
try
{
if (obj + airplane != -1)
{
MessageBox.Show("Объект добавлен");
m.ChangePictureBoxSize(pictureBoxCollection.Width, pictureBoxCollection.Height);
pictureBoxCollection.Image = obj.ShowAirplanes();
_logger.LogInformation($"Самолет добавлен в набор {listBoxStorages.SelectedItem.ToString()}");
_logger.LogInformation($"Объект добавлен {airplane}");
}
else
{
MessageBox.Show("Набор переполнен! Не удалось добавить объект");
_logger.LogWarning($"Самолет не добавлен в набор {listBoxStorages.SelectedItem.ToString()}");
MessageBox.Show("Не удалось добавить объект");
}
});
formAirplaneConfig.AddEvent(airplaneDelegate);
}
catch (ApplicationException ex)
{
MessageBox.Show(ex.Message);
_logger.LogWarning($"Не удалось добавить объект: {ex.Message}");
}
}
/// <summary>
/// Удаление объекта из набора
/// </summary>

View File

@ -40,14 +40,9 @@ namespace AirplaneWithRadar.Generics
/// </summary>
/// <param name="airplane">Добавляемый самолет</param>
/// <returns></returns>
public bool Insert(T airplane)
public int Insert(T airplane)
{
if (_places.Count == _maxCount)
{
return false;
}
Insert(airplane, 0);
return true;
return Insert(airplane, 0);
}
/// <summary>
/// Добавление объекта в набор на конкретную позицию
@ -55,18 +50,14 @@ namespace AirplaneWithRadar.Generics
/// <param name="airplane">Добавляемый самолет</param>
/// <param name="position">Позиция</param>
/// <returns></returns>
public bool Insert(T airplane, int position)
public int Insert(T airplane, int position)
{
if (position < 0 || position > Count)
throw new AirplaneNotFoundException(position);
if (Count >= _maxCount)
{
throw new StorageOverflowException(_maxCount);
}
if (position < 0 || position >= _maxCount)
{
throw new StorageOverflowException("Невозможно добавить");
}
_places.Insert(position, airplane);
return true;
return position;
}
/// <summary>
/// Удаление объекта из набора с конкретной позиции
@ -75,14 +66,8 @@ namespace AirplaneWithRadar.Generics
/// <returns></returns>
public bool Remove(int position)
{
if (position >= Count || position < 0 || position > _maxCount)
{
throw new AirplaneNotFoundException("Невалидная операция");
}
if (_places[position] == null)
{
if (position >= Count || position < 0)
throw new AirplaneNotFoundException(position);
}
_places.RemoveAt(position);
return true;
}