Пересдача №1
Требования к выполнению задания
- Исходный код приложения должен быть проверен с помощью приложения Rubocop с настройками по-умолчанию или с конфигурацией, предложенной на соответствующем занятии. Для каждого нарушения, которое находит Rubocop, должно быть объяснение почему оно не было исправлено. Допускаются аргументы с точки зрения архитектуры приложения, другого рода аргументы не принимаются.
- Все зависимости приложения должны управляться с помощью Bundler, установка зависимостей с помощью
gem
запрещена. Исключением является джемbundler
. - Для разрабатываемого приложения должны быть создан отдельный каталог.
- В корне каталога должны располагаться конфигурационные файлы:
Gemfile
,Gemfile.lock
. - В корне каталога приложения должны находится каталоги
bin
,lib
, в которых должен находиться исходный код приложения. В каталогеbin
находится исполняемый файл, в каталогеlib
находится описание всех собственных классов и модулей.
- В корне каталога должны располагаться конфигурационные файлы:
- Весь код приложения должен быть разбит на модули и классы, запрещается использовать файлы с простым набором методов, которые не пренадлежат какому-либо модулю.
- Необходимо выделить отдельные классы, описывающие предметную область.
- В одном модуле нельзя совмещать логику обработки предметной области и операции ввода-вывода.
- Приложение должно корректно обрабатывать неправильный ввод от пользователя.
Задача
Разработать приложение, оперирующее данными об окружностях. Окружность описывается следующими полями: координаты центра и радиус.
Информация об окружностях содержится в CSV-файле. В качестве параметра приложению передаётся имя файла с данными.
Приложение должно считать файл и вывести:
- Среднюю площадь кругов, указанных в файле. Площадь окружности высчитывается по формуле S = PI * r^2.
- Для каждой окружности вывести список других окружностей, пересекающих данную окружность.
Требования к реализации
- Необходимо использовать объектно-ориетированный подход при реализации приложения. При реализации необходимо как минимум описать класс Circle для описания окружности и Plane для описания плоскости с окружностями (список окружностей).
- Данные для обработки необходимо использовать следующие: lab-4-circle-data.csv
-
Запуск приложения должен выглядеть следующим образом:
ruby bin/application.rb data/lab-4-circle-data.csv
То есть путь к файлу с данными должен получаться из аргументов приложения.
-
Вывод приложения должен быть следующий:
Всего кругов в файле: 100 Средняя площадь кругов: 5356,56 Пересечение между кругами: 1. (100, 200, 400) 5, 6, 7, 15. 2. (50, 30, 60) 3, 50, 25, 46. 3. (25, 63, 55) 2, 5, 50. 4. (1, 1, 10). ...
- Исходный код должен быть загружен в архиве на сайт https://moodle.uniyar.ac.ru/ в качестве ответа на задание Пересдача №1.
- Если у вас нет доступа к сайту, то исходный код можно отправить на электронный адрес преподавателя.
Рекомендации по распределению времени
- Реализация приложения 14:30-15:30.
- Отправка результатов приложения 15:30-15:45.