Skip to content

Repository files navigation

Task I Фигуры

Необходимо разработать приложение и написать к нему тесты согласно следующим требованиям:

Формулировка

Разработать классы Точка и Фигура. Создать методы и тесты: вычисления площади и периметра фигуры; является ли фигура той именно фигурой по определению; пересекает ли фигура только одну из осей координат на заданное расстояние etc.

Общие требования

  • Разработка классов: Создать классы Point и Shape. Разработать классы, реализующие функциональность, определённую индивидуальными заданиями (например, классы для вычисления площади и периметра фигуры). При решении задачи для создания entity-классов использовать паттерн Factory Method.
  • Entity-классы: Классы-сущности следует реализовать так, чтобы они не содержали бизнес-логики (методы вычислений, поиска и т.д.).
  • Идентификация: Фигура должна содержать поле id или name.
  • Чтение данных: Параметры для создания объектов читать из файла (.txt). Часть данных должна быть некорректной. Если встретилась некорректная строка, приложение должно переходить к следующей строке. Файлы не должны находиться вне каталогов.
  • Валидация:Разработать классы-валидаторы для проверки результатов вычислений параметров фигур, а также для валидации исходных данных для создания объектов entity-классов. Например: корректная строка в файле для создания объекта Круг: «1.0 2.0 3.0», где первое второе – координаты центра, третье - радиус круга; некорректная строка в файле для создания объекта Круг: «2a.0 3.0 4.1» - недопустимый символ «z», всю строку следует считать некорректной здесь и в случаях приведенных ниже; некорректная строка в файле для создания объекта Круг: «1.0 2.0» - недостаточно информации для создания объекта (можно использовать значение по умолчанию, н-р: 1); некорректная строка в файле для создания объекта Круг: «1.0 2.0 -3.0» - невозможно создать Круг с отрицательным радиусом.

Технические требования

  • Файловая структура: Все файлы должны быть организованы в папках в корне проекта. Использовать относительные пути.
  • Исключения: Использовать пользовательские классы исключений для обработки ошибок.
  • Логирование: Использовать библиотеку pino для логирования. Логи должны записываться в консоль и файл.
  • Тестирование: Код должен быть покрыт unit-тестами с использованием Jest или Mocha. Использовать больше одного expect на каждый тест кейс.

Стилистические требования

  • Кодстайл: Следовать общепринятым конвенциям кода TypeScript, использовать eslint, с одной из популярных конфигураций, например от airbnb.
  • Статическая типизация: Использовать возможности TypeScript для статической типизации для повышения надёжности и читаемости кода.
  • Импорты: Использовать ES6 модули для организации кода.
  • Константы: Имена неизменяемых констант должны быть написаны заглавными буквами, изменяемые - в camelCase.
  • Регулярные выражения: Хранить в константах.
  • Исключения: Не испускать стандартные исключения. Всегда обрабатывать исключения с помощью блоков try/catch.

Примечания

  • Фигуры должны быть ориентированы в пространстве параллельно осям и плоскостям координат, чтобы упростить вычисления.
  • Использование if и else должно соответствовать структуре положительного и отрицательного сценариев.
  • При объявлении переменных следует немедленно присваивать им значения.
  • В if, for, while обязательно использовать { }
  • Если генерируется exception, с помощью throw, не ловить его сразу же
  • В finally не генерировать исключения и не использовать return
  • Не увлекаться статическими методами
  • Использовать различные виды expect
  • Тест должен иметь структуру: given, when, then, где given – прекондишены (инициализация данных), when – вызов тестируемого метода (всегда одна строчка), then – посткондишн (assert-метод)

Варианты

1 Треугольник.

Разработать классы Точка и Треугольник. Создать методы и тесты: вычисления площади и периметра треугольника; составляют ли точки треугольник (не лежат ли точки на одной прямой); является ли треугольник прямоугольным, равнобедренным, равносторонним, остро/тупоугольным.

8 Конус.

Разработать классы Точка и Конус. Создать методы и тесты: вычисления площади поверхности фигуры и ее объема, а также соотношения объемов получаемых в результате рассечения фигуры координатной плоскостью; является ли объект заданной фигурой; находится ли основание фигуры на одной из координатных плоскостей.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages