In order to perform an exchange, it is neccessary to have descriptions of the goods to be exchanged. An item for which a description shall be generated has to be 'describable'. In other words, the class has to implement the interface 'Describable'. and therefore to offer a method getDescription(), which returns an object of class Description.
There are two situations involving descriptions while exchanging goods. The first occurs, when a description of an expectation is compared against a description of a promise: The comparison of what one exchanging side expects to what it is offered. The other situation is given, when the received good is checked to suit the description expectation and/or the description of the promise.
There are two possibilities what a Description can look like:
Problem essence: When are two items equal in the desired sense (bit by bit of course doesn't work solely)? And: Since a description has to be serializable, is it addionally necessary to rebuild an structured object from this, or does it suffice to compare the describing serialized streams/strings?