С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 06.05.2024
Сообщений: 1

VaultProxy. В этой задаче вам предстоит реализовать паттерн прокси

06.05.2024, 10:59. Показов 3180. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В этой задаче вам предстоит реализовать паттерн прокси.
C++
1
2
3
4
5
6
7
8
9
10
11
12
class IVault {
public:
 virtual bool unlock(int password) = 0;
};
class Vault : public IVault {
 int password;
public:
 Vault(int password): password(password) {};
 bool unlock(int pass) override {
 return password == pass;
 }
};
Перед вами абстрактный класс IVault, а также его наследник Vault.
Вам нужно написать класс прокси:

C++
1
2
3
4
5
class Proxy : public IVault {
public:
 Proxy(IVault* realObject, int attempts);
 bool unlock(int pass) override;
};
В конструкторе передается указатель на объект Vault, а также переменная attempts.
Прокси должен перенаправлять вызовы unlock к реальному объекту, считать количество неудачных
вызовов, а возвращать тот результат, который вернул лежащий под прокси объект Vault. Однако
помимо этого он считает кол-во неудачных попыток(которые привели к false). Если кол-во
неудачных попыток превысило attempts раз, то прокси должен бросить исключение типа
C++
1
2
3
ExceptionAttempts
class ExceptionAttempts : public std::exception {
};
Если у прокси был вызван unlock, который привел к true, или же прокси бросил исключение, это
этим объектом-прокси более не пользуются.

В систему отправляйте код классов ExceptionAttempts и Proxy, а также любой другой код,
который поможет решить задачу.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.05.2024, 10:59
Ответы с готовыми решениями:

В этой задаче вам предстоит отгадать число, загаданное жюри. Жюри загадало число от 1 до 100 включительно
Требуется отгадать его за неболее чем 30 попыток. А именно, есть объект типа BlackBox class BlackBox { public: void...

Вам предстоит реализовать декоратор, добавляющий функции мемоизацию
Вам предстоит реализовать декоратор, добавляющий функции мемоизацию. Мемоизация — это запоминание уже вычисленных результатов для уже...

В этой задаче вам требуется посчитать следующую сумму: 1 - a + a ^ 2 - a ^ 3 + a ^ 4 … ± a
В этой задаче вам требуется посчитать следующую сумму: 1 - a + a ^ 2 - a ^ 3 + a ^ 4 … ± a Во входных данных записано два целых числа:...

1
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
11.05.2024, 03:08
Цитата Сообщение от Ivanov121 Посмотреть сообщение
вам предстоит реализовать
Название: ne_nam_a_vam.jpg
Просмотров: 31

Размер: 10.0 Кб

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
 
class IVault {
public:
    virtual bool unlock(int password) = 0;
 
    virtual ~IVault() = default; // для порядку
};
 
class Vault : public IVault {
public:
    Vault(int password) : password(password) {};
 
    bool unlock(int pass) override {
        return password == pass;
    }
 
private:
    int password;
};
 
class ExceptionAttempts : public std::exception {
public:
    ExceptionAttempts() : std::exception() {}
};
 
 
class Proxy : public IVault {
public:
    Proxy(IVault *realObject, size_t maxAttempts)
        : realObject(realObject), maxAttempts(maxAttempts - 1), attempts{} {}
 
    bool unlock(int pass) override {
        if (attempts > maxAttempts) {
            throw ExceptionAttempts();
        }
        auto result = realObject->unlock(pass);
        if (result != true) {
            ++attempts;
        }
        return result;
    }
 
private:
    IVault *realObject;
    size_t maxAttempts;
    size_t attempts;
};
 
 
int main() {
    Vault vault(123);
    Proxy proxyVault(&vault, 3);
 
    for (size_t i = 0; i < 5; ++i) {
        try {
            std::cout << i << ": " << proxyVault.unlock(i) << std::endl;
        } catch (const ExceptionAttempts &e) {
            std::cout << i << ": " << e.what() << std::endl;
        }
    }
 
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2024, 03:08
Помогаю со студенческими работами здесь

Подскажите пожалуйста как правильно реализовать кнопку Show в этой задаче
Есть клас Car internal class Car { public string Model { get; set; } public int Year { get; set; } ...

Паттерн прокси
В этой задаче вам предстоит реализовать паттерн прокси. class IVault { public: virtual bool unlock(int password) = 0; }; class...

Вам необходимо разрешение на выполнение этой операции
Решил тряхнуть стриной и поиграть в линейку. Все нужные папки патча скопировал в корень, но при попытке скопировать папку system пишет Вам...

Вам необходимо разрешение на выполнение этой операции
Доброго времени суток, проблема такая - я скачал архив с длл файлами и мне нужно его закинуть в папку syswow64, но после подтверждения...

Вам необходимо разрешение на выполнение этой операции
Всем доброго времени суток Ситуация такова, в Onedrive имеется 29 гб фото\видео с отдыха, видеоуроков по монтажкам, книг, в целом ничего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru