The process of picking out (
abstracting) common features of
objects and procedures. A programmer would use abstraction, for example, to note that two functions perform almost the same task and can be combined into a single function. Abstraction is one of the most important techniques in
software engineering and is closely related to two other important techniques --
encapsulation and
information hiding. All three techniques are used to reduce complexity.