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

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

06.05.2024, 10:59. Показов 3182. Ответов 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
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
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. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru