![]() |
| I present to you: the Practical Levels of Abstraction Model |
Most existing models for data abstraction describe the disconnect between physical reality and the representation thereof. Which makes perfect sense in the most general way: machine code is less abstract than assembly language, which is less abstract than uncompiled source code; and one could easily compare different programming languages, arguing that Haskell is more abstract than C++, which is more abstract than Fortran, and so forth.
But what about abstraction in the sense of object-oriented programming?
When it comes to writing a program, there is a trade-off for the overall usefulness of code, between two things: how portable you make your solution, and how integrated you make it, with the concrete details of its specific implementation.
In this article, I'll walk you through the Practical Levels of Abstraction Model—PLAM for short. And then I will teach you to use PLAM as a tool for decision making in the software design process.
