Задание № 5742

Студент

Корогодин Николай

Задача

Map Proxy

Состояние

Завершено

Баллов

4

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

30.05.2024, 08:53

Завершено

31.05.2024, 09:02

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

Задача

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

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

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

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

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

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

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

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

Действия