diff --git a/Project_Teoria_sozdania/Project_Teoria_sozdania.sln b/Project_Teoria_sozdania/Project_Teoria_sozdania.sln
new file mode 100644
index 0000000..8fff296
--- /dev/null
+++ b/Project_Teoria_sozdania/Project_Teoria_sozdania.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.7.34221.43
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Project_Teoria_sozdania", "Project_Teoria_sozdania\Project_Teoria_sozdania.csproj", "{8F0E264D-2AD1-4B46-BDCD-2EDDCF1FD0D9}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8F0E264D-2AD1-4B46-BDCD-2EDDCF1FD0D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8F0E264D-2AD1-4B46-BDCD-2EDDCF1FD0D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8F0E264D-2AD1-4B46-BDCD-2EDDCF1FD0D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8F0E264D-2AD1-4B46-BDCD-2EDDCF1FD0D9}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {18192B79-F78E-451E-B244-BCAF80B6C223}
+ EndGlobalSection
+EndGlobal
diff --git a/Project_Teoria_sozdania/Project_Teoria_sozdania/App.xaml b/Project_Teoria_sozdania/Project_Teoria_sozdania/App.xaml
new file mode 100644
index 0000000..872cbe3
--- /dev/null
+++ b/Project_Teoria_sozdania/Project_Teoria_sozdania/App.xaml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/Project_Teoria_sozdania/Project_Teoria_sozdania/App.xaml.cs b/Project_Teoria_sozdania/Project_Teoria_sozdania/App.xaml.cs
new file mode 100644
index 0000000..ce8ffdc
--- /dev/null
+++ b/Project_Teoria_sozdania/Project_Teoria_sozdania/App.xaml.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace Project_Teoria_sozdania
+{
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ public partial class App : Application
+ {
+ }
+}
diff --git a/Project_Teoria_sozdania/Project_Teoria_sozdania/AssemblyInfo.cs b/Project_Teoria_sozdania/Project_Teoria_sozdania/AssemblyInfo.cs
new file mode 100644
index 0000000..8b5504e
--- /dev/null
+++ b/Project_Teoria_sozdania/Project_Teoria_sozdania/AssemblyInfo.cs
@@ -0,0 +1,10 @@
+using System.Windows;
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
diff --git a/Project_Teoria_sozdania/Project_Teoria_sozdania/MainWindow.xaml b/Project_Teoria_sozdania/Project_Teoria_sozdania/MainWindow.xaml
new file mode 100644
index 0000000..56eefd6
--- /dev/null
+++ b/Project_Teoria_sozdania/Project_Teoria_sozdania/MainWindow.xaml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/Project_Teoria_sozdania/Project_Teoria_sozdania/MainWindow.xaml.cs b/Project_Teoria_sozdania/Project_Teoria_sozdania/MainWindow.xaml.cs
new file mode 100644
index 0000000..027f47a
--- /dev/null
+++ b/Project_Teoria_sozdania/Project_Teoria_sozdania/MainWindow.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Project_Teoria_sozdania
+{
+ ///
+ /// Interaction logic for MainWindow.xaml
+ ///
+ public partial class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Project_Teoria_sozdania/Project_Teoria_sozdania/Project_Teoria_sozdania.csproj b/Project_Teoria_sozdania/Project_Teoria_sozdania/Project_Teoria_sozdania.csproj
new file mode 100644
index 0000000..4106cb0
--- /dev/null
+++ b/Project_Teoria_sozdania/Project_Teoria_sozdania/Project_Teoria_sozdania.csproj
@@ -0,0 +1,10 @@
+
+
+
+ WinExe
+ net6.0-windows
+ enable
+ true
+
+
+
diff --git a/Tank/Tank/CollectionGenericObjects/AbstractCompany.cs b/Tank/Tank/CollectionGenericObjects/AbstractCompany.cs
index 4b8d090..f5491f9 100644
--- a/Tank/Tank/CollectionGenericObjects/AbstractCompany.cs
+++ b/Tank/Tank/CollectionGenericObjects/AbstractCompany.cs
@@ -1,5 +1,5 @@
using Tank.Drowings;
-namespace Tank.CollectionGenericObjects;
+using Tank.CollectionGenericObjects;
///
/// Абстракция компании, хранящий коллекцию автомобилей
@@ -7,14 +7,14 @@ namespace Tank.CollectionGenericObjects;
public abstract class AbstractCompany
{
///
- /// Размер места (ширина)
- ///
- protected readonly int _placeSizeWidth = 250;
+ /// Размер места (ширина)
+ ///
+ protected readonly int _placeSizeWidth = 295;
///
/// Размер места (высота)
///
- protected readonly int _placeSizeHeight = 150;
+ protected readonly int _placeSizeHeight = 160;
///
/// Ширина окна
@@ -67,9 +67,9 @@ public abstract class AbstractCompany
/// Компания
/// Номер удаляемого объекта
///
- public static DrawningMachine operator -(AbstractCompany company, int position)
+ public static DrawningMachine? operator -(AbstractCompany company, int position)
{
- return company._collection?.Remove(position);
+ return company._collection?.Remove(position) ?? null;
}
///
diff --git a/Tank/Tank/CollectionGenericObjects/ICollectionGenericObjects.cs b/Tank/Tank/CollectionGenericObjects/ICollectionGenericObjects.cs
index 9c6944d..cb0a747 100644
--- a/Tank/Tank/CollectionGenericObjects/ICollectionGenericObjects.cs
+++ b/Tank/Tank/CollectionGenericObjects/ICollectionGenericObjects.cs
@@ -14,15 +14,16 @@ where T : class
/// Количество объектов в коллекции
///
int Count { get; }
- ///
- /// Установка максимального количества элементов
- ///
+ ///
+ /// Установка макс. кол-ва элементов
int MaxCount { get; set; }
+ ///
///
/// Добавление объекта в коллекцию
///
/// Добавляемый объект
- /// другое число - вставка прошла удачно, -1 - вставка не удалась
+ /// true - вставка прошла удачно, false - вставка не удалась
+
int Insert(T obj);
///
/// Добавление объекта в коллекцию на конкретную позицию
diff --git a/Tank/Tank/CollectionGenericObjects/ListGenericObjects.cs b/Tank/Tank/CollectionGenericObjects/ListGenericObjects.cs
index 668c2f7..4f8a19f 100644
--- a/Tank/Tank/CollectionGenericObjects/ListGenericObjects.cs
+++ b/Tank/Tank/CollectionGenericObjects/ListGenericObjects.cs
@@ -7,25 +7,40 @@ using Tank.Exceptions;
namespace Tank.CollectionGenericObjects;
-public class ListGenericObjects : ICollectionGenericObjects where T : class
+///
+/// Параметризованный набор объектов
+///
+/// Параметр: ограничение - ссылочный тип
+public class ListGenericObjects : ICollectionGenericObjects
+ where T : class
{
+ ///
+ /// Список объектов, которые храним
+ ///
private readonly List _collection;
+
+ ///
+ /// Максимально допустимое число объектов в списке
+ ///
private int _maxCount;
public int Count => _collection.Count;
- public CollectionType GetCollectionType => CollectionType.List;
-
public int MaxCount
{
get
{
- return _maxCount;
+ return _collection.Count;
}
set
{
- if (value > 0) _maxCount = value;
+ if (value > 0)
+ {
+ _maxCount = value - 1;
+ }
}
}
+ public CollectionType GetCollectionType => CollectionType.List;
+
///
/// Конструктор
///
@@ -36,31 +51,51 @@ public class ListGenericObjects : ICollectionGenericObjects where T : clas
public T? Get(int position)
{
- if (position >= Count || position < 0) throw new PositionOutOfCollectionException(position);
+ //TODO проверка позиции
+ if (position >= Count || position < 0)
+ {
+ throw new PositionOutOfCollectionException(position);
+ }
return _collection[position];
}
public int Insert(T obj)
{
- if (Count == _maxCount) throw new CollectionOverflowException(Count);
+ // TODO проверка, что не превышено максимальное количество элементов
+ if (Count == _maxCount)
+ {
+ throw new CollectionOverflowException(Count);
+ }
+ //TODO вставка в конец набора
_collection.Add(obj);
- return Count;
+ return _collection.Count;
}
public int Insert(T obj, int position)
{
- if (position < 0 || position >= Count)
- throw new PositionOutOfCollectionException(position);
-
+ //TODO проверка что не превышено максимальное кол-во элементов
if (Count == _maxCount)
+ {
throw new CollectionOverflowException(Count);
+ }
+ // TODO проверка позиции
+ if (position >= Count || position < 0)
+ {
+ throw new PositionOutOfCollectionException(position);
+ }
+ // TODO вставка по позиции
_collection.Insert(position, obj);
return position;
}
public T? Remove(int position)
{
- if (position >= Count || position < 0) throw new PositionOutOfCollectionException(position);
+ // TODO проверка позиции
+ if (position >= Count || position < 0)
+ {
+ throw new PositionOutOfCollectionException(position);
+ }
+ // TODO удаление объекта из списка
T? obj = _collection[position];
_collection.RemoveAt(position);
return obj;
@@ -68,9 +103,9 @@ public class ListGenericObjects : ICollectionGenericObjects where T : clas
public IEnumerable GetItems()
{
- for (int i = 0; i < _collection.Count; i++)
+ for (int i = 0; i < _collection.Count; ++i)
{
yield return _collection[i];
}
}
-}
+}
\ No newline at end of file
diff --git a/Tank/Tank/CollectionGenericObjects/MassiveGenericObjects.cs b/Tank/Tank/CollectionGenericObjects/MassiveGenericObjects.cs
index d30ab92..ffe26ca 100644
--- a/Tank/Tank/CollectionGenericObjects/MassiveGenericObjects.cs
+++ b/Tank/Tank/CollectionGenericObjects/MassiveGenericObjects.cs
@@ -10,6 +10,9 @@ namespace Tank.CollectionGenericObjects;
public class MassiveGenericObjects : ICollectionGenericObjects
where T : class
{
+ ///
+ /// Массив объектов, которые храним
+ ///
private T?[] _collection;
public int Count => _collection.Length;
public int MaxCount
@@ -24,11 +27,11 @@ public class MassiveGenericObjects : ICollectionGenericObjects
{
if (_collection.Length > 0)
{
- Array.Resize(ref _collection, value - 9);
+ Array.Resize(ref _collection, value);
}
else
{
- _collection = new T?[value - 9];
+ _collection = new T?[value - 1];
}
}
}
@@ -46,33 +49,26 @@ public class MassiveGenericObjects : ICollectionGenericObjects
public T Get(int position)
{
- if (position < 0 || position >= _collection.Length)
+ if (position < 0 || position > _collection.Length)
{
- throw new PositionOutOfCollectionException();
+ throw new PositionOutOfCollectionException(position);
}
- if (_collection[position] == null)
+ if (position >= Count && _collection[position] == null)
{
- throw new ObjectNotFoundException(position); //////////////
+ throw new ObjectNotFoundException(position); /////////////////////////////////////////////////////////////
}
return _collection[position];
}
public int Insert(T obj)
{
- for (int i = 0; i < _collection.Length; i++)
- {
- if (_collection[i] == null)
- {
- _collection[i] = obj;
- return i;
- }
- }
+ return Insert(obj, 0);
throw new CollectionOverflowException(Count);
}
public int Insert(T obj, int position)
{
- if (position < 0 || position >= _collection.Length)
+ if (position > _collection.Length || position < 0)
{
throw new PositionOutOfCollectionException(position);
}
@@ -82,42 +78,44 @@ public class MassiveGenericObjects : ICollectionGenericObjects
_collection[position] = obj;
return position;
}
- else
+
+ for (int tmp = position + 1; tmp < _collection.Length; tmp++)
{
- for (int i = position; i < _collection.Length; ++i) //ищем свободное место справа
+ if (_collection[tmp] == null)
{
- if (_collection[i] == null)
- {
- _collection[i] = obj;
- return i;
- }
- }
- for (int i = 0; i < position; ++i) // иначе слева
- {
- if (_collection[i] == null)
- {
- _collection[i] = obj;
- return i;
- }
+ _collection[tmp] = obj;
+ return tmp;
}
}
+
+ for (int tmp = position - 1; tmp >= 0; tmp--)
+ {
+ if (_collection[tmp] == null)
+ {
+ _collection[tmp] = obj;
+ return tmp;
+ }
+ }
+
throw new CollectionOverflowException(Count);
}
public T? Remove(int position)
{
- if (position < 0 || position >= _collection.Length)
+ // TODO проверка позиции
+ if (position < 0 || position > _collection.Length)
+ {
throw new PositionOutOfCollectionException(position);
- T? obj = _collection[position];
+ }
+
if (_collection[position] == null)
{
throw new ObjectNotFoundException(position);
}
- if (_collection[position] != null)
- {
- _collection[position] = null;
- }
- return obj;
+ T? tmp = _collection[position];
+ _collection[position] = null;
+ // TODO удаление объекта из массива, присвоив элементу массива значение null
+ return tmp;
}
public IEnumerable GetItems()
diff --git a/Tank/Tank/CollectionGenericObjects/StorageCollection.cs b/Tank/Tank/CollectionGenericObjects/StorageCollection.cs
index 22ae500..c7c2695 100644
--- a/Tank/Tank/CollectionGenericObjects/StorageCollection.cs
+++ b/Tank/Tank/CollectionGenericObjects/StorageCollection.cs
@@ -12,209 +12,214 @@ namespace Tank.CollectionGenericObjects;
///
public class StorageCollection
where T : DrawningMachine
-{
- ///
- /// Словарь (хранилище) с коллекциями
- ///
- readonly Dictionary> _storages;
-
- ///
- /// Возвращение списка названий коллекций
- ///
- public List Keys => _storages.Keys.ToList();
-
- ///
- /// Конструктор
- ///
- public StorageCollection()
{
- _storages = new Dictionary>();
+ ///
+ /// Словарь (хранилище) с коллекциями
+ ///
+ readonly Dictionary> _storages;
+
+ ///
+ /// Возвращение списка названий коллекций
+ ///
+ public List Keys => _storages.Keys.ToList();
+
+ ///
+ /// Ключевое слово, с которого должен начинаться файл
+ ///
+ private readonly string _collectionKey = "CollectionStorage";
+
+ ///
+ /// Разделитель для записи ключа и значения элемента словаря
+ ///
+ private readonly string _separatorForKeyValue = "|";
+
+ ///
+ /// Разделитель для записей коллекции данных в файл
+ ///
+ private readonly string _separatorItems = ";";
+
+ ///
+ /// Конструктор
+ ///
+ public StorageCollection()
+ {
+ _storages = new Dictionary>();
+ }
+ ///
+ /// Добавление коллекции в хранилище
+ ///
+ /// Название коллекции
+ /// тип коллекции
+ public void AddCollection(string name, CollectionType collectionType)
+ {
+ // TODO проверка, что name не пустой и нет в словаре записи с таким ключом
+ // TODO Прописать логику для добавления
+ if (name == null || _storages.ContainsKey(name))
+ return;
+ switch (collectionType)
+ {
+ case CollectionType.None:
+ return;
+ case CollectionType.Massive:
+ _storages[name] = new MassiveGenericObjects();
+ return;
+ case CollectionType.List:
+ _storages[name] = new ListGenericObjects();
+ return;
+ }
}
- ///
- /// Добавление коллекции в хранилище
- ///
- /// Название коллекции
- /// тип коллекции
- public void AddCollection(string name, CollectionType collectionType)
- {
- if (string.IsNullOrEmpty(name) || _storages.ContainsKey(name))
- {
- return;
- }
- switch (collectionType)
- {
- case CollectionType.Massive:
- _storages[name] = new MassiveGenericObjects();
- break;
- case CollectionType.List:
- _storages[name] = new ListGenericObjects();
- break;
- default:
- return;
- }
- }
-
- ///
- /// Удаление коллекции
- ///
- /// Название коллекции
- public void DelCollection(string name)
- {
- if (_storages.ContainsKey(name))
- {
- _storages.Remove(name);
- }
-
- }
-
- ///
- /// Доступ к коллекции
- ///
- /// Название коллекции
- ///
- public ICollectionGenericObjects? this[string name]
- {
- get
+ ///
+ /// Удаление коллекции
+ ///
+ /// Название коллекции
+ public void DelCollection(string name)
{
+ // TODO Прописать логику для удаления коллекции
if (_storages.ContainsKey(name))
+ _storages.Remove(name);
+ }
+
+ ///
+ /// Доступ к коллекции
+ ///
+ /// Название коллекции
+ ///
+ public ICollectionGenericObjects? this[string name]
+ {
+ get
{
+ // TODO Продумать логику получения объекта
+ if (name == null || !_storages.ContainsKey(name))
+ return null;
return _storages[name];
}
- return null;
}
- }
- ///
- /// Ключевое слово, с которого должен начинаться файл
- ///
- private readonly string _collectionKey = "CollectionsStorage";
- ///
- /// Разделитель для записи ключа и значения элемента словаря
- ///
- private readonly string _separatorForKeyValue = "|";
- ///
- /// Разделитель для записей коллекции данных в файл
- ///
- private readonly string _separatorItems = ";";
- ///
- /// Сохранение информации по самолетам в хранилище в файл
- ///
- /// Путь и имя файла
- /// true - сохранение прошло успешно, false - ошибка при сохранении данных
- public void SaveData(string filename)
- {
- if (_storages.Count == 0)
+
+ ///
+ /// Сохранение информации по самолетам в хранилище в файл
+ ///
+ /// Путь и имя файла
+ /// true - сохранение прошло успешно, false - ошибка при сохранении данных
+ public void SaveData(string filename)
{
- throw new Exception("В хранилище отсутствуют коллекции для сохранения");
- }
- if (File.Exists(filename))
- {
- File.Delete(filename);
- }
- StringBuilder sb = new();
- sb.Append(_collectionKey);
- foreach (KeyValuePair> value in _storages)
- {
- sb.Append(Environment.NewLine);
- // не сохраняем пустые коллекции
- if (value.Value.Count == 0)
+ if (_storages.Count == 0)
{
- continue;
+ throw new InvalidDataException("В хранилище отсутствуют коллекции для сохранения");
}
- sb.Append(value.Key);
- sb.Append(_separatorForKeyValue);
- sb.Append(value.Value.GetCollectionType);
- sb.Append(_separatorForKeyValue);
- sb.Append(value.Value.MaxCount);
- sb.Append(_separatorForKeyValue);
- foreach (T? item in value.Value.GetItems())
+ if (File.Exists(filename))
{
- string data = item?.GetDataForSave() ?? string.Empty;
- if (string.IsNullOrEmpty(data))
+ File.Delete(filename);
+ }
+ using FileStream fs = new(filename, FileMode.Create);
+ using StreamWriter sw = new StreamWriter(fs);
+ sw.WriteLine(_collectionKey);
+ foreach (KeyValuePair> value in _storages)
+ {
+ sw.Write(Environment.NewLine);
+ // не сохраняем пустые коллекции
+ if (value.Value.Count == 0)
{
continue;
}
- sb.Append(data);
- sb.Append(_separatorItems);
+ sw.Write(value.Key);
+ sw.Write(_separatorForKeyValue);
+ sw.Write(value.Value.GetCollectionType);
+ sw.Write(_separatorForKeyValue);
+ sw.Write(value.Value.MaxCount);
+ sw.Write(_separatorForKeyValue);
+
+ foreach (T? item in value.Value.GetItems())
+ {
+ string data = item?.GetDataForSave() ?? string.Empty;
+ if (string.IsNullOrEmpty(data))
+ {
+ continue;
+ }
+
+ sw.Write(data);
+ sw.Write(_separatorItems);
+ }
}
}
- using FileStream fs = new(filename, FileMode.Create);
- byte[] info = new UTF8Encoding(true).GetBytes(sb.ToString());
- fs.Write(info, 0, info.Length);
- }
-
- ///
- /// Загрузка информации по самолетам в хранилище из файла
- ///
- /// Путь и имя файла
- /// true - загрузка прошла успешно, false - ошибка при загрузке данных
- public void LoadData(string filename)
- {
- if (!File.Exists(filename))
+ ///
+ /// Загрузка информации по самолетам в хранилище из файла
+ ///
+ /// Путь и имя файла
+ /// true - загрузка прошла успешно, false - ошибка при загрузке данных
+ public void LoadData(string filename)
{
- throw new Exception("Файл не существует");
- }
-
- using (StreamReader sr = new StreamReader(filename))
- {
- string? str;
- str = sr.ReadLine();
- if (str == null || str.Length == 0)
- throw new Exception("В файле нет данных");
- if (str != _collectionKey.ToString())
- throw new Exception("В файле неверные данные");
- _storages.Clear();
- while ((str = sr.ReadLine()) != null)
+ if (!File.Exists(filename))
{
- string[] record = str.Split(_separatorForKeyValue);
+ throw new FileNotFoundException("Файл не существует");
+ }
+
+ using (StreamReader reader = new(filename))
+ {
+ string line = reader.ReadLine();
+ if (line == null || line.Length == 0)
+ {
+ throw new InvalidDataException("В файле нет данных");
+ }
+ if (!line.Equals(_collectionKey))
+ {
+ throw new InvalidOperationException("В файле неверные данные");
+ }
+ _storages.Clear();
+ while ((line = reader.ReadLine()) != null)
+ {
+ string[] record = line.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries);
if (record.Length != 4)
{
continue;
}
+
CollectionType collectionType = (CollectionType)Enum.Parse(typeof(CollectionType), record[1]);
ICollectionGenericObjects? collection = StorageCollection.CreateCollection(collectionType);
if (collection == null)
{
- throw new Exception("Не удалось создать коллекцию");
+ throw new InvalidOperationException("Не удалось создать коллекцию");
}
- collection.MaxCount = Convert.ToInt32(record[2]) + 9;
+ collection.MaxCount = Convert.ToInt32(record[2]);
string[] set = record[3].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries);
foreach (string elem in set)
{
- if (elem?.CreateDrawningMachine() is T machine)
+ if (elem?.CreateDrawningMachine() is T locomotive)
{
try
{
- if (collection.Insert(machine) == -1)
- throw new Exception("Объект не удалось добавить в коллекцию: " + record[3]);
+ if (collection.Insert(locomotive) == -1)
+ {
+ throw new InvalidOperationException("Объект не удалось добавить в коллекцию: " + record[3]);
+ }
}
catch (CollectionOverflowException ex)
{
- throw new Exception("Коллекция переполнена", ex);
+ throw new ArgumentOutOfRangeException("Коллекция переполнена", ex);
}
}
+
}
_storages.Add(record[0], collection);
}
}
}
- ///
- /// Создание коллекции по типу
- ///
- ///
- ///
- private static ICollectionGenericObjects?
- CreateCollection(CollectionType collectionType)
- {
- return collectionType switch
+ ///
+ /// Создание коллекции по типу
+ ///
+ ///
+ ///
+ private static ICollectionGenericObjects? CreateCollection(CollectionType collectionType)
{
- CollectionType.Massive => new MassiveGenericObjects(),
- CollectionType.List => new ListGenericObjects(),
- _ => null,
- };
+ return collectionType switch
+ {
+ CollectionType.Massive => new MassiveGenericObjects(),
+ CollectionType.List => new ListGenericObjects(),
+ _ => null
+ };
+ }
}
-}
diff --git a/Tank/Tank/CollectionGenericObjects/TankSharingService.cs b/Tank/Tank/CollectionGenericObjects/TankSharingService.cs
index 5ade154..55a9921 100644
--- a/Tank/Tank/CollectionGenericObjects/TankSharingService.cs
+++ b/Tank/Tank/CollectionGenericObjects/TankSharingService.cs
@@ -10,18 +10,16 @@ public class TankSharingService : AbstractCompany
protected override void DrawBackgound(Graphics g)
{
- Pen pen = new(Color.Black, 3);
- int posX = 0;
- for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++)
+ int width = _pictureWidth / _placeSizeWidth;
+ int height = _pictureHeight / _placeSizeHeight;
+ Pen pen = new(Color.Black, 7);
+ for (int i = 0; i < width + 1; i++)
{
- int posY = 0;
- g.DrawLine(pen, posX, posY, posX, posY + _placeSizeHeight * (_pictureHeight / _placeSizeHeight));
- for (int j = 0; j <= _pictureHeight / _placeSizeHeight; j++)
- {
- g.DrawLine(pen, posX, posY, posX + _placeSizeWidth - 30, posY);
- posY += _placeSizeHeight;
+ for (int j = 0; j < height + 1; ++j)
+ {
+ g.DrawLine(pen, i * _placeSizeWidth + 5, j * _placeSizeHeight, i * _placeSizeWidth + 5 + _placeSizeWidth - 45, j * _placeSizeHeight);
+ g.DrawLine(pen, i * _placeSizeWidth + 5, j * _placeSizeHeight, i * _placeSizeWidth + 5, j * _placeSizeHeight - _placeSizeHeight);
}
- posX += _placeSizeWidth;
}
}
@@ -36,7 +34,7 @@ public class TankSharingService : AbstractCompany
_collection?.Get(i)?.SetPictureSize(_pictureWidth, _pictureHeight);
_collection?.Get(i)?.SetPosition(posX * _placeSizeWidth + 5, posY * _placeSizeHeight + 5);
}
- if (posX < _pictureWidth/_placeSizeWidth - 1)
+ if (posX < _pictureWidth / _placeSizeWidth - 1)
{
posX++;
}
@@ -45,7 +43,7 @@ public class TankSharingService : AbstractCompany
posY++;
posX = 0;
}
- if (posY > _pictureHeight/_placeSizeHeight) { return; }
+ if (posY > _pictureHeight / _placeSizeHeight) { return; }
}
}
-}
+}
\ No newline at end of file
diff --git a/Tank/Tank/Exceptions/CollectionOverflowException.cs b/Tank/Tank/Exceptions/CollectionOverflowException.cs
index b3da426..2a3088a 100644
--- a/Tank/Tank/Exceptions/CollectionOverflowException.cs
+++ b/Tank/Tank/Exceptions/CollectionOverflowException.cs
@@ -11,7 +11,7 @@ namespace Tank.Exceptions;
/// Класс, описывающий ошибку переполнения коллекции
///
[Serializable]
-public class CollectionOverflowException : ApplicationException
+internal class CollectionOverflowException : ApplicationException
{
public CollectionOverflowException(int count) : base("В коллекции превышено допустимое количество: " + count) { }
public CollectionOverflowException() : base() { }
diff --git a/Tank/Tank/Exceptions/ObjectNotFoundException.cs b/Tank/Tank/Exceptions/ObjectNotFoundException.cs
index d1c674b..6e0d1c9 100644
--- a/Tank/Tank/Exceptions/ObjectNotFoundException.cs
+++ b/Tank/Tank/Exceptions/ObjectNotFoundException.cs
@@ -11,9 +11,9 @@ namespace Tank.Exceptions;
/// Класс, описывающий ошибку, что по указанной позиции нет элемента
///
[Serializable]
-public class ObjectNotFoundException : ApplicationException
+internal class ObjectNotFoundException : ApplicationException
{
- public ObjectNotFoundException(int i) : base("Не найден объект по позиции " + i){ }
+ public ObjectNotFoundException(int i) : base("Не найден объект по позиции " + i) { }
public ObjectNotFoundException() : base() { }
public ObjectNotFoundException(string message) : base(message) { }
public ObjectNotFoundException(string message, Exception exception) : base(message, exception) { }
diff --git a/Tank/Tank/FormTankCollection.Designer.cs b/Tank/Tank/FormTankCollection.Designer.cs
index 3f51ce2..c2d226d 100644
--- a/Tank/Tank/FormTankCollection.Designer.cs
+++ b/Tank/Tank/FormTankCollection.Designer.cs
@@ -66,7 +66,7 @@
groupBoxTools.Controls.Add(panelStorage);
groupBoxTools.Controls.Add(comboBoxSelectorCompany);
groupBoxTools.Dock = DockStyle.Right;
- groupBoxTools.Location = new Point(1174, 40);
+ groupBoxTools.Location = new Point(1182, 40);
groupBoxTools.Name = "groupBoxTools";
groupBoxTools.Size = new Size(371, 990);
groupBoxTools.TabIndex = 0;
@@ -86,7 +86,6 @@
panelCompanyTools.Name = "panelCompanyTools";
panelCompanyTools.Size = new Size(365, 310);
panelCompanyTools.TabIndex = 9;
-
//
// buttonAddTank
//
@@ -250,7 +249,7 @@
pictureBox.Dock = DockStyle.Fill;
pictureBox.Location = new Point(0, 40);
pictureBox.Name = "pictureBox";
- pictureBox.Size = new Size(1174, 990);
+ pictureBox.Size = new Size(1182, 990);
pictureBox.TabIndex = 1;
pictureBox.TabStop = false;
//
@@ -260,7 +259,7 @@
menuStrip1.Items.AddRange(new ToolStripItem[] { файлToolStripMenuItem });
menuStrip1.Location = new Point(0, 0);
menuStrip1.Name = "menuStrip1";
- menuStrip1.Size = new Size(1545, 40);
+ menuStrip1.Size = new Size(1553, 40);
menuStrip1.TabIndex = 2;
menuStrip1.Text = "menuStrip1";
//
@@ -299,7 +298,7 @@
//
AutoScaleDimensions = new SizeF(13F, 32F);
AutoScaleMode = AutoScaleMode.Font;
- ClientSize = new Size(1545, 1030);
+ ClientSize = new Size(1553, 1030);
Controls.Add(pictureBox);
Controls.Add(groupBoxTools);
Controls.Add(menuStrip1);
diff --git a/Tank/Tank/FormTankCollection.resx b/Tank/Tank/FormTankCollection.resx
index 67e4ed1..8e95e66 100644
--- a/Tank/Tank/FormTankCollection.resx
+++ b/Tank/Tank/FormTankCollection.resx
@@ -1,7 +1,7 @@