Citizendia
Your Ad Here

In computer science, the principle of information hiding is the hiding of design decisions in a computer program that are most likely to change, thus protecting other parts of the program from change if the design decision is changed. Computer science (or computing science) is the study and the Science of the theoretical foundations of Information and Computation and their The protection involves providing a stable interface which shields the remainder of the program from the implementation (the details that are most likely to change). Interface generally refers to an abstraction that an entity provides of itself to the outside In modern programming languages, the principle of information hiding manifests itself in a number of ways, including encapsulation (given the separation of concerns) and polymorphism. In Computer science, separation of concerns ( SoC) is the process of breaking a Computer program into distinct features that overlap in functionality as In Computer science, polymorphism is a Programming language feature that allows values of different Data types to be handled using a

The term is also used frequently as a synonym for steganography, the science of hiding a secret message often by mixing it into the noise of another. Steganography is the art and science of writing hidden messages in such a way that no one apart from the sender and intended recipient even realizes there is a hidden message One of the academic conferences devoted to the subject is held annually.

Contents

Uses

The term encapsulation is often used interchangeably with information hiding. Not all agree on the distinctions between the two though one can think of information hiding as being the principle and encapsulation being the technique. A software module hides information by encapsulating the information into a module or other construct which presents an interface. [1]

A common use of information hiding is to hide the physical storage layout for data so that if it is changed, the change is restricted to a small subset of the total program. For example, if a three-dimensional point (x,y,z) is represented in a program with three floating point scalar variables and later, the representation is changed to a single array variable of size three, a module designed with information hiding in mind would protect the remainder of the program from such a change. In Computing, floating point describes a system for numerical representation in which a string of digits (or Bits represents a Real number. In computing a scalar is a Variable or field that can hold only one value at a time as opposed to composite variables like Array, list In Computer science an array is a Data structure consisting of a group of elements that are accessed by indexing.

In object-oriented programming, information hiding reduces software development risk by shifting the code's dependency on an uncertain implementation (design decision) onto a well-defined interface. Object-oriented programming (OOP is a Programming paradigm that uses " objects " and their interactions to design applications and computer programs In Computer science, coupling or dependency is the degree to which each program module relies on each one of the other modules Interface generally refers to an abstraction that an entity provides of itself to the outside Clients of the interface perform operations purely through it so if the implementation changes, the clients do not have to change. The authors of Design Patterns discuss the tension between inheritance and encapsulation at length and state that in their experience, designers overuse inheritance (Gang of Four 1995:20). Design Patterns Elements of Reusable Object-Oriented Software (ISBN 0-201-63361-2 is a Software engineering book describing recurring In Object-oriented programming, inheritance is a way to form new classes (instances of which are called objects using classes that have already been defined The danger is stated as follows:

"Because inheritance exposes a subclass to details of its parent's implementation, it's often said that 'inheritance breaks encapsulation'". In Object-oriented programming, a subclass is a class that inherits some properties from its superclass. (Gang of Four 1995:19)

Example

Information hiding serves as an effective criterion for dividing any piece of equipment, software or hardware, into modules of functionality. Design Patterns Elements of Reusable Object-Oriented Software (ISBN 0-201-63361-2 is a Software engineering book describing recurring For instance a car is a complex piece of equipment. In order to make the design, manufacturing, and maintenance of a car reasonable, the complex piece of equipment is divided into modules with particular interfaces hiding design decisions. Modular programming is a software design technique that increases the extent to which software is composed from separate parts called modules By designing a car in this fashion, a car manufacturer can also offer various options while still having a vehicle which is economical to manufacture.

For instance, a car manufacturer may have a luxury version of the car as well as a standard version. The luxury version comes with a more powerful engine than the standard version. An engine is a mechanical device that produces some form of output from a given input The engineers designing the two different car engines, one for the luxury version and one for the standard version, provide the same interface for both engines. An engineer is a person professionally engaged in a field of Engineering. Both engines fit into the engine bay of the car which is the same between both versions. Both engines fit the same transmission, the same engine mounts, and the same controls. The differences in the engines are that the more powerful luxury version has a larger displacement with a fuel injection system that is programmed to provide the fuel air mixture that the larger displacement engine requires. Engine displacement is defined as the total Volume of air/fuel mixture an Engine can draw in during one complete engine cycle it is normally stated in Cubic Fuel injection is a system for mixing fuel with air in an Internal combustion engine.

In addition to the more powerful engine, the luxury version may also offer other options such as a better radio with CD player, more comfortable seats, a better suspension system with wider tires, and different paint colors. Radio is the transmission of signals by Modulation of electromagnetic waves with frequencies below those of visible Light. A Compact Disc player (often written as compact disc player) or CD player, is an electronic device which plays audio Compact Discs CD players are often Suspension is the term given to the system of springs, Shock absorbers and linkages that connects a Vehicle to its Wheels Suspension This article is about tires used on road Vehicles including pneumatic tires and solid tires. With all of these changes, most of the car is the same between the standard version and the luxury version. The radio with CD player is a module which replaces the standard radio, also a module, in the luxury model. The more comfortable seats are installed into the same seat mounts as the standard types of seats. Whether the seats are leather or plastic, lumbar support or not, doesn't matter.

The engineers design the car by dividing the task up into pieces of work which are assigned to teams. A team comprises a group of people or Animals linked in a common purpose Each team then designs their component to a particular standard or interface which allows the sub-team flexibility in the design of the component while at the same time ensuring that all of the components will fit together. Component-based software engineering (CBSE (also known as Component-Based Development (CBD or Software Componentry) is a branch of the Software engineering Standardization (or standardisation) is the process of developing and agreeing upon technical standards. (See also American system of manufacturing. The American system of Manufacturing involves semi-skilled labor using Machine tools and templates (or jigs ' to make standardized identical )

As can be seen by this example, information hiding provides flexibility. This flexibility allows a programmer to modify functionality of a computer program during normal evolution as the computer program is changed to better fit the needs of users. When a computer program is well designed decomposing the source code solution into modules using the principle of information hiding, evolutionary changes are much easier because the changes typically are local rather than global changes.

Cars provide another example of this in how they interface with drivers. They present a standard interface (pedals, wheel, shifter, signals, gauges, etc. ) on which people are trained and licensed. Thus, people only have to learn to drive a car; they don't need to learn a completely different way of driving every time they drive a new model. (Granted, there are manual and automatic transmissions and other such differences, but on the whole cars maintain a unified interface. A manual transmission (also known as a stick shift or just 'stick' 'straight drive' or standard transmission) is a type of transmission used in An automatic transmission (commonly "AT" or "Auto" is an Automobile Gearbox that can change Gear ratios automatically as the vehicle )

History

The concept of information hiding was first documented in a paper by David Parnas, "On the Criteria to Be Used in Decomposing Systems Into Modules" published in the Communications of the ACM in December, 1972. David Lorge Parnas (born February 10, 1941) is an early pioneer of Software engineering who developed the concept of module design which is the foundation Communications of the ACM ( CACM) is the flagship monthly Journal of the Association for Computing Machinery (ACM Year 1972 ( MCMLXXII) was a Leap year starting on Saturday (link will display full calendar of the Gregorian calendar. Before then, modularity was discussed in Richard Gauthier and Stephen Pont in their 1970 book titled Designing Systems Programs.

See also

References

  1. ^ Encapsulation is not information hiding - Java World. In programming Implementation inheritance is the inheritance of the full functionality of a class, as opposed to the inheritance of an interface, which simply Modular programming is a software design technique that increases the extent to which software is composed from separate parts called modules For inheritance of virtual functions see Virtual function. In the C++ programming language virtual inheritance is a kind of Any change in a Computing system such as new feature or new component is transparent if the system after change adheres to previous external interface as much as Steganography is the art and science of writing hidden messages in such a way that no one apart from the sender and intended recipient even realizes there is a hidden message Service-oriented modeling is a Software development methodology that employs disciplines and a universal language to provide tactical and strategic solutions to enterprise

© 2009 citizendia.org; parts available under the terms of GNU Free Documentation License, from http://en.wikipedia.org
Dapyx Software network: MP3 Explorer | Ebook Manager | Zenithic