How to differ abstraction from a software component
How can we clearly differ architectural term abstraction开发者_如何学C from a software component, can abstraction lie within a software component?
Abstraction occurs THROUGHOUT software engineering - when you create a function to perform a computation, that's abstraction; when you group data and their operations into a class, that's abstraction; when you modularise your code into separate architectural components, that's abstraction.
The pattern is one of hiding the underlying complexity of a component in a simple interface - making a simple call to a function or procedure is much easier than typing all the required code each time - the function has abstracted that complexity.
That function might be part of a class, which is another layer of abstraction, and so on, up the abstraction ladder.
Take a look at Joel's fantastic article about leaky abstractions, which starts with an intro to the concept
精彩评论