C++ and OOP Terminology

Class and Object
A class is a template (not much unlike struct or union) which defines the data and code members of an object. This class is used to make objects. Objects are the instances or occurances of a class. Objects are created from classes, and the object is the existing thing at runtime (like a variable).

Inheritance is the ability for one object to be based upon another object. An example of this could be a 'Transportation' object. This basic object contains items like passenger capacity and speed. From this object, we may create a new class called car, which also has the ability to keep track of power steering (yes or no). The new car object inherits the code to manage speed from the base class.

Polymorphism is the ability to apply a standard interface to an object. For example, just about every electronic device has an on/off switch which performs the same task. The interface to us is simple and straight forward. What happens inside the electronic device will vary greatly between devices.

What this means to a C++ programmer is that objects have functions assigned to them, and similar objects (or derived objects) will implement the same function name to accomplish the same task, while the mechanics of how it is done may be greatly different.

For example, imaging two objects, one handles input from a keyboard, and the other handles input from a modem. Both objects implement a function called GetLine. This GetLine function does the same job from the application viewpoint, it gets a line from an input device. Our application doesn't have to care if the user is at the keyboard, or across the country via modem. Chances are that our keyboard object and modem object are both derived from a standard 'Input' object or base object. All similar objects derived from the Input object would have to provide the GetLine function.

Encapsulation refers to the ability to tighly bind code and data together. In C++, functions can be defined inside the object, making them just as much a part of the object as the data members of the object. Encapsulation helps promote the idea and concept of a self-sufficient object.