Abstraction is the process of recognizing and focusing on important characteristics of a situation or object and leaving/filtering out the un-wanted characteristics of that situation or object.Lets take a person as example and see how that person is abstracted in various situations
- A doctor sees (abstracts) the person as patient. The doctor is interested in name, height, weight, age, blood group, previous or existing diseases etc of a person
- An employer sees (abstracts) a person as Employee. The employer is interested in name, age, health, degree of study, work experience etc of a person.
So, you see that Abstraction is the basis for software development. Its through abstraction we define the essential aspects of a system. The process of identifying the abstractions for a given system is called as Modelling (or object modelling).
In the above example, the doctor may not be interested in characteristics of a person on which the employer is interested in and vice versa. Both employer and doctor will not be interested in all the characteristics of a person (like the color of dress the person wears on a particular day, the food the person takes, the relatives of the person etc). But however some elements are common to both doctor and the employer (like name, age, height etc). This common element gives way to generalization. Ie, if we eliminate enough details of an abstraction, it become so generalized that it can be applied wide in range of situations.One good example for such a generalization is a cell. A generalized cell would look like
Though the above generalized cell doesnt look like a brain cell or muscle cell, the above can still be used to represent all cell types that have this common features.
In real world, there are millions of abstractions possible and many are complex in nature. The complexities of abstractions are handled by systematically classifying and generalizing the abstractions based on some pre-defined criteria. This process is known as classification. Classification builds up a hierarchy and its called as abstract hierarchy. You can see an example of an abstract hierarchy below .
So, we see that abstraction is the basis for object oriented programming. Abstraction serves as the foundation for determining the classes for a particular system (which is called object model). But be advised, there is no acid test to decide if the abstraction for a given system is right or wrong. A "person" abstraction for a hospital information system would be different from a person abstraction for a library information system and even with hospital information system, person abstraction may be different for different projects.
Once you have abstracted an object, it can be re-used. It can be modified to suit other situations. As a child you learnt Tri-cycle. You used the experience of learning tri-cycle (handle bar control, pedaling) to learn bicycling. What actually you do to learn bicycling is that you only learn to balance the bicycle while you use the experience of tricycle to use handlebar and pedaling. The same case applies to abstraction as well.
Though abstraction seems to be a simple concept, it’s a challenging task. The reasons are
- There are un-limited numbers of possibilities to define an abstraction for a situation.
- As mentioned earlier, there is no acid test to determine if the abstraction is right or wrong. You end up discussing, arguing with your counter part that yours is best and his is worst…. He does the same thing…
However, these problems are always addressed as you gain experience (which you can gain by reading more books/articles and doing real time projects) in defining the abstraction. Abstraction by itself is a huge and an interesting concept. But, I feel that most of the people, who define classes, do it without knowing what an abstraction is. Most of the times they are right. But doing your work with more knowledge (knowing what you are doing) lets you to enjoy.
Note: Characteristics of a situation or object may be seen (legs of a table) or unseen (smell of a food), felt or unfelt. This means that there is no specific definition for characteristics of a situation or object..
Hope this article gives you an idea about Abstraction. Please feel free to post comments on what do you think about Abstraction.
Want to start your private office arms race right now?
I just got my own USB rocket launcher 🙂 Awsome thing.
Plug into your computer and you got a remote controlled office missile launcher with 360 degrees horizontal and 45 degree vertival rotation with a range of more than 6 meters – which gives you a coverage of 113 square meters round your workplace.
You can get the gadget here: http://tinyurl.com/2qul3c
Check out the video they have on the page.
Cheers
Marko Fando
Great article!
I get really confused when i think of data abstraction ive been trying to learn the basics for a while now.
Thanks
JJ07
Hi
Good post
Good job
keep it up
Sam
Hi,
From last few days I was searching for a good real time example of data abstraction. But not a single one was satisfactory. Finally I got this article on data abstraction. Now my doubt is cleared about data abstraction. Thanks a lot for such a beautiful knowledge transfer.
With Regards,
DJ
Very effective and complete explanation using simple words and no high figh jargon. great article. Thanks a lot , i have been thru dozens of sites, this is the best ever.
Thanks, great article, clears questions.
hi,
This is good and sufficient metter for data abstraction.
i satisfid a lot of with it.
your exampls of abstraction are very attractive.
Thank you .
Hi,
Very useful post.
Thanks for the KT
Keep it up.
tnx to ur very complete explanation…
good job…
tnx again
It is really a nice article. thanks!
Thank you…I could understand Data Abstraction only after reading your post. I was trying other ways to understand it for sometime now. Worth the visit to this blog.
Correct me if I’m wrong. Abstraction means identifying the common functionalities between related objects..
good information but to more understand after the information give code example thank you very much
hai,
it is very useful to us…
i got clear definition about this..
thanks..
Why should not one find this at first after searching Google? Its very helpful for a new one who wants to know about Data Abstraction. Thanks……
great article. explained very clearly.
Yee, this article really helped me, as i have been very confused about data abstraction, but i think you can do more by providing little example for those that may not fully understand by just reading text until they sees some kind of code example, though i`m not that type.
Good Job
best article
Yeah really nice explanation about abstraction…. so can u let know some examples for abstraction in oops concept???? if yes just send it my mail id…… ssukumarmca@yahoo.com
thanks so much!!!!
Teri pan da phuda maal lana pan choda kisi kangeri maa kay putter Baghwan kei maa ki kuss maroo Kali mata kay sath rape karooo
Thanks a lot for such, simple and lucid explanations for “Data Abstraction ” . It really helps,
Thanks again,
Sanjib Bhattacharyya
Thanks alot! You are a talented mentor! I searched google to know data abstraction like anything. But never got a site like this.
Thanks alot man! you rock!!
Thanks a lot.
From many days i am trying to find out the good Explanation.
At last I found out .
Thanx.
“Gud job…really useful article………keep it up…..:):)
thanxs for entire explanation………….
This is really a clear vision of Data Abstraction. Thanx.
i got some what clarified about abstraction…
good post
good job ….. nice article……..thanx…
thanks for this awesome comment! very thankful with this brilliant idea concept in data abstraction it helps me a lot understanding it. keep up the good post! thanks..
kudos to u for providing such real time examples for such complex and huge concepts
This is very nice article….. I am little bit confused about concept. but u clear the idea with the help of real time example ie patient and employee….
thank u….
I am really confuged when any one asked what is data abstraction ,but when i read your blog then i understand what is data abstraction and what is the real time example of data abstraction
thanks u again
I have gone through so many website from last three to four week….you have explain real time example with logical anwer
Thanks So Much…
Perfect Explanation with a real life example, Thank You.
Dbms
it is very good and i hope created by you
Hats off to you. The way you have explained it, its very easy to understand. I searched lot of websites, but no one could explain this better than you. Knowledge we can get from any where, but teaching is an art, every one cannt do that…..:)
It is really a good article!!!
It is so simple and easy to understand with the language you have used. Thanks..
A wonderful article written in simple form.
Thanks Alot
I simple say its nice analysize thing you explain about the abraction!
does it means…abstraction is just like defining the characteristics of a class or modelling an object?…by considering only the essentials details we need for constructing a program…am i right?
you should fist give a definicion, then the examples, you like a big text, but te information is too mixed up.
Is there any difference between abstraction and data abstraction
abstraction is a generalization of data abstraction, its in the article.. apply..
Very clear definition
Thanks mate! Your Article helped me to pass my assignment. Thanks again….. 🙂
very nice explanation thank you very much.
wow so nice so much easy to understand…….. thank you sooooooooo much.
its awesome explanation for my dought thankyou so much
thanks for posting such good article thankyou so much…………….
thanks for giving this knwledge about the Abstrac……….
thank you for posting such a beautifull explaination with examples
thank u,…… for give some clearness
This was a great introduction without being to technical. Very simplistic and practical for the purposes I was looking for
Good post. Simple language efficient conveyance of the concept. Down to earth analogy. Appreciate your efforts for making complex stuff simple for many. Thank you.
Really very informative article 🙂
simple, logical and practical for the beginners…. shorn of unnecessary technical jargon….. look forward to more such posts
Hi i found a nice and easy to understand video on what is data abstraction http://www.youtube.com/watch?v=GSTvJujN4kw&feature=share&list=UUaLEbNxcEsJ4-IMsxcTv1jg
thank u to posting a good explanation
Thank you very much!
Very well explained.
Hi, superb explanation. i understood very clearly. Thank you.
good article,nice explanation
Excellent !!!
This is the best explanation that I have found. I was confused a lot about it. Now it is clear as water to me.Thank you very much for such a simple explanation.
Good. I’ve got what I wanted. Thank U!
very good explanation for the topic i was searching for long………
i was searching some good example about abstraction. finally i got it here.
Thanks.
nice explanation of abstraction….
Good one,working on ooops concept from the last 5 year,but finally got to know whats abstraction is all about.
Thank a ton.
Kris Lim and Guan Li are the power couple at Rancho Bernardo High SChool. They have done so much to break stereotypes and have furthered the gay cause. I respect.
Thank you so much Nami, it really means a lot to be able to feel accepted and free in a place of such hate.
Hi, I love your article and I hope that you keep making more
I keep listening to the news update lecture about getting boundless online grant applications so I have been looking around for the best site to get one. Could you advise me please, where could i acquire some?