My approach would be as follows:
1. I'd create an bank account interface with the two methods; withdraw and deposit:
public interface BankAccount {
private double bal;
public void withdraw( double amount );
public void deposit( double amount );
}
2. I'd create two two classes; for CurrentAccount and SavingsAccount that would implement the above interface, and polymorphically provide implementation for the two methods; withdraw and deposit:
public class CurrentAccount implements BankAccount {
public void deposit( double amount ) {
this.bal += bal;
}
public withdraw( double amount ) {
this.bal -= bal;
}
}
I would repeat this for the savings account.
To track changes made, I would use an AOP framework to take care of policy changes in security, and things like that.
I hope this helps.