• Post Reply Bookmark Topic Watch Topic
  • New Topic

what is 'abstraction ability'?  RSS feed

 
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Would anybody recommend the best book you have read about OO, because during an interview I was told that �abstraction ability and oo are what we care about the most�, so I assume during the next interview I will be tested a lot about my �abstraction ability� and �oo ability�, could anybody give me some suggestion.
 
author
Ranch Hand
Posts: 608
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
This will be a tough one, because abstraction ability isn't something you can cram for. You need some inherent skills to begin with, skills that are then honed by years of experience.

Chances are pretty good that they're looking for you to have some modeling experience. You need to be able to work with others to understand the problem they are trying to address. A big part of understanding the true problem is the ability to abstract out what is really happening, or better yet what should be happening.

The Agile Modeling site has a fair bit of material posted regarding modeling. If you go poking around you can see how we've abstracted various views of applications in the forms of models.

- Scott
 
xie tuo
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Scott Ambler, thank you very much!
 
(instanceof Sidekick)
Ranch Hand
Posts: 8791
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
We could just talk about abstraction. Do any of these quotes give you new ideas or raise new questions?

"The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise." Edsger W. Dijkstra, "The Humble Programmer", October 1972

"A view of a problem that extracts the essential information relevant to a particular purpose and ignores the remainder of the information." -- [IEEE, 1983]

"The essence of abstraction is to extract essential properties while omitting inessential details." -- [Ross et al, 1975]

"Abstraction is a process whereby we identify the important aspects of a phenomenon and ignore its details." -- [Ghezzi et al, 1991]

"Abstraction is generally defined as 'the process of formulating generalised concepts by extracting common qualities from specific examples.'" -- [Blair et al, 1991]

"Abstraction is the selective examination of certain aspects of a problem. The goal of abstraction is to isolate those aspects that are important for some purpose and suppress those aspects that are unimportant." -- [Rumbaugh et al, 1991]

"The meaning [of abstraction] given by the Oxford English Dictionary (OED) closest to the meaning intended here is 'The act of separating in thought'. A better definition might be 'Representing the essential features of something without including background or inessential detail.'" -- [Graham, 1991]

"[A] simplified description, or specification, of a system that emphasizes some of the system's details or properties while suppressing others. A good abstraction is one that emphasizes details that are significant to the reader or user and suppress details that are, at least for the moment, immaterial or diversionary." -- [Shaw, 1984]

"An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of object and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer."
-- [Booch, 1991]

All but the first from: http://www.itmweb.com/essay550.htm
 
Ranch Hand
Posts: 268
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I think this is exactly what you're looking for: Object Mentor - Design Principles.

Start with the Principles and Patterns article and go from there.
 
author
Sheriff
Posts: 14112
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
"Finding Objects" is a book excerpt that might be interesting to you: http://www.awprofessional.com/articles/article.asp?p=30664&rl=1
 
Ranch Hand
Posts: 43
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
To quote Booch in Object-Oriented Analysis and Design with Applications: �An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of objects and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer.�

The term perspective of the viewer needs an explanation. Let us consider a House object, when a banker sees this house, he thinks in terms of the value of the property, opportunity for appreciation, etc whereas when a decorator views it, he thinks in terms of what color the house should be painted, total area to be painted, etc. The same object House can be viewed from different perspectives and can lead to entirely different abstractions by different people.

Booch, Fairsmith, Henderson-Sellers define abstraction as "Any model that includes the most important, essential, or distinguishing aspects of something while suppressing or ignoring less important, immaterial, or diversionary details".

Coad, Fairsmith, Henderson-Sellers, Rumbaugh define abstraction as "The cognitive tool for rationalizing the world by considering only those details necessary for the current purpose".

So, abstraction is about what details we choose to emphasize and what details we choose to ignore. What we choose to emphasize is dictated by the application. It simplifies the things that we look at in the real world. For example, a chair can be made up of different kinds of material, height adjusting knobs, reclining adjustment knobs etc. If every time we looked at the chair, if we had to deal with what material it is made up of, how the height adjustment knobs are designed and other irrelevant details related to our purpose using a chair to sit, our brains will be exhausted. So, the abstraction process simplifies things and allows us to manage complexity during problem solving process.
 
Balachandran Paranjothimani
Ranch Hand
Posts: 43
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Originally posted by Stan James:


"Abstraction is generally defined as 'the process of formulating generalised concepts by extracting common qualities from specific examples.'" -- [Blair et al, 1991]

All but the first from: http://www.itmweb.com/essay550.htm



Here is the explanation for how abstraction is related to Classification and Generalization.

Classification

Classification is the process of finding similarities in a number of things and creating a label to represent the group. This simplifies the communication by enabling us to simply speak or think of the group in terms of label rather than specify an individual thing.

For instance, you observe that in the real world you find things which has pages, a cover, visual content etc. You classify them as Books. Now, you find some other things which has magnetic material enclosed within a case, audio content etc. You classify them as Audio Cassette.

Now, you can find some degree of commonality between these two: they both provide information intended for human usage, they have a certain price etc. You can classify them as Communication Media. So, you can repeatedly apply classification and build a tree. This is called a taxonomy. Taxonomic classification is the act of placing an object or concept into a set or sets of categories, based on the properties of the object or concept.[Wikipedia]

When we talk about classification, we are considering the things, in other words, the real world things are nothing but real world instances of classes in OO terminology. You can think of it as collection of objects.

The label that you assign at the end of the classification process is called as the class in OO terms. So, this classification process can be thought of as (from OO perspective) Class that defines the characteristics of all objects of its type. In other words, class is classification of objects.

Generalization

Concept A is a generalization of concept B if and only if:

* every instance of concept B is also an instance of concept A; and
* there are instances of concept A which are not instances of concept B.

Equivalently, A is a generalization of B if B is a specialization of A.

For instance, Food is a generalization of Apple because every Apple is a Food, and there are foods which are not apples(orange, for instance).

Classification and Generalization are similar in the sense that they both use abstraction by commonality. What we have done seen in the above discussion is essentially abstraction by commonality. The difference between them is that Classification considers objects to find classes whereas generalization considers classes to find base classes. In other words, classification is a relationship between object & type. The generalization is a relationship between types.
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!