Знакомство с классами Ruby
Информация по теме
Цель: познакомиться с принципами организации классов в 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 точки после запятой.
Документация
- Список предопределённых переменных, доступных в Ruby-скриптах. Переменная
ARGV
содержит массив аргументов приложения. - Стандартная библиотека CSV, позволяющая считывать и записывать данные в соответствующие файлы.
- Метод Array#length позволяет узнать количество элементов в массиве.
- Метод Array#« позволяет добавить элемент в конец массива.
- Синтаксис для определения классов.
- Синтаксис для определения циклов For для обхода элементов массива по элементам.
- Метод Float#floor осуществляет округление числа до определённого знака после точки.