Polymorphism, Objects and Abstract Types * Peter W . O'Hearn Department of Computer Science Queen Mary & Westfield Colleg e (ohearn©dcs .gmw .ac .uk ) November 5 . 199 8 1 Introductio n Abstraction is one of the pillars of computer science . Of course . choosing the right concept s to emphasize, and details to suppress, is crucial in all of science, but in computer science th e role of abstraction extends beyond that of sensible methodology . For in computing we have see n the emergence of an array of constructs and methods whose chief purpose is to provide genera l mechanisms for achieving, validating, or enforcing abstraction, rather than being specific instances or examples of it . Among these are programming concepts such as objects . procedures, abstract data types and modules, and mathematical methods such as simulation and logical relations . But what, more precisely, is the "abstraction " achieved by these constructs? In the case o f procedural abstraction, a more or less satisfactory explanation can be given in terms of functions . Much more subtle, and novel, is the idea of data abstraction : A collection of programs or operations conspiring together
/lp/association-for-computing-machinery/polymorphism-objects-and-abstract-types-0AfF195me7