Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Задача 2. Банковские счета

Описание

Часто в проектировании программ нам удобно опираться на понятия, которые не представлены в реальном мире, но служат удобной "опорой" для объединения нескольких классов.

Так, например, в банковском деле нет абстрактного понятия "Счет". Каждый счет в банке имеет четкое назначение: сберегательный, кредитный, расчетный. Но банковская программа работает с общими для счетов операциями как с одинаковыми объектами, и выполняет их, обращаясь к общему типу "Счет", хотя его и невозможно явно инстанцировать в программе. Реализуйте этот сценарий, опираясь на механизмы полиморфизма.

Функционал программы

  1. Создайте несколько классов — различных счетов на основе общего интерфейса:
  • Сберегательный счет (SavingsAccount)
  • Кредитный счет (CreditAccount)
  • Расчетный счет (CheckingAccount)
  1. Выполните перевод с одного счета на другой в методе public static void main.

Пример реализации

  1. Создайте абстрактный класс Account с тремя методами: заплатить, перевести, пополнить (pay(int amount), transfer(Account account, int amount), addMoney(int amount)). Платеж в нашем случае будет выглядеть просто как списание средств.
  2. Добавьте классы Сберегательный, Кредитный, Расчетный (SavingsAccount, CreditAccount, CheckingAccount соответственно) как потомков класса Счет. В них нужно переопределить методы базового класса. Каждый из них должен хранить баланс. Со сберегательного счета нельзя платить, только переводить и пополнять. Также сберегательный не может уходить в минус. Кредитный не может иметь положительный баланс – если платить с него, то уходит в минус, чтобы вернуть в 0, надо пополнить его. Расчетный может выполнять все три операции, но не может уходить в минус.
  3. Продемонстрируйте работу счетов. Создайте три переменные типа Account и присвойте им три разных типа счетов.