Defining objects and inheritance
The examples given in the previous section should invoke a twinge of shame for those familiar with object-oriented principles, and you should be assured that I felt appropriately embarrassed to share them. It was done, though, to keep the introduction to S3
classes as simple as possible. One issue is that the two classes are closely related, and the functions include a great deal of repeated code. We will now examine how inheritance can be used to avoid this problem.
In this section, we define a base class, GeometricTrial
, and then redefine the routines so that the Die
and Coin
classes can be derived from the base class. In doing so, we can demonstrate how inheritance is implemented in the context of an S3
class. Additionally, we respect the idea of encapsulation, which is the principle that an object of a given class should update its own elements using methods from within the class. We explore this issue in greater detail in the section that follows.
We...