Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Срочно нужна помощь с кодом на С++???

Alek Sey Ученик (98), на голосовании 5 месяцев назад
Голосование за лучший ответ
Дима Миненко Гуру (4954) 6 месяцев назад
Вызови скорую помощь
Она быстрее поможет
Alek SeyУченик (98) 6 месяцев назад
Не помогло
Дима Миненко Гуру (4954) Alek Sey, блин
Татьяна Просветленный (36384) 6 месяцев назад
Задача:
Создать класс ExceptionAttempts, который наследуется от std::exception.
Создать класс Proxy, который будет наследоваться от IVault и будет являться прокси для объекта Vault.
В классе Proxy реализовать метод unlock, который будет перенаправлять вызовы к реальному объекту Vault, считать количество неудачных попыток и выбрасывать исключение, если количество попыток превышает заданный лимит.
Решение:
Для начала, давайте создадим класс ExceptionAttempts и класс Proxy.
 #include  
#include

class ExceptionAttempts : public std::exception {
public:
const char* what() const noexcept override {
return "Too many attempts";
}
};

class Proxy : public IVault {
private:
IVault* realObject;
int attempts;
int failedAttempts;

public:
Proxy(IVault* realObject, int attempts)
: realObject(realObject), attempts(attempts), failedAttempts(0) {}

bool unlock(int pass) override {
if (failedAttempts >= attempts) {
throw ExceptionAttempts();
}

bool result = realObject->unlock(pass);
if (!result) {
failedAttempts++;
}

return result;
}
};
Объяснение кода:
Класс ExceptionAttempts:

Наследуется от std::exception.
Переопределяет метод what, чтобы возвращать сообщение об ошибке.
Класс Proxy:

Имеет приватные поля: указатель на реальный объект IVault* realObject, максимальное количество попыток int attempts и счетчик неудачных попыток int failedAttempts.
Конструктор принимает указатель на реальный объект и количество допустимых попыток.
Метод unlock проверяет, превысило ли количество неудачных попыток лимит. Если да, выбрасывает исключение.
Если количество попыток не превышено, вызывает метод unlock реального объекта и обновляет счетчик неудачных попыток в случае неудачи.
Похожие вопросы