Промежуточно лаба 6.

This commit is contained in:
MariaBelkina 2024-05-21 21:56:57 +04:00
parent bab2bdbead
commit 5e1a479097
6 changed files with 103 additions and 1 deletions

View File

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

View File

@ -90,4 +90,6 @@ public class ListGenericObjects<T> : ICollectoinGenericObjects<T>
_collection[position] = null; _collection[position] = null;
return obj; return obj;
} }
// TODO та же фигня, что и в MassiveGenericObject
} }

View File

@ -130,4 +130,12 @@ public class MassiveGenericObject<T> : ICollectoinGenericObjects<T>
_collection[position] = null; _collection[position] = null;
return elem; return elem;
} }
public IEnumerable<T?> GetItems()
{
for (int i = 0; i < _collection.Length; ++i)
{
yield return _collection[i];
}
}
} }

View File

@ -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);
}
}

View File

@ -49,4 +49,6 @@ public class EntityBulldozer : EntityDozer
Blade = blade; Blade = blade;
Caterpillar = caterpillar; Caterpillar = caterpillar;
} }
// TODO то же, что и в EntityDozer.
} }

View File

@ -42,11 +42,31 @@ public class EntityDozer
///<param name="speed">Скорость</param> ///<param name="speed">Скорость</param>
///<param name="weight">Вес</param> ///<param name="weight">Вес</param>
///<param name="bodyColor">Основной цвет</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; Speed = speed;
Weight = weight; Weight = weight;
BodyColor = bodyColor; 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]));
}
} }