But there is always confusion about Abstraction word.What are your views guys?
In a very sophisticated office or room for instance, things are very cool, inwall cable wiring, wireless access, automatic door with finger print recognition system (door opens when you touch the pad(it recognizes you whether you are authenticated or not)), split AC., but in reality when you unwrap the things, layer by layer you will find a lot of things are working behind to give you the environment the pleases you. That is called Abstraction. Because the real things may not be of your use, they are kept hidden from your eyes.
While problem solving:
High level abstraction what we see the overall problem. Abstraction helps, making things visible wrap by wrap to understand it better instead of going bang bang. This layer by layer opening scheme helps us to understand the problem well before start working on it.
You encapsulate your class well, making member variables private, strongly recommended standard JavaBeans, because you dont want to allow the world to see inside your class. You give the world the API, the interface through which they can talk to your class, its methods, could access the members, could get some computation etc. You don't want, the world could see in what method you are computing the temperature in the method, are you taking it from some other party, or you have any instrument that gives you the value,
but the main objective is to provide correct temperature to the world which has called your method for that reason. The outside world need not to know what exactly the way you compute the things. It needs result. So the inner details are abstraction.