Aspects of an Object-Oriented Solution
Data Abstraction & Problem Solving with C++ 5th Edition
Author: Frank M. Carrano
Abstraction separates the purpose of a module from its implementation.
Data abstraction focuses on what the operations do instead of on how you will implement them.
Modularity and abstraction complement each other. Modularity breaks a solution into modules; abstraction specifies each module clearly before you implement it in a programming language.
The principle of information hiding tells you not only to hide such details within a module, but also to ensure that no other module can tamper with these hidden details.
Encapsulation is a technique that hides inner details. Whereas functions encapsulate behavior, objects encapsulate data as well as behavior.