Summary
You can approach the finding of objects somewhat systematically. Establish a framework for searching for candidates by writing a story about your application. In this story, write about the important aspects of your application. The candidates you identify should support various aspects of your story. You can use CRC cards to record your preliminary ideas about these candidates. CRC stands for candidates, responsibilities, collaborators.
Candidates generally represent work performed by your software, things your software affects, information, control and decision making, ways to structure and arrange groups of objects, and representations of things in the world that your software needs to know something about.
Good names for candidates are important. Choose them with care. Choose names that fit within a consistent naming scheme and aren’t too limiting or overly specific. Once you’ve named and described each candidate’s purpose, you can compare and contrast the candidates. For a candidate to stay in the running, you should be able to defend why it is worth keeping.
But your initial ideas are just educated guesses about the kinds of objects that you will need based on the nature of our application and the things that are critical to it. The real test of each candidate’s worth will be when you can assign it specific responsibilities and design it to collaborate with others.