Задание № 5224

Студент

Лавриненко Егор

Задача

Map Proxy

Состояние

Завершено

Баллов

3

Дедлайн
29 мая 2023
Назначено

28.05.2023, 17:15

Завершено

29.05.2023, 05:59

Необходимо реализовать Proxy (заместитель) для контейнера map, управляющий доступом.

Задача

Реализовать надстройку над стандартным контейнером map, которая позволяла бы управлять доступом к определённым ключам (с разграничением чтения, записи и удаления), а также подменять при необходимости возвращаемые результаты.

В этой системе присутствует три класса:

  • std::map – базовый контейнер.
  • Auditor – базовый класс «аудитора», реализующий проверку прав и замену значений.
  • ProxiedMap – надстройка над контейнером, которая все операции с ним предваряет вызовом объекта Auditor.

Реализовать несколько подклассов для Auditor (всё разрешающий, разрешающий только чтение, подменяющий значения по заданным ключи константным значением и т.д.)

Тестирование

Разработать набор тестов, проверяющий, действительно ли блокируются попытки несанкционированного доступа (для разных Auditor).

Возможное усложнение

Реализовать несколько видов итераторов (например: итератор, обходящий все доступные ключи; итератор, обходящий все ключи, но сигнализирующий об ошибке доступа при попытке обращения и т.д.).

Примечания

Не доделана

Действия