AndrewMoryakov / SimpleGeometryCalculator

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Задача: Напишите библиотеку для поставки внешним клиентам, которая умеет вычислять площадь круга по радиусу и треугольника по трем сторонам. Дополнительно оценим:
Юнит-тесты
Легкость добавления других фигур
Вычисление площади фигуры без знания типа фигуры
Проверку на то, является ли треугольник прямоугольным

SimpleGeometryCalculator


Проект CompanyName.Geometry содержит классы, который описывает базовые геометрические фигуры.
Circle - окружность. Реализует интерфейс описывающую окружность ICircle
ICircle - является наследником IShape

Интерфейс для каждой базовой фигуры введен, для того, чтобы при необходимости можно было создать новый класс описывающий, например, окружность который считывает данные из файла или сети.

Для вычисления метрики фигуры, например, площади, нужно:

  • Создать экземпляр фигуры, которая описывает параметры фигуры, например длины сторон или диаметр.
  • Создать экземпляр калькулятора, который умеет считать определенные метрики фигуры, например, площадь.
  • Создать экземпляр ShapeCalculator. Данный класс нужен для дальнейшего расширения, например, для того, чтобы вычислять площади пакетами фигур или вычислять коллизии фигур. Обобщенный тип используется для связывания конкретного калькулятора и фигуры.

Тесты

  • CalculateCircleAreaByRadius - проверяет вычисление радиуса окружности
  • RhombusTest - для данного теста создаются пользовательские фигуры Rhombus. Тест проверяет то, что площадь ромба считается корректно и то, что при некорректных данных площадь некорректна.
    Проверяется, что при переполнении выбрасывается искючение.
  • TriangleTest - проверяет вычисление площади треугольника.

Используется тип decimal, чтобы лучше контроллировать переполнение.

About


Languages

Language:C# 100.0%