Break it Down!
Elegance does pay off!
This term spend time with your design before throwing
code at the problem. Each program will be building
inheritance hierarchies – look for commonalities – resist
the urge to hurry (it will only slow you down!)
Break it down!
If the problem you are looking at is too confusing, try to
imagine what the basic operation of the program would be
(divide and conquer), given the existence of “black box”
that handles the hard parts. That “black box” then can be a
class that encapsulates the intended functionality