Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Edited by NavBot

...

Code Block
bgColor#ccccff
package Bank;
public interface BankApplication {   
  void depositFunds(BankApplication ba, String username, double amount);
  double getBalance(String accountNumber);
  double getUserBalance(String accountNumber);
  boolean exists(String username); 
}

package Account;
import Bank.*;  // Import from a third package
class AccountHolderClass  {	  
  public synchronized void depositFunds(BankApplication ba, String username, double amount) {	
    // Use a utility method of UserClass to check if username exists
    if(ba.exists(username)) { 
      // Deposit the amount
    } 
  } 
  public double getBalance(String accountNumber) { 
    // Return the account balance 
    return 1.0; 
  }   
}

package User;
import Account.*; // One way dependency
import Bank.*; // Import from a third package
class UserClass extends AccountHolderClass implements BankApplication {
  public synchronized double getUserBalance(String accountNumber) {
    // Use a method of AccountHolderClass to get the account balance 
    return getBalance(accountNumber); 
  }
  public boolean exists(String username) { 
    // Check if user exists
    return true; 
  }
} 

package Implementer;
import Bank.*;
import Account.*;
import User.*;
class BankOperations {
  private BankApplication ba;
  public BankOperations(BankApplication ba) {
    this.ba = ba;
  }

  public void doUserActions() {
    System.out.println(ba.exists("user""user"));
    System.out.println(ba.getUserBalance("1111""1111"));
  }

  public static void main(String[] args) {
    AccountHolderClass ac = new AccountHolderClass(); 
    ac.depositFunds(new UserClass(), "user""user", 1.0); // Pass an interface argument
    BankOperations bo = new BankOperations(new UserClass()); 
    bo.doUserActions(); 
  }
} 

...

Wiki Markup
\[[Martin 96|AA. Java References#Martin 96]\] 
\[[Knoernschild 01|AA. Java References#Knoernschild 01]\] Chapter 1: ""OO Principles and Patterns, 1.2.5 Acyclic Dependencies Principle""

...

MSC01-J. Avoid memory leaks            49. Miscellaneous (MSC)      IDS01      MSC03-J. Prefer using URIs to URLsIterators over Enumerations