Abstraction

  • The isolation of the abstraction from its users

  • Hiding implementation behind Abstration Barrier

  • A program doesn't need to know how the abstraction implemented. So, one can freely change the infrastructure without affecting other parts of the program, as long as it respects the contract between it and users.

  • Encapsulation:

keeping all the data and functions operating on the data related to a composite data type together within an abstraction barrie

  • Data Hiding: Some mechanism to protect the abstraction barrier from being broken.