Over many years research has addressed the problems of designing and implementing software systems. Supporting tools have been developed, but the increasingly complex demands of applications have kept the need for new tools and paradigms ahead of their supply. The objectoriented paradigm is one weapon in the software engineer’s arsenal, and is seen as a highly beneficial engineering methodology, with growing tool support, whose importance is unlikely to diminish.