Простая реализация тестового задания с фигурами

PS 🤷‍♀️

Это всего лишь мое видение решение такого тестового

Задача

Напишите библиотеку для поставки внешним клиентам, которая умеет вычислять площадь круга по радиусу и треугольника по трем сторонам.

Дополнительно оценим:

  • Легкость добавления других фигур
  • Вычисление площади фигуры без знания типа фигуры
  • Проверку на то, является ли треугольник прямоугольным

Решение

  • Создаем базовый класс Figure от которого будут наследоваться все фигуры
  • Сразу уточняем, что данный класс ничего не знает о сторонах фигур, так как у окружности нет сторон, он круглый you know? Поэтому базовый класс знает тольк о параметрах фигуры, по которым можно вычислить площадь фигуры, периметр/длину окружности
  • Так же создан интерфейс Calculatable, который описывает функции для вычисления площади, периметра/длины окружности и т.д. по тем параметрам, которые дали фигуре
  • Видно что от класса Figure можно уноследовать различные фигуры, так как в нем нет конкретики => добавляем хоть что. Я добавил квадрат 🤷‍♀️
  • В файле example.ts находится пример использования библиотеки. Видно что вся реализация скрыта от разработчика/пользователя или еще кого-то, но при этому библиотекой можно легко пользоваться и из вне добавить собственную фигуру, новую
  • Метод для проверки "прямоугольный ли треугольник" вынесел в отдельный метод-util, так как фигура НЕ ЗНАЕТ треугольник ли она вообще, поэтому пусть это проверяет что-то внешнее.

Запуск программы

  • Установить на комп NodeJS
  • Выполнить команду
sh start.sh

Ready!