>>38
One of the benefits of abstraction and using interfaces to deal with code is the possibility for that code to be reusable outside of that one application. Less abstract and more transparent code tends to be application specific but abstract (OO) code could possibly work across multiple applications.
When you're working in an enterprise and you have multiple projects to work on, it's handy to be able to piece together OO code like toy bricks rather than copy pasting code from other projects and changing them to fit.