Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

junit.samples.money
Class MoneyBag  view MoneyBag download MoneyBag.java

java.lang.Object
  extended byjunit.samples.money.MoneyBag
All Implemented Interfaces:
IMoney

class MoneyBag
extends java.lang.Object
implements IMoney

A MoneyBag defers exchange rate conversions. For example adding 12 Swiss Francs to 14 US Dollars is represented as a bag containing the two Monies 12 CHF and 14 USD. Adding another 10 Swiss francs gives a bag with 22 CHF and 14 USD. Due to the deferred exchange rate conversion we can later value a MoneyBag with different exchange rates. A MoneyBag is represented as a list of Monies and provides different constructors to create a MoneyBag.


Field Summary
private  java.util.Vector fMonies
           
 
Constructor Summary
(package private) MoneyBag()
           
 
Method Summary
 IMoney add(IMoney m)
          Adds a money to this money.
 IMoney addMoney(Money m)
          Adds a simple Money to this money.
 IMoney addMoneyBag(MoneyBag s)
          Adds a MoneyBag to this money.
(package private)  void appendBag(MoneyBag aBag)
           
(package private)  void appendMoney(Money aMoney)
           
 void appendTo(MoneyBag m)
          Append this to a MoneyBag m.
private  boolean contains(Money m)
           
(package private) static IMoney create(IMoney m1, IMoney m2)
           
 boolean equals(java.lang.Object anObject)
          Determine whether this Object is semantically equal to another Object.
private  Money findMoney(java.lang.String currency)
           
 int hashCode()
          Get a value that represents this Object, as uniquely as possible within the confines of an int.
 boolean isZero()
          Tests whether this money is zero
 IMoney multiply(int factor)
          Multiplies a money by the given factor.
 IMoney negate()
          Negates this money.
private  IMoney simplify()
           
 IMoney subtract(IMoney m)
          Subtracts a money from this money.
 java.lang.String toString()
          Convert this Object to a human-readable String.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

fMonies

private java.util.Vector fMonies
Constructor Detail

MoneyBag

MoneyBag()
Method Detail

create

static IMoney create(IMoney m1,
                     IMoney m2)

add

public IMoney add(IMoney m)
Description copied from interface: IMoney
Adds a money to this money.

Specified by:
add in interface IMoney

addMoney

public IMoney addMoney(Money m)
Description copied from interface: IMoney
Adds a simple Money to this money. This is a helper method for implementing double dispatch

Specified by:
addMoney in interface IMoney

addMoneyBag

public IMoney addMoneyBag(MoneyBag s)
Description copied from interface: IMoney
Adds a MoneyBag to this money. This is a helper method for implementing double dispatch

Specified by:
addMoneyBag in interface IMoney

appendBag

void appendBag(MoneyBag aBag)

appendMoney

void appendMoney(Money aMoney)

equals

public boolean equals(java.lang.Object anObject)
Description copied from class: java.lang.Object
Determine whether this Object is semantically equal to another Object.

There are some fairly strict requirements on this method which subclasses must follow:

  • It must be transitive. If a.equals(b) and b.equals(c), then a.equals(c) must be true as well.
  • It must be symmetric. a.equals(b) and b.equals(a) must have the same value.
  • It must be reflexive. a.equals(a) must always be true.
  • It must be consistent. Whichever value a.equals(b) returns on the first invocation must be the value returned on all later invocations.
  • a.equals(null) must be false.
  • It must be consistent with hashCode(). That is, a.equals(b) must imply a.hashCode() == b.hashCode(). The reverse is not true; two objects that are not equal may have the same hashcode, but that has the potential to harm hashing performance.

This is typically overridden to throw a java.lang.ClassCastException if the argument is not comparable to the class performing the comparison, but that is not a requirement. It is legal for a.equals(b) to be true even though a.getClass() != b.getClass(). Also, it is typical to never cause a java.lang.NullPointerException.

In general, the Collections API (java.util) use the equals method rather than the == operator to compare objects. However, java.util.IdentityHashMap is an exception to this rule, for its own good reasons.

The default implementation returns this == o.


findMoney

private Money findMoney(java.lang.String currency)

contains

private boolean contains(Money m)

hashCode

public int hashCode()
Description copied from class: java.lang.Object
Get a value that represents this Object, as uniquely as possible within the confines of an int.

There are some requirements on this method which subclasses must follow:

  • Semantic equality implies identical hashcodes. In other words, if a.equals(b) is true, then a.hashCode() == b.hashCode() must be as well. However, the reverse is not necessarily true, and two objects may have the same hashcode without being equal.
  • It must be consistent. Whichever value o.hashCode() returns on the first invocation must be the value returned on all later invocations as long as the object exists. Notice, however, that the result of hashCode may change between separate executions of a Virtual Machine, because it is not invoked on the same object.

Notice that since hashCode is used in java.util.Hashtable and other hashing classes, a poor implementation will degrade the performance of hashing (so don't blindly implement it as returning a constant!). Also, if calculating the hash is time-consuming, a class may consider caching the results.

The default implementation returns System.identityHashCode(this)


isZero

public boolean isZero()
Description copied from interface: IMoney
Tests whether this money is zero

Specified by:
isZero in interface IMoney

multiply

public IMoney multiply(int factor)
Description copied from interface: IMoney
Multiplies a money by the given factor.

Specified by:
multiply in interface IMoney

negate

public IMoney negate()
Description copied from interface: IMoney
Negates this money.

Specified by:
negate in interface IMoney

simplify

private IMoney simplify()

subtract

public IMoney subtract(IMoney m)
Description copied from interface: IMoney
Subtracts a money from this money.

Specified by:
subtract in interface IMoney

toString

public java.lang.String toString()
Description copied from class: java.lang.Object
Convert this Object to a human-readable String. There are no limits placed on how long this String should be or what it should contain. We suggest you make it as intuitive as possible to be able to place it into System.out.println() 55 and such.

It is typical, but not required, to ensure that this method never completes abruptly with a java.lang.RuntimeException.

This method will be called when performing string concatenation with this object. If the result is null, string concatenation will instead use "null".

The default implementation returns getClass().getName() + "@" + Integer.toHexString(hashCode()).


appendTo

public void appendTo(MoneyBag m)
Description copied from interface: IMoney
Append this to a MoneyBag m.

Specified by:
appendTo in interface IMoney