Java provides the tools to build flexible models by designing with interfaces. Interfaces have a profound effect on building general objects, but they also increase the complexity of the design.
Please see the initial design slide from the sessions link in the navigation bar. The initial design has a number of problems:
Now go to the slides and check out the sample engineering application. The diagrams and software were written using TogetherJ, which I've downloaded, installed, and run just enough to know it works a bit.