2013-10-26 4 views
0

У меня есть банковский счет, где я выполняю такие задачи, как: внести депозит/снять. Мне нужно создать историю, в которой хранятся 10 последних действий, которые я сделал. (Скажем, есть только одна учетная запись во всем банке).Как сделать алгоритм задач истории?

Как я думаю, было бы как минимум 2 класса: BankAccount и Actions;

Ошибки могут быть, но все еще не получают желаемого результата. Как я могу достичь желаемых результатов? Есть идеи?

+1

1) не вставляйте эти классы, как вы сейчас делаете. 2) Я бы сделал Action интерфейсом, если это возможно. –

+0

Теперь я работаю с вложенными классами, и упражнение должно использовать его в такой ситуации. EDIT: возможно, мне нужно достичь этого, создав объекты AAction? А также инициализируйте Action lastAct в моем классе банковских счетов. (?) – Ernusc

+0

Итак, каков ваш желаемый результат и каков фактический результат? –

ответ

0

ACtion класс является абстрактным классом. Который имеет две функции:

  • doAction(int k), которые аннулируют или депозит в соответствии с реализацией
  • printAction() который распечатайте действие, которое было выполнено

DepositAction и WithdrawAction являются два реализацией Action класса.

actionList является Queue который содержит последние 10 транзакций, которые произошли.

amount - общая сумма, на которую удерживается текущий счет, и это номер, на котором действуют два класса DepositAction и WithdrawAction.

Надеюсь, это вам поможет.

public class BankAccount{ 
    private int amount; 
    private Queue<Action> actionList=new LinkedList<Action>(); 

    public void withDraw(int k){ 
     Action a = new withdrawAction(); 
     a.doAction(k); 
     if(actionList.size()<10){ 
      actionList.offer(a); 
     } 
     else{ 
      actionList.poll(); 
      actionList.offer(a); 
     } 
    } 

    public void deposit(int k){ 
     Action a = new DepositAction(); 
     a.doAction(k); 
     if(actionList.size()<10){ 
      actionList.offer(a); 
     } 
     else{ 
      actionList.poll(); 
      actionList.offer(a); 
     } 
    } 

    abstract class Action{ 
     String actionDesc=null; 
     abstract void doAction(int k); 
     abstract void printAction(); 
    } 

    class DepositAction extends Action{ 
     @Override 
     void doAction(int k) { 
      amount=amount+k; 
      actionDesc="Deposit: "+k; 
     } 
     @Override 
     void printAction() { 
      System.out.println(actionDesc); 
     } 
    } 

    class withdrawAction extends Action{ 
     @Override 
     void doAction(int k) { 
      if(amount-k<0){ 
       throw new IllegalArgumentException(); 
      } 
      amount=amount-k; 
      actionDesc="Withdraw: "+k; 
     } 
     @Override 
     void printAction() { 
      System.out.println(actionDesc); 
     } 
    } 
} 
+0

Да, теперь ясно! Спасибо! – Ernusc

0

Ну просто идея

вы можете поддерживать queue размер 10.

место, где вы выполняете отзывать и депозитная операция, внести изменения в очереди, а также, чтобы отразить последнее действие.

Смежные вопросы