Портрет участника бонусной программы определяется количеством операций и потраченной суммой в каждой из категорий. То есть для каждой бонусной программы задано заранее фиксированное множество категорий, которые будут определяться порядковыми номерами (категория 2 бонусной программы "Программисты 209").
Каждая операция участника бонусной программы регистрируется. При этом указывается номер категории и сумма операции.
Два портрета можно сравнить по степени лояльности. Сравнение имеет смысл только в том случае, когда они относятся к одной программе и имеют одинаковое количество категорий.
Требуется релизовать класс, который описывает портрет участника бонусной программы. Должны быть реализованы следующие возможности.
В случае обнаружения ошибочных данных методы, включая конструкторы, должны генерировать исключения.
Решение должно содержать тестовую программу, которую вы разрабатываете самостоятельно.