Abstraction is the process of "extracting the essence" of what we are working with and hiding or discarding what is not important or not relevant in order to simplify life or software. Cartoons are an example: only draw what is necessary to tell the story or convey intended meaning. I like to divide things up into global abstractions and local abstractions. Global abstractions are abstractions that are "static", such that they hang around a while or present only one interface to the world for a given item. Local abstractions, on the other hand, are abstractions that provide a "view" to the user/developer based on situational needs. This is because the proper abstraction for one situation may not be the ideal for another. Some abstractions are like simplified models of things we encounter in life, little robots or "actors" which mimic behaviors needed in the model, while others resemble mathematical notations. The mathematical-like ones try to build equations of abstractions. Needless to say, abstractions come in many shapes and forms. Of course no abstraction is perfect. They are often described as UsefulLie''''''s. ---- From "Science Daily" (http://www.sciencedaily.com/encyclopedia/Object_orientation): : Each object in the system serves as a model of an abstract "actor" that can perform work, report on and change its state, and "communicate" with other objects in the system, without revealing how these features are implemented. Processes, functions or methods may also be so abstracted, and when they are, a variety of techniques are required to extend an abstraction. This, to me, is more consistent EricHodges description of grouping data and code together. ''This, to me, is a good article on the difference between abstraction, information hiding and encapsulation: http://www.itmweb.com/essay550.htm -- EricHodges'' Could we call this the SoftwarePlatonism view of abstraction? ---- See LevelsOfAbstraction, MeasuringAbstraction, HighLevelLanguage, AbstractionDiscussion ---- CategoryAbstraction CategoryDummies