Информация по теме

Цель: познакомиться с принципами организации классов в Ruby, описания атрибутов, контроля доступа, работа с переменными.

Материалы для подготовки

  • Глава №3 книги Programming Ruby 2.0
  • Глава №2 книги Изучаем Ruby
  • Глава №11 книги Путь Ruby

Презентация

Презентацию можно посмотреть по данной ссылке, исходный код примеров можно увидеть по данной ссылке.

Код, написанный на занятии можно скачать по данной ссылке. Для распаковки архива используйте команду 7z x 02-2017-09-code.7z.

Практическое занятие

Цель занятия: научиться писать простые приложения, описывать свои структуры данных в виде классов, считывать данные из CSV-файлов.

Задача: разработать приложение, которое позволяет компании обрабатывать информацию о комунальных платежах из CSV-файлов.

Дата платежа,Оплачиваемый месяц,Дом,Квартира,Сумма платежа
2014-09-04,2014-08,Панельный,31,4703.7
2014-09-05,2014-08,Кирпичный,97,4146.43
2014-09-05,2014-08,Кирпичный,87,402.66
2014-09-05,2014-08,Кирпичный,83,4762.22

Приложение должно обрабатывать эти файлы и выводить по запросу пользователя следующую информацию:

  • Общий объём поступлений на настоящий момент.
  • Общий объём поступлений за каждый месяц.
  • Максимальный платёж за последний месяц.
  • Общий объём выплат по начислениям за указанный месяц. Т.е. сколько денег было получено за оплату в указанном месяце. Месяц указывается пользователем.

Требования к реализации

  • Имя файла для обработки и команда, которую необходимо выполнить, передаются как аргументы приложения. Примеры входных файлов: файл №1, файл №2, файл №3, файл №4, файл №5, файл №6.
  • Если приложению не были переданы аргументы, то приложение должно приводить справку по использованию.
  • В исходном коде проекта определите классы для представления одной записи и для обработки колекции записей.
  • Класс для работы с коллекцией должен предоставлять методы для обработки данных (вычисления общего объёма поступлений и так далее), класс не должен предоставлять доступ к массиву из записей.
  • Определите методы вне классов для чтения информации из файла, а также вывода результата на стандартный поток вывода. Эти методы не надо включать в классы.
  • Вывод чисел должен осуещствляться с точностью до 2 точки после запятой.

Документация