design iteratively as you work through the designyou will bounce back and forth between designing new classes and adding methods to existing classes work on whatever seems to be demanding your attention no one designs program top to bottom in linearsystematic fashion make progress wherever it seems progress needs to be made try out alternatives don' be afraid to scrap an approach that doesn' seem to be working or to follow an idea and see where it leads good design involves lot of trial and error when you look at the programs of othersyou are seeing finished worknot the process they went through to get there if program is well designedit probably is not the result of first try fred brooksa legendary software engineercoined the maxim"plan to throw one away often you won' really know how system should be built until you've already built it the wrong way keep it simple at each step in the designtry to find the simplest approach that will solve the problem at hand don' design in extra complexity until it is clear that more complex approach is needed the next sections will walk you through couple case studies that illustrate aspects of ood once you thoroughly understand these examplesyou will be ready to tackle your own programs and refine your design skills case studyracquetball simulation for our first case studylet' return to the racquetball simulation from you might want to go back and review the program that we developed the first time around using top-down design the crux of the problem is to simulate multiple games of racquetball where the ability of the two opponents is represented by the probability that they win point when they are serving the inputs to the simulation are the probability for player athe probability for player band the number of games to simulate the output is nicely formatted summary of the results in the original version of the programwe ended game when one of the players reached total of points this time aroundlet' also consider shutouts if one player gets to before the other player has scored pointthe game ends our simulation should keep track of both the number of wins for each player and the number of wins that are shutouts candidate objects and methods our first task is to find set of objects that could be useful in solving this problem we need to simulate series of racquetball games between two players and record some statistics about the series of games this short description already suggests one way of dividing up the work in the program we need to do two basic thingssimulate game and keep track of some statistics let' tackle simulation of the game first we can use an object to represent single game of racquetball game will have to keep track of information about two players when we create