слияние

This commit is contained in:
Evgeny Egov 2024-01-06 21:21:45 +04:00
commit e4ffccbd5b
Failed to extract signature
14 changed files with 99 additions and 42 deletions

View File

@ -2,8 +2,17 @@
namespace ProjectSportCar.CollectionGenericObjects; namespace ProjectSportCar.CollectionGenericObjects;
/// <summary>
/// Реализация абстрактной компании - каршеринг
/// </summary>
public class CarSharingService : AbstractCompany public class CarSharingService : AbstractCompany
{ {
/// <summary>
/// Конструктор
/// </summary>
/// <param name="picWidth"></param>
/// <param name="picHeight"></param>
/// <param name="collection"></param>
public CarSharingService(int picWidth, int picHeight, ICollectionGenericObjects<DrawningCar> collection) : base(picWidth, picHeight, collection) public CarSharingService(int picWidth, int picHeight, ICollectionGenericObjects<DrawningCar> collection) : base(picWidth, picHeight, collection)
{ {
} }

View File

@ -1,6 +1,4 @@
using ProjectSportCar.Drawnings; namespace ProjectSportCar.CollectionGenericObjects;
namespace ProjectSportCar.CollectionGenericObjects;
/// <summary> /// <summary>
/// Параметризованный набор объектов /// Параметризованный набор объектов
@ -21,7 +19,20 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
public int Count => _collection.Count; public int Count => _collection.Count;
public int SetMaxCount { set { if (value > 0) { _maxCount = value; } } } public int MaxCount
{
get => _maxCount;
set
{
if (value > 0)
{
_maxCount = value;
}
}
}
public CollectionType GetCollectionType => throw new NotImplementedException();
public int MaxCount { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public int MaxCount { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
@ -38,15 +49,14 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
public T? Get(int position) public T? Get(int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO выборс ошибки, если выход за границы массива // TODO выброс ошибки, если выход за границы массива
return _collection[position]; return _collection[position];
} }
public bool Insert(T obj, IEqualityComparer<DrawningCar?>? comparer = null) public bool Insert(T obj, IEqualityComparer<DrawningCar?>? comparer = null)
{ {
// TODO проверка, что не превышено максимальное количество элементов // TODO проверка, что не превышено максимальное количество элементов
// TODO выборс ошибки, если переполнение // TODO выброс ошибки, если переполнение
// TODO выборс ошибки, если такой объект есть в коллекции
// TODO вставка в конец набора // TODO вставка в конец набора
return true; return true;
} }
@ -54,7 +64,7 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
public bool Insert(T obj, int position, IEqualityComparer<DrawningCar?>? comparer = null) public bool Insert(T obj, int position, IEqualityComparer<DrawningCar?>? comparer = null)
{ {
// TODO проверка, что не превышено максимальное количество элементов // TODO проверка, что не превышено максимальное количество элементов
// TODO выборс ошибки, если такой объект есть в коллекции // TODO выброс ошибки, если переполнение
// TODO проверка позиции // TODO проверка позиции
// TODO вставка по позиции // TODO вставка по позиции
return true; return true;
@ -63,7 +73,7 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
public bool Remove(int position) public bool Remove(int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO выборс ошибки, если выход за границы массива // TODO выброс ошибки, если выход за границы массива
// TODO удаление объекта из списка // TODO удаление объекта из списка
return true; return true;
} }

View File

@ -23,15 +23,21 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
{ {
return _collection.Length; return _collection.Length;
} }
set set
{ {
if (value > 0) if (value > 0)
{
if (_collection.Length > 0)
{
Array.Resize(ref _collection, value);
}
else
{ {
_collection = new T?[value]; _collection = new T?[value];
} }
} }
} }
}
public CollectionType GetCollectionType => CollectionType.Massive; public CollectionType GetCollectionType => CollectionType.Massive;
@ -46,16 +52,15 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
public T? Get(int position) public T? Get(int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO выборс ошибки, если выход за границы массива // TODO выброс ошибки, если выход за границы массива
// TODO выборс ошибки, если объект пустой // TODO выброс ошибки, если объект пустой
return _collection[position]; return _collection[position];
} }
public bool Insert(T obj, IEqualityComparer<DrawningCar?>? comparer = null) public bool Insert(T obj, IEqualityComparer<DrawningCar?>? comparer = null)
{ {
// TODO вставка в свободное место набора // TODO вставка в свободное место набора
// TODO выборс ошибки, если переполнение // TODO выброс ошибки, если переполнение
// TODO выборс ошибки, если такой объект есть в коллекции
return false; return false;
} }
@ -63,11 +68,11 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
{ {
// TODO выборс ошибки, если такой объект есть в коллекции // TODO выборс ошибки, если такой объект есть в коллекции
// TODO проверка позиции // TODO проверка позиции
// TODO выборс ошибки, если выход за границы массива // TODO выброс ошибки, если выход за границы массива
// TODO проверка, что элемент массива по этой позиции пустой, если нет, то // TODO проверка, что элемент массива по этой позиции пустой, если нет, то
// ищется свободное место после этой позиции и идет вставка туда // ищется свободное место после этой позиции и идет вставка туда
// если нет после, ищем до // если нет после, ищем до
// TODO выборс ошибки, если переполнение // TODO выброс ошибки, если переполнение
// TODO вставка // TODO вставка
return false; return false;
} }
@ -75,9 +80,9 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
public bool Remove(int position) public bool Remove(int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO выборс ошибки, если выход за границы массива // TODO выброс ошибки, если выход за границы массива
// TODO выборс ошибки, если объект пустой // TODO выброс ошибки, если объект пустой
// TODO удаление объекта из массива, присовив элементу массива значение null // TODO удаление объекта из массива, присвоив элементу массива значение null
return true; return true;
} }

View File

@ -174,7 +174,7 @@ public class StorageCollection<T>
CollectionInfo? collectionInfo = CollectionInfo.GetCollectionInfo(record[0]) ?? CollectionInfo? collectionInfo = CollectionInfo.GetCollectionInfo(record[0]) ??
throw new Exception("Не удалось определить информацию коллекции:" + record[0]); throw new Exception("Не удалось определить информацию коллекции:" + record[0]);
ICollectionGenericObjects<T>? collection = StorageCollection<T>.CreateCollection(collectionInfo.CollectionType) ?? ICollectionGenericObjects<T>? collection = StorageCollection<T>.CreateCollection(collectionInfo.CollectionType) ??
throw new Exception("Не удалось создать коллекцию"); throw new Exception("Не удалось определить тип коллекции:" + record[1]);
collection.MaxCount = Convert.ToInt32(record[1]); collection.MaxCount = Convert.ToInt32(record[1]);
string[] set = record[2].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries); string[] set = record[2].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries);

View File

@ -84,6 +84,15 @@ public class DrawningCar
EntityCar = new EntityCar(speed, weight, bodyColor); EntityCar = new EntityCar(speed, weight, bodyColor);
} }
/// <summary>
/// Конструктор
/// </summary>
/// <param name="car">Класс-сущность</param>
public DrawningCar(EntityCar car) : this()
{
// TODO продумать логику
}
/// <summary> /// <summary>
/// Конструктор для наследников /// Конструктор для наследников
/// </summary> /// </summary>

View File

@ -22,6 +22,15 @@ public class DrawningSportCar : DrawningCar
EntityCar = new EntitySportCar(speed, weight, bodyColor, additionalColor, bodyKit, wing, sportLine); EntityCar = new EntitySportCar(speed, weight, bodyColor, additionalColor, bodyKit, wing, sportLine);
} }
/// <summary>
/// Конструктор
/// </summary>
/// <param name="car">Класс-сущность</param>
public DrawningSportCar(EntityCar car) : base(110, 60)
{
// TODO продумать логику
}
public override void DrawTransport(Graphics g) public override void DrawTransport(Graphics g)
{ {
if (EntityCar == null || EntityCar is not EntitySportCar sportCar || !_startPosX.HasValue || !_startPosY.HasValue) if (EntityCar == null || EntityCar is not EntitySportCar sportCar || !_startPosX.HasValue || !_startPosY.HasValue)

View File

@ -38,6 +38,8 @@ public class EntityCar
BodyColor = bodyColor; BodyColor = bodyColor;
} }
//TODO Прописать метод
/// <summary> /// <summary>
/// Получение строк со значениями свойств объекта класса-сущности /// Получение строк со значениями свойств объекта класса-сущности
/// </summary> /// </summary>

View File

@ -26,7 +26,7 @@ public class EntitySportCar : EntityCar
public bool SportLine { get; private set; } public bool SportLine { get; private set; }
/// <summary> /// <summary>
/// Инициализация полей объекта-класса спортивного автомобиля /// Конструктор сущности
/// </summary> /// </summary>
/// <param name="speed">Скорость</param> /// <param name="speed">Скорость</param>
/// <param name="weight">Вес автомобиля</param> /// <param name="weight">Вес автомобиля</param>
@ -35,11 +35,24 @@ public class EntitySportCar : EntityCar
/// <param name="bodyKit">Признак наличия обвеса</param> /// <param name="bodyKit">Признак наличия обвеса</param>
/// <param name="wing">Признак наличия антикрыла</param> /// <param name="wing">Признак наличия антикрыла</param>
/// <param name="sportLine">Признак наличия гоночной полосы</param> /// <param name="sportLine">Признак наличия гоночной полосы</param>
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool wing, bool sportLine) public EntitySportCar(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool wing, bool sportLine) : base(0, 0, Color.Black)
{ {
AdditionalColor = additionalColor; AdditionalColor = additionalColor;
BodyKit = bodyKit; BodyKit = bodyKit;
Wing = wing; Wing = wing;
SportLine = sportLine; SportLine = sportLine;
} }
//TODO Прописать метод
/// <summary>
/// Создание объекта из массива строк
/// </summary>
/// <param name="strs"></param>
/// <returns></returns>
public static EntitySportCar? CreateEntitySportCar(string[] strs)
{
// TODO продумать логику
return null;
}
} }

View File

@ -8,7 +8,7 @@ namespace ProjectSportCar.Exceptions;
[Serializable] [Serializable]
internal class CollectionOverflowException : ApplicationException internal class CollectionOverflowException : ApplicationException
{ {
public CollectionOverflowException(int count) : base("В коллекции превышено допустимое количество: count" + count) { } public CollectionOverflowException(int count) : base("В коллекции превышено допустимое количество: " + count) { }
public CollectionOverflowException() : base() { } public CollectionOverflowException() : base() { }

View File

@ -86,7 +86,7 @@
panelCompanyTools.Controls.Add(buttonGoToCheck); panelCompanyTools.Controls.Add(buttonGoToCheck);
panelCompanyTools.Dock = DockStyle.Bottom; panelCompanyTools.Dock = DockStyle.Bottom;
panelCompanyTools.Enabled = false; panelCompanyTools.Enabled = false;
panelCompanyTools.Location = new Point(3, 349); panelCompanyTools.Location = new Point(3, 336);
panelCompanyTools.Name = "panelCompanyTools"; panelCompanyTools.Name = "panelCompanyTools";
panelCompanyTools.Size = new Size(173, 299); panelCompanyTools.Size = new Size(173, 299);
panelCompanyTools.TabIndex = 9; panelCompanyTools.TabIndex = 9;
@ -253,7 +253,7 @@
pictureBox.Dock = DockStyle.Fill; pictureBox.Dock = DockStyle.Fill;
pictureBox.Location = new Point(0, 24); pictureBox.Location = new Point(0, 24);
pictureBox.Name = "pictureBox"; pictureBox.Name = "pictureBox";
pictureBox.Size = new Size(783, 651); pictureBox.Size = new Size(783, 592);
pictureBox.TabIndex = 1; pictureBox.TabIndex = 1;
pictureBox.TabStop = false; pictureBox.TabStop = false;
// //
@ -323,7 +323,7 @@
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(962, 675); ClientSize = new Size(962, 616);
Controls.Add(pictureBox); Controls.Add(pictureBox);
Controls.Add(groupBoxTools); Controls.Add(groupBoxTools);
Controls.Add(menuStrip); Controls.Add(menuStrip);

View File

@ -60,7 +60,7 @@ public partial class FormCarCollection : Form
/// Добавление автомобиля в коллекцию /// Добавление автомобиля в коллекцию
/// </summary> /// </summary>
/// <param name="car"></param> /// <param name="car"></param>
private void SetCar(DrawningCar car) private void SetCar(DrawningCar? car)
{ {
if (_company == null || car == null) if (_company == null || car == null)
{ {

View File

@ -33,7 +33,7 @@
panelPurple = new Panel(); panelPurple = new Panel();
panelYellow = new Panel(); panelYellow = new Panel();
panelBlack = new Panel(); panelBlack = new Panel();
panelGrey = new Panel(); panelGray = new Panel();
panelBlue = new Panel(); panelBlue = new Panel();
panelWhite = new Panel(); panelWhite = new Panel();
panelGreen = new Panel(); panelGreen = new Panel();
@ -86,7 +86,7 @@
groupBoxColors.Controls.Add(panelPurple); groupBoxColors.Controls.Add(panelPurple);
groupBoxColors.Controls.Add(panelYellow); groupBoxColors.Controls.Add(panelYellow);
groupBoxColors.Controls.Add(panelBlack); groupBoxColors.Controls.Add(panelBlack);
groupBoxColors.Controls.Add(panelGrey); groupBoxColors.Controls.Add(panelGray);
groupBoxColors.Controls.Add(panelBlue); groupBoxColors.Controls.Add(panelBlue);
groupBoxColors.Controls.Add(panelWhite); groupBoxColors.Controls.Add(panelWhite);
groupBoxColors.Controls.Add(panelGreen); groupBoxColors.Controls.Add(panelGreen);
@ -122,13 +122,13 @@
panelBlack.Size = new Size(34, 34); panelBlack.Size = new Size(34, 34);
panelBlack.TabIndex = 4; panelBlack.TabIndex = 4;
// //
// panelGrey // panelGray
// //
panelGrey.BackColor = Color.Gray; panelGray.BackColor = Color.Gray;
panelGrey.Location = new Point(67, 66); panelGray.Location = new Point(67, 66);
panelGrey.Name = "panelGrey"; panelGray.Name = "panelGray";
panelGrey.Size = new Size(34, 34); panelGray.Size = new Size(34, 34);
panelGrey.TabIndex = 5; panelGray.TabIndex = 5;
// //
// panelBlue // panelBlue
// //
@ -349,7 +349,7 @@
private Panel panelPurple; private Panel panelPurple;
private Panel panelYellow; private Panel panelYellow;
private Panel panelBlack; private Panel panelBlack;
private Panel panelGrey; private Panel panelGray;
private Panel panelBlue; private Panel panelBlue;
private Panel panelWhite; private Panel panelWhite;
private Panel panelGreen; private Panel panelGreen;

View File

@ -27,7 +27,7 @@ public partial class FormCarConfig : Form
panelBlue.MouseDown += Panel_MouseDown; panelBlue.MouseDown += Panel_MouseDown;
panelYellow.MouseDown += Panel_MouseDown; panelYellow.MouseDown += Panel_MouseDown;
panelWhite.MouseDown += Panel_MouseDown; panelWhite.MouseDown += Panel_MouseDown;
panelGrey.MouseDown += Panel_MouseDown; panelGray.MouseDown += Panel_MouseDown;
panelBlack.MouseDown += Panel_MouseDown; panelBlack.MouseDown += Panel_MouseDown;
panelPurple.MouseDown += Panel_MouseDown; panelPurple.MouseDown += Panel_MouseDown;
@ -52,7 +52,7 @@ public partial class FormCarConfig : Form
Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height); Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height);
Graphics gr = Graphics.FromImage(bmp); Graphics gr = Graphics.FromImage(bmp);
_car?.SetPictureSize(pictureBoxObject.Width, pictureBoxObject.Height); _car?.SetPictureSize(pictureBoxObject.Width, pictureBoxObject.Height);
_car?.SetPosition(5, 5); _car?.SetPosition(15, 15);
_car?.DrawTransport(gr); _car?.DrawTransport(gr);
pictureBoxObject.Image = bmp; pictureBoxObject.Image = bmp;
} }

View File

@ -59,7 +59,7 @@ public partial class FormSportCar : Form
} }
/// <summary> /// <summary>
/// Перемешение объекта по форме (нажатие кнопок навигации) /// Перемещение объекта по форме (нажатие кнопок навигации)
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>