wip лаба 5

This commit is contained in:
Anya 2024-05-23 08:50:46 +04:00
parent 495672b8e8
commit 11aabfe96d
8 changed files with 164 additions and 11 deletions

View File

@ -51,7 +51,18 @@ namespace ProjectBus.CollectionGenericObject;
/// <param name="position">Позиция</param>
/// <returns>Объект</returns>
T? Get(int position);
}
/// <summary>
/// Получение типа коллекции
/// </summary>
CollectionType GetCollectionType { get; }
/// <summary>
/// Получение объектов коллекции по одному
/// </summary>
/// <returns>Поэлементый вывод элементов коллекции</returns>
IEnumerable<T?> GetItems();
}

View File

@ -23,6 +23,8 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
public int SetMaxCount { set { if (value > 0) { _maxCount = value; } } }
public CollectionType GetCollectionType => CollectionType.List;
/// <summary>
/// Конструктор
/// </summary>
@ -70,5 +72,13 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
_collection.RemoveAt(position);
return temp;
}
public IEnumerable<T?> GetItems()
{
for (int i = 0; i < Count; ++i)
{
yield return _collection[i];
}
}
}

View File

@ -39,10 +39,12 @@ namespace ProjectBus.CollectionGenericObject;
}
}
/// <summary>
/// Конструктор
/// </summary>
public MassiveGenericObjects()
public CollectionType GetCollectionType => CollectionType.Massive;
/// <summary>
/// Конструктор
/// </summary>
public MassiveGenericObjects()
{
_collection = Array.Empty<T?>();
}
@ -132,5 +134,13 @@ namespace ProjectBus.CollectionGenericObject;
_collection[position] = null;
return temp;
}
}
public IEnumerable<T?> GetItems()
{
for (int i = 0; i < _collection.Length; ++i)
{
yield return _collection[i];
}
}
}

View File

@ -22,6 +22,14 @@ public class DrawningBus : DrawningSimpleBus
EntitySimpleBus = new EntityBus(speed, weight, bodyColor, additionalColor, additionalCompartment, accordion);
}
public DrawningBus(EntitySimpleBus simpleBus) : base(310, 52)
{
if (simpleBus != null && simpleBus is EntityBus bus)
{
EntitySimpleBus = new EntityBus(bus.Speed, bus.Weight, bus.BodyColor, bus.AdditionalColor, bus.AdditionalCompartment, bus.Accordion);
}
}
public override void DrawTransport(Graphics g)
{
if (EntitySimpleBus == null || EntitySimpleBus is not EntityBus bus || !_startPosX.HasValue || !_startPosY.HasValue)

View File

@ -80,6 +80,18 @@ public class DrawningSimpleBus
EntitySimpleBus = new EntitySimpleBus(speed, weight, bodyColor);
}
/// <summary>
/// Конструктор
/// </summary>
/// <param name="simpleBus">Класс-сущность</param>
public DrawningSimpleBus(EntitySimpleBus simpleBus) : this()
{
if (simpleBus != null)
{
EntitySimpleBus = new EntitySimpleBus(simpleBus.Speed, simpleBus.Weight, simpleBus.BodyColor);
}
}
/// <summary>
/// Конструктор для наследников
/// </summary>

View File

@ -0,0 +1,56 @@
using System;
using ProjectBus.Entities;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectBus.Drawnings;
public static class ExtentionDrawningSimpleBus
{
/// <summary>
/// Разделитель для записи информации по объекту в файл
/// </summary>
private static readonly string _separatorForObject = ":";
/// <summary>
/// Создание объекта из строки
/// </summary>
/// <param name="info">Строка с данными для создания объекта</param>
/// <returns>Объект</returns>
public static DrawningSimpleBus? CreateDrawningSimpleBus(this string info)
{
string[] strs = info.Split(_separatorForObject);
EntitySimpleBus? simpleBus = EntityBus.CreateEntityBus(strs);
if (simpleBus != null)
{
return new DrawningBus((EntityBus)simpleBus);
}
simpleBus = EntitySimpleBus.CreateEntitySimpleBus(strs);
if (simpleBus != null)
{
return new DrawningSimpleBus(simpleBus);
}
return null;
}
/// <summary>
/// Получение данных для сохранения в файл
/// </summary>
/// <param name="drawningSimpleBus">Сохраняемый объект</param>
/// <returns>Строка с данными по объекту</returns>
public static string GetDataForSave(this DrawningSimpleBus drawningSimpleBus)
{
string[]? array = drawningSimpleBus?.EntitySimpleBus?.GetStringRepresentation();
if (array == null)
{
return string.Empty;
}
return string.Join(_separatorForObject, array);
}
}

View File

@ -40,4 +40,32 @@ public class EntityBus : EntitySimpleBus
AdditionalCompartment = additionalCompartment;
Accordion = accordion;
}
}
/// <summary>
/// Получение строк со значениями свойств объекта класса-сущности
/// </summary>
/// <returns></returns>
public override string[] GetStringRepresentation()
{
return new[]
{
nameof(EntityBus), Speed.ToString(),
Weight.ToString(), BodyColor.Name, AdditionalColor.Name, AdditionalCompartment.ToString(), Accordion.ToString()
};
}
/// <summary>
/// Создание объекта из массива строк
/// </summary>
/// <param name="strs"></param>
/// <returns></returns>
public static EntitySimpleBus? CreateEntityBus(string[] strs)
{
if (strs.Length != 7 || strs[0] != nameof(EntityBus))
{
return null;
}
return new EntityBus(Convert.ToInt32(strs[1]), Convert.ToDouble(strs[2]), Color.FromName(strs[3]), Color.FromName(strs[4]), Convert.ToBoolean(strs[5]), Convert.ToBoolean(strs[5]));
}
}

View File

@ -20,10 +20,6 @@ public class EntitySimpleBus
/// Основной цвет
/// </summary>
public Color BodyColor { get; private set; }
public void setBodyColor(Color color)
{
BodyColor = color;
}
/// <summary>
@ -43,4 +39,26 @@ public class EntitySimpleBus
Weight = weight;
BodyColor = bodyColor;
}
// <summary>
/// Получение строк со значениями свойств объекта класса-сущности
/// </summary>
/// <returns></returns>
public virtual string[] GetStringRepresentation()
{
return new[] { nameof(EntitySimpleBus), Speed.ToString(), Weight.ToString(), BodyColor.Name };
}
/// <summary>
/// Создание объекта из массива строк
/// </summary>
/// <param name="strs"></param>
/// <returns></returns>
public static EntitySimpleBus? CreateEntitySimpleBus(string[] strs)
{
if (strs.Length != 4 || strs[0] != nameof(EntitySimpleBus))
{
return null;
}
return new EntitySimpleBus(Convert.ToInt32(strs[1]), Convert.ToDouble(strs[2]), Color.FromName(strs[3]));
}
}