One of the goals of Object-Oriented design is to have low coupling and high cohesion. This means that we want our classes (the building blocks of our program) to rely little on other classes and do what they do well. This approach lends itself well to distributed teams because it turns what was once a problem into a bonus. The multiple teams may have trouble collaborating (due to location issues), which will mean they can really only communicate on the API level. This helps enforce low coupling. Also, each team can focus on their task, developing high cohesion.
Another benefit will be that classes encapsulate the data that they control. This means that one teams changes to class A will not affect the internals of class B.
Classes implemented to run through a simulated environment can be used in the final product. Their will be classes representing the toy, and classes representing environment. The toy classes will receive input from the environment. If this simulated environment will give input to the classes the same way as the real environment would give input to the classes in the toy. This means that the implemented work is just as viable in simulation as it is in production.
Note: Not sure about the one above. Can somebody look at it?
|that sounds like a reasonable answer to me! -ellie|
Another feature of O-O is inheritance. When one toy is really another toy with a new feature, then this new toy can inherit from the old one. It will adopt all of the old behavior, but can use polymorphism to change the parts it needs to for the new behavior. You can think of it like this: The Omega Video Game System accepts addons, and it receives a certain type of input from them that all addons use. The Laser Gun is an addon. The Phaser Range Finder Gun is also an addon. The Phaser behaves much like a Laser Gun, which behaves exactly like an addon. The behavior of the Phaser which is the same as the Laser Gun, will not need to be reimplemented; therefore, the basic addon behavior for devices like the Laser Gun only needs to be developed once!