Skip to content

artsofte-php-course/exercise-1.5

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Практическое задание 5. Банкомат

Разработать базовые классы для приложения банкомата.

Классы которые необходимо реализовать.

  1. Репозиторий счетов AccountRepository отвечающий за добавление, получение и поиск счетов по номеру
  2. Репозиторий дебетовых карт CardRepository отвечающий за добавление, получение и поиск карт
  3. Класс описывающий дебетовую карту (номер карты, пинкод, номер счета к которому карта привязана)
  4. Класс описывающий счет (номер, количество доступных средств)
  5. Класс банкомата и функции взаимодействия со счетом.

Пример взаимодействия:

// Создание репозитория счетов
$accountRepository = new AccountdRepository();

// Создание репозитория карт
$cardRepository = new CardRepository($accountRepository);


// номер счета
$accountNumber = "3000400050006000";
// количество средств на счете
$amount = 10000;

// Добавление счета
$accountRepository->add(new Account($accountNumber, $amount));

// Номер карты
$cardNumber = "4444-5555-5555-5555";

// Пинкод
$pin = "1234";

// Добавление карты
$cardManager->add(new Card($cardNumber, $pin, $accountNumber));


//Создание класса банкомата
$atm = new ATM($accountRepository, $cardRepository);

//Вставляем карту в приемник
$atm->insertCard($cardNumber);

//Указываем пинкод, если пинкод не подходит, выдаем ошибку 
$atm->enterPin($pin);

//Получение средств, 
// Если средств недостаточно, ошибка
// Если карта не вставлена или не указан пинкод, то также ошибка

$atm->cashOut(1000);
//Снятие средств, ошибки аналогично если карта не вставлена или пинкод не прошел проверку
$atm->cashIn(500);

// Получение баланса, должно вывести 10000-1000+500 = 9500; 
echo $atm->balance();

//Завершение работы, забираем карту
$atm->finish()

About

Практическое задание 5

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published