While has-a abstraction is found even in non-object-oriented languages, the idea of is-a abstraction is particular to OO systems. The idea of is-a abstraction is to take a complex system, and view it as an instance of a more general abstraction. Again, a rule of thumb is to form the english sentence using the phrase ``is a'', and see if it sounds right to your inner ear. Examples are that a car is a wheeled vehicle, which is a means of transprotation. A bicycle is also a wheeled vehicle. A pack horse is a means of transportation.
This type of abstraction allows us to categorize artifacts and information, and thereby make them applicable to many different situations. This ability is the key to creating reusable software components that can be carried from one application to the next.
We will have much more to say on this important topic later, but for now lets return to our investigation of abstraction.