Промежуточно лаба 6.
This commit is contained in:
parent
bab2bdbead
commit
5e1a479097
@ -51,4 +51,15 @@ public interface ICollectoinGenericObjects<T>
|
||||
/// <param name="position">Позиция</param>
|
||||
/// <returns>Объект</returns>
|
||||
T? Get(int position);
|
||||
|
||||
/// <summary>
|
||||
/// Получение типа коллекции
|
||||
/// </summary>
|
||||
CollectionType GetCollecctionType { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Получение объектов коллекции по одному.
|
||||
/// </summary>
|
||||
/// <returns>Поэлементный вывод элементов коллекции</returns>
|
||||
IEnumerable<T> GetItems();
|
||||
}
|
||||
|
@ -90,4 +90,6 @@ public class ListGenericObjects<T> : ICollectoinGenericObjects<T>
|
||||
_collection[position] = null;
|
||||
return obj;
|
||||
}
|
||||
|
||||
// TODO та же фигня, что и в MassiveGenericObject
|
||||
}
|
||||
|
@ -130,4 +130,12 @@ public class MassiveGenericObject<T> : ICollectoinGenericObjects<T>
|
||||
_collection[position] = null;
|
||||
return elem;
|
||||
}
|
||||
|
||||
public IEnumerable<T?> GetItems()
|
||||
{
|
||||
for (int i = 0; i < _collection.Length; ++i)
|
||||
{
|
||||
yield return _collection[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,59 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ProjectBulldozer.Entities;
|
||||
|
||||
namespace ProjectBulldozer.Drawnings;
|
||||
|
||||
/// <summary>
|
||||
/// Расширение для класса EntityDozer
|
||||
/// </summary>
|
||||
public static class ExtentionDrawningDozer
|
||||
{
|
||||
/// <summary>
|
||||
/// Разделитель строки для записи информации по объекту.
|
||||
/// </summary>
|
||||
private static readonly string _separatorForObject = ":";
|
||||
|
||||
/// <summary>
|
||||
/// Создание объекта из строки.
|
||||
/// </summary>
|
||||
/// <param name="info"></param>
|
||||
/// <returns></returns>
|
||||
public static DrawningDozer? CreateDrawningDozer(this string info)
|
||||
{
|
||||
string[] strs = info.Split(_separatorForObject);
|
||||
EntityDozer? dozer = EntityBulldozer.CreateEntityBulldozer(strs);
|
||||
if (dozer != null)
|
||||
{
|
||||
return new DrawningBulldozer(dozer);
|
||||
}
|
||||
|
||||
dozer = EntityDozer.CreateEntityDozer(strs);
|
||||
if (dozer != null)
|
||||
{
|
||||
return new DrawningDozer(dozer);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение данных для сохранения в файл.
|
||||
/// </summary>
|
||||
/// <param name="drawningDozer"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetDataForSave(this DrawningDozer drawningDozer)
|
||||
{
|
||||
string[]? array = drawningDozer?.EntityDozer?.GetStringRepresentation();
|
||||
|
||||
if (array == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return string.Join(_separatorForObject, array);
|
||||
}
|
||||
}
|
@ -49,4 +49,6 @@ public class EntityBulldozer : EntityDozer
|
||||
Blade = blade;
|
||||
Caterpillar = caterpillar;
|
||||
}
|
||||
|
||||
// TODO то же, что и в EntityDozer.
|
||||
}
|
||||
|
@ -42,11 +42,31 @@ public class EntityDozer
|
||||
///<param name="speed">Скорость</param>
|
||||
///<param name="weight">Вес</param>
|
||||
///<param name="bodyColor">Основной цвет</param>
|
||||
public EntityDozer(int speed, double weight, Color bodyColor/*, Color additionalColor*/)
|
||||
public EntityDozer(int speed, double weight, Color bodyColor)
|
||||
{
|
||||
Speed = speed;
|
||||
Weight = weight;
|
||||
BodyColor = bodyColor;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение строк со значениями свойств объекта класса-сущности.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public virtual string[] GetStringRepresentation()
|
||||
{
|
||||
return new[] { nameof(EntityDozer), Speed.ToString(), Weight.ToString(), BodyColor.Name };
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Создание объекта из массива строк.
|
||||
/// </summary>
|
||||
/// <param name="strs"></param>
|
||||
/// <returns></returns>
|
||||
public static EntityDozer? CreateEntityDozer(string[] strs)
|
||||
{
|
||||
if (strs.Length != 4 || strs[0] != nameof(EntityDozer)) return null;
|
||||
|
||||
return new EntityDozer(Convert.ToInt32(strs[1]), Convert.ToDouble(strs[2]), Color.FromName(strs[3]));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user