parts of object-oriented programming. The end result is
only as good as the design. Just like the processes of
breaking software into modules or writing algorithms for
complex systems, deciding how to classify the environment
into objects requires having a good understanding of
the application and user environment. The process
revolves around finding a common structure, traits, or even
behavior between the components that exist in the environment.
Just like writing an algorithm should be the first
step for procedural abstraction, identifying the classes
and objects should be done prior to implementing using
C++. The result leads us to cleaner designs with a greater
chance for reusable classes.
There is no formula for devising the perfect set of
classes. In fact, it should be acknowledged that it is an
iterative process. The first attempt will most likely not
represent the best set of classes and objects. In fact, consider
combining classes when new similarities are discovered,
breaking classes into separate classes when a class
is used in a wide variety of ways, or even breaking classes
into a hierarchy of subclasses. Notice, this is not only an