package bankszámlákkezelése;

import java.util.ArrayList;
import java.util.List;

/**
 * Az osztály segítségével lekérdezhető az adott bankszámla egyenlege,
 * számlatörténete, lehet egy adott összeget elhelyezni a számlán, illetve
 * levenni róla.
 *
 * @author Daniel "3ICE" Berezvai
 */
public class BankAccount {

  //Egész számértékek kezelendők
  private int Amount;
  private List<Integer> History;

  public BankAccount() {
    //A kezdeti egyenleg mindig 0 forint
    Amount = 0;
    //Számlatörténet
    History = new ArrayList<>(1);
  }

  /**
   * Az egyenleget lekérdező függvény
   *
   * @return Az egyenleget
   */
  int getBalance() {
    return Amount;
  }

  /**
   * A számlatörténetet lekérdező függvény
   *
   * @return A számlatörténetet másolata
   */
  List<Integer> getHistory() {
    //A számlatörténet egy másolatát kell adni, azaz nem elég /* return History; */
    return new ArrayList<>(History);
  }

  /**
   * Összeg elhelyezése bankszámlán
   *
   * @param sum Az elhelyezett összeg
   */
  void deposit(int sum) {
    Amount += sum;
    History.add(sum);
  }

  /**
   * Összeg levétele bankszámláról
   *
   * @param sum A levett összeg, nemnegatív szám
   */
  void withdrawal(int sum) {
    deposit(-sum);
  }
}
