Abstraction: It is a simplified symbolization of something which is potentially quite complex. It is frequently not essential to know the precise details of how something works, is symbolized or is implemented, since we can still make use of it in its easier form. The object-oriented design frequently comprises finding the right level of abstraction at which to work whenever modeling real-life objects. When the level is too high, then not adequate detail will be captured. When the level is too low, then a program could be more complicated and difficult to build and understand than it requirements to be.