Необходимо реализовать Proxy (заместитель) для контейнера map
, управляющий доступом.
Реализовать надстройку над стандартным контейнером map
, которая позволяла бы управлять доступом к определённым ключам (с разграничением чтения, записи и удаления), а также подменять при необходимости возвращаемые результаты.
В этой системе присутствует три класса:
std::map
– базовый контейнер.Auditor
– базовый класс «аудитора», реализующий проверку прав и замену значений.ProxiedMap
– надстройка над контейнером, которая все операции с ним предваряет вызовом объекта Auditor
.Реализовать несколько подклассов для Auditor
(всё разрешающий, разрешающий только чтение, подменяющий значения по заданным ключи константным значением и т.д.)
Разработать набор тестов, проверяющий, действительно ли блокируются попытки несанкционированного доступа (для разных Auditor
).
Реализовать несколько видов итераторов (например: итератор, обходящий все доступные ключи; итератор, обходящий все ключи, но сигнализирующий об ошибке доступа при попытке обращения и т.д.).