| using System;
using System.Collections;
public class BankAccount {
private double interestRate;
private string owner;
private decimal balance;
private long accountNumber;
private static long nextAccountNumber = 0;
private static ArrayList accounts = new ArrayList();
public BankAccount(string owner): this(owner, 0.0) {
}
public BankAccount(string owner, double interestRate) {
nextAccountNumber++;
accounts.Add(this);
this.accountNumber = nextAccountNumber;
this.interestRate = interestRate;
this.owner = owner;
this.balance = 0.0M;
}
public override bool Equals(Object obj){
if (obj == null)
return false;
else if (this.GetType() != obj.GetType())
return false;
else if (ReferenceEquals(this, obj))
return true;
else if (this.accountNumber == ((BankAccount)obj).accountNumber)
return true;
else return false;
}
public override int GetHashCode(){
return (int)accountNumber ^ (int)(accountNumber >> 32);
// XOR of low orders and high orders bits of accountNumber
// (of type long) according to GetHashCode API recommendation.
}
public decimal Balance () {
return balance;
}
public static long NumberOfAccounts (){
return nextAccountNumber;
}
public static BankAccount GetAccount (long accountNumber){
foreach(BankAccount ba in accounts)
if (ba.accountNumber == accountNumber)
return ba;
return null;
}
public void Withdraw (decimal amount) {
balance -= amount;
}
public void Deposit (decimal amount) {
balance += amount;
}
public void AddInterests() {
balance = balance + balance * (decimal)interestRate;
}
public override string ToString() {
return owner + "'s account, no. " + accountNumber + " holds " +
+ balance + " kroner";
}
} |