Can you tell me what is difference between ABSTRACTION and INFORMATION HIDING in software development?
I am confused abstraction hides detail implementation and information hiding abstracts whole details of something.
updated: I found good answer for these three concepts.
From here: http://www.itmweb.com/essay550.htm
- Abstraction: One point of confusion regarding abstraction is its use as both process and an entity. Abstraction, as a process, denotes the extracting of the essential details about an item, or a group of items, while ignoring the inessential details. Abstraction, as an entity, denotes a model, a view, or some other focused representation for an actual item.
- Information Hiding: Its interface or definition was chosen to reveal as little as possible about its inner workings."
- Why confusing: Abstraction can be used as a technique for idenfying which information should be hidden. Confusion can occur when people fail to distinguish between the hiding information, and a technique(e.g., abstraction) that is used to help identify which information is to be hidden.
- Encapsulation: It refers to building a capsule, in the case a conceptual barrier, around some collection of things.
- As a process: Encapsulation means the act of enclosing one or more items within a container.
- As an entity: Encapsulation refers to a package or an enclosure that holds(contains, encloses) one or more items.
- If encapsulation was "the same thing as information hiding," then one might make the argument that "everything that was encapsulated was also hidden." This is not obviously not true.
CONCLUSION: Abstraction, information hiding, and encapsulation are very different, but highly-related, concepts. One could argue that abstraction is a technique that help us identify which specific information should be visible, and which information should be hidden. Encapsulation is then the technique for packaging the information in such a way as to hide what should be hidden, and make visible what is intended to be visible.