Classes need to be implemented (and ideally, fully unit tested) from least-coupled to most-coupled (see Figure 20.7). For example, possible first classes to implement are either
Payment or
ProductDescription ; next are classes only dependent on the prior implementations
ProductCatalog or
SalesLineItem .