82 lines
3.0 KiB
C#
82 lines
3.0 KiB
C#
/// <summary>
|
||
/// Класс, представляющий ножницы как ручной инструмент.
|
||
/// </summary>
|
||
public class Scissors : ManualTool
|
||
{
|
||
private double _bladeSize;
|
||
|
||
/// <summary>
|
||
/// Размер лезвия ножниц.
|
||
/// </summary>
|
||
public double BladeSize
|
||
{
|
||
get => _bladeSize;
|
||
set
|
||
{
|
||
if (value <= 0.0)
|
||
throw new ArgumentException("Длина лезвия не может быть меньше или равна нулю", nameof(BladeSize));
|
||
|
||
_bladeSize = value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Инициализирует новый экземпляр класса <see cref="Scissors"/> с указанными параметрами.
|
||
/// </summary>
|
||
/// <param name="parName">Название ручного инструмента</param>
|
||
/// <param name="parMaterial">Материал ручного инструмента</param>
|
||
/// <param name="parWeight">Вес ручного инструмента в граммах</param>
|
||
/// <param name="parHandleLength">Длина рукояти ручного инструмента в метрах. Должна быть больше нуля</param>
|
||
/// <param name="parBladeSize">Длина лезвия ножниц в метрах. Должна быть больше нуля</param>
|
||
/// <exception cref="ArgumentException">Выбрасывается, когда вес меньше или равен нулю</exception>
|
||
/// <exception cref="ArgumentException">Выбрасывается, когда длина рукояти меньше или равна нулю</exception>
|
||
/// <exception cref="ArgumentException">Выбрасывается, когда длина лезвия меньше или равна нулю</exception>
|
||
public Scissors(string parName, Material parMaterial, double parWeight, float parHandleLength, double parBladeSize) : base(parName, parMaterial, parWeight, parHandleLength)
|
||
{
|
||
if (parBladeSize <= 0)
|
||
throw new ArgumentException("Длина лезвия не может быть меньше или равна нулю", nameof(parBladeSize));
|
||
|
||
_bladeSize = parBladeSize;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Оценивает точность работы ножниц на основе длины и равномерности лезвия
|
||
/// </summary>
|
||
/// <returns>Значение точности работы ножниц (от 0 до 1)</returns>
|
||
public double MeasureAccuracy()
|
||
{
|
||
double cleanlinessFactor = 0.0;
|
||
double evennessFactor = 0.0;
|
||
|
||
if (_bladeSize < 5)
|
||
{
|
||
cleanlinessFactor = 0.8;
|
||
}
|
||
else if (_bladeSize >= 5 && _bladeSize < 10)
|
||
{
|
||
cleanlinessFactor = 0.7;
|
||
}
|
||
else
|
||
{
|
||
cleanlinessFactor = 0.6;
|
||
}
|
||
|
||
if (_bladeSize < 5)
|
||
{
|
||
evennessFactor = 0.9;
|
||
}
|
||
else if (_bladeSize >= 5 && _bladeSize < 10)
|
||
{
|
||
evennessFactor = 0.8;
|
||
}
|
||
else
|
||
{
|
||
evennessFactor = 0.7;
|
||
}
|
||
|
||
double accuracy = (cleanlinessFactor + evennessFactor) / 2.0;
|
||
|
||
return accuracy;
|
||
}
|
||
}
|