An object will work best when it exists in a large application that is populated by other objects. When these objects interact with each other, programmers will be able to gain a high level of functionality, and the behavior of the system will be very complex.