From d3517a86fb72b811615aa6f0abc3f042d875983e Mon Sep 17 00:00:00 2001 From: Serghei Cebotari Date: Thu, 16 Nov 2023 15:48:44 +0300 Subject: [PATCH] Add comments --- MindBox.Lib/FlatShape.cs | 11 +++++++++++ MindBox.Lib/ITwoDimensional.cs | 4 ++++ MindBox.Lib/Triangle.cs | 10 ++++++++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/MindBox.Lib/FlatShape.cs b/MindBox.Lib/FlatShape.cs index d168ddd..c906f83 100644 --- a/MindBox.Lib/FlatShape.cs +++ b/MindBox.Lib/FlatShape.cs @@ -1,7 +1,18 @@ namespace MindBox.Lib; +/// +/// Абстрактный класс, реализующий интерфейс двумерной фигуры. +/// Посчитал нужным создать отдельный абстрактный класс, это более гибкое решение. +/// Такой класс можно расширить другими интерфейсами, например IColorful - контракт для методов получения и/или изменения цвета фигуры. +/// Прочие интерфейсы могут быть применимы не только к двумерным фигурам +/// public abstract class FlatShape : ITwoDimensional { + + /// + /// Поле для хранения вычисляемого значения площади. + /// Вычисляем значение только один раз. + /// protected double? _area; public abstract double GetArea(); } diff --git a/MindBox.Lib/ITwoDimensional.cs b/MindBox.Lib/ITwoDimensional.cs index 776e74f..37cba0f 100644 --- a/MindBox.Lib/ITwoDimensional.cs +++ b/MindBox.Lib/ITwoDimensional.cs @@ -1,5 +1,9 @@ namespace MindBox.Lib; +/// +/// Интерфейс для методов, которые можно применить для двумерной фигуры. +/// Можно впоследствии дополнить методами вычисления периметра, etc +/// public interface ITwoDimensional { public double GetArea(); diff --git a/MindBox.Lib/Triangle.cs b/MindBox.Lib/Triangle.cs index 54e8a85..58cdb91 100644 --- a/MindBox.Lib/Triangle.cs +++ b/MindBox.Lib/Triangle.cs @@ -2,6 +2,7 @@ namespace MindBox.Lib; public class Triangle : FlatShape { + // Может потребоваться хранить разные стороны в разных полях, но для нашей задачи это избыточно private readonly double[] _sides; public Triangle(double a, double b, double c) @@ -16,6 +17,9 @@ public class Triangle : FlatShape throw new ArgumentException($"Sides lengths are not valid: {a}, {b}, {c}"); } } + /// + /// Вычисление площади реугольника по формуле Герона + /// public override double GetArea() { if (_area != null) @@ -31,14 +35,16 @@ public class Triangle : FlatShape (semiPerimeter - _sides[2])); return _area.Value; } - } + } public bool IsRight() { var sorted = _sides.OrderByDescending(x => x); + // Самая длинная сторона: гипотенуза double hypotenuse = sorted.First(); + // Две другие - катеты var catheti = sorted.Skip(1); return hypotenuse * hypotenuse == catheti.Sum(x => x * x); - } + } }