Using a class to encapsulate data and processing
The essential idea of computing is to process data. This is exemplified when we write functions that process data. We looked at this in Chapter 3, Function Definitions.
Often, we'd like to have a number of closely related functions that work with a common data structure. This concept is the heart of object-oriented programming. A class definition will contain a number of methods that all control the internal state of an object.
The unifying concept behind a class definition is often captured as a summary of the responsibilities allocated to the class. How can we do this effectively? What's a good way to design a class?
Getting ready
Let's look at a simple, stateful object—a pair of dice. The context for this is an application that simulates the casino game of Craps. The goal is to use a simulation of results to help invent a better playing strategy. This will save us from losing real money while we try to beat the house edge.
There's an important...