From 158ee348497b89403b9842fbbe0a8fb44e23f111 Mon Sep 17 00:00:00 2001 From: elizaveta Date: Tue, 8 Oct 2024 12:32:16 +0400 Subject: [PATCH] hkujyhtgfd --- .../Project_Teoria_sozdania.sln | 25 ++ .../Project_Teoria_sozdania/App.xaml | 9 + .../Project_Teoria_sozdania/App.xaml.cs | 17 + .../Project_Teoria_sozdania/AssemblyInfo.cs | 10 + .../Project_Teoria_sozdania/MainWindow.xaml | 12 + .../MainWindow.xaml.cs | 28 ++ .../Project_Teoria_sozdania.csproj | 10 + .../AbstractCompany.cs | 14 +- .../ICollectionGenericObjects.cs | 9 +- .../ListGenericObjects.cs | 63 +++- .../MassiveGenericObjects.cs | 72 ++-- .../StorageCollection.cs | 315 +++++++++--------- .../TankSharingService.cs | 24 +- .../Exceptions/CollectionOverflowException.cs | 2 +- .../Exceptions/ObjectNotFoundException.cs | 4 +- Tank/Tank/FormTankCollection.Designer.cs | 9 +- Tank/Tank/FormTankCollection.resx | 4 +- 17 files changed, 387 insertions(+), 240 deletions(-) create mode 100644 Project_Teoria_sozdania/Project_Teoria_sozdania.sln create mode 100644 Project_Teoria_sozdania/Project_Teoria_sozdania/App.xaml create mode 100644 Project_Teoria_sozdania/Project_Teoria_sozdania/App.xaml.cs create mode 100644 Project_Teoria_sozdania/Project_Teoria_sozdania/AssemblyInfo.cs create mode 100644 Project_Teoria_sozdania/Project_Teoria_sozdania/MainWindow.xaml create mode 100644 Project_Teoria_sozdania/Project_Teoria_sozdania/MainWindow.xaml.cs create mode 100644 Project_Teoria_sozdania/Project_Teoria_sozdania/Project_Teoria_sozdania.csproj 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 @@