Abstraction is a fundamental principle in some types of computer science. It is a key design aspect of object-oriented programming languages and application programming interfaces. It's also one of the least understood ideas in programming, partially for semantic reasons. Credit I got it from is techopedia