While object-oriented programming makes program components more reusable, in the long run reusing the design of an application is more important than reusing the implementation of any one of its components.