In Grady Booch's Object Oriented Design with Applications he is discussing the 4 major elements of the Object Model
He defines an abstraction as
An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of objects and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer.
He then goes on to say about the relationship between abstraction and encapsulation
Abstraction and encapsulation are complementary concepts: abstraction focuses upon the outside view of an object and encapsulation - also known as information hiding - prevents clients from seeing its inside view, where the behavior of the abstraction is implemented.
Finally he quotes Liskov
for abstraction to work, implementation must be encapsulated.
To which he adds
In practice, this means that each class must have two parts: an interface and an implementation. The interface of a class captures only its outside view, encompassing our abstraction of the behavior common to all instances of the class. The implementation of a class comprises the representation of the abstraction as well as the mechanisms that achieve the desired behavior.
This seems like a very C-centric viewpoint. Which other languages besides the C dialects split their files into interface and implementations?
When describing the 4 major elements of the Object Model he says
By major, we mean that a model without any one of these elements is not object oriented.
See something wrong or got something to add/change? Fork this git repo and send me a pull request
If you particularly enjoy my work, I appreciate donations given with Gitcoin.co