1
0
Files
cpo-lab/Tool/src/Scissors.cs
2024-04-12 16:49:19 +03:00

82 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/// <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;
}
}