Designing a Base Class With Inheritance and Polymorphism In Mind

For the Base Class

  1. Identify the set of operations common to all the derived classes.
  2. Identify which operations are type-independent (these become (pure) virtual to be overridden in derived classes).
  3. Identify the access level (public, private, protected) of each operation.
For a more complete discussion, see "Essential C++", by Stanley Lippman (section 5.4)