When designing a system for an object- oriented implementation
, you must:
- Identify the participants in the system: The participants in the system can be thought of as the actors participating in a use case.
- Factor them into classes at the right level of granularity
- Define the public interface of each class:
- Establish inheritance hierarchies
- Define the relationships between classes
Experienced developers may be able to build a working solution through this procedure.
However it is almost unheard of for even experienced designers to build a reusable solution on their first attempt.
Before you can build an extensible, reusable system, you are probably going to have to build a prototype to find out where your errors and misconceptions are.
The purpose of the prototype is get the basic functionality off the ground and to see if your "proof of concept" can be enhanced using future iterations.
Once you understand design patterns and have had a mind altering experience with them, you will not ever think about object-oriented design in the same way.
You will have insights that can make your own designs more flexible, modular, and reusable, which is why you're interested in object-oriented technology in the first place.