A framework is a collection of
cooperating classes that make up a reusable design solution for a given problem
domain. It typically includes objects that provide default behavior, like
MacApp's menus and windows, and programmers use it by inheriting some of that
default behavior and overriding other behavior so that the framework calls
application code at the appropriate times.
There are three main differences between frameworks and class libraries: