Any computer program built by combining many self-contained software structures called OBJECTS, instead of writing a single long list of instructions. Objects have both properties and behaviour, which makes them powerful tools for modelling events and processes in the real world. Each object possesses its own private data describing its properties (e.g. 'size', 'colour') and also a collection of private subprograms, called METHODS (e.g. 'print', 'display', 'move') for manipulating that data. The set of methods that an object understands is called its INTERFACE, and is the only means by which one object is allowed to interact with other.
Any kind of software can be designed in an object-oriented way, but the technique is particularly effective for programs that closely mimic the real world, such as SIMULATIONS, 3D design and animation, planning and control software and GRAPHICAL USER INTERFACES. By following strict disciplines, object-oriented programs may, in theory, be written in almost any programming language, but it is very much easier to write them in an OBJECT-ORIENTED PROGRAMMING LANGUAGE such as C++ that offers explicit support for the technique.
Properly designed object-oriented programs gain several advantages, owing to the self-contained nature of objects:
a) Such programs can be extended or upgraded by adding new objects or replacing old ones, without the whole program needing to be re-compiled .
b) Altering such programs is less likely to cause unexpected side-effects (I.e. BUGS) because the scope of a change is confined within a single object. A programmer may completely change the internal workings of some object (say to improve its efficiency) but, so long as its interface remains unchanged, the rest of the program should not be aware that anything has altered.
c) Designing object-oriented programs can be a more intuitive process than with traditional programming techniques. Several OBJECT-ORIENTED DESIGN methodologies have been devised to help ascertain which items are important in the real world problem domain (say banks, customers, accounts, and cheques) and then to create equivalent software objects. At risk of oversimplifying, the properties of these objects correspond to the nouns, and their methods correspond to the verbs used in an English (or French, etc) description of the process being modelled - as in 'customer X withdraws amount Y from her account.
d) The fact that objects can have behaviours greatly simplifies many programming tasks. Consider for example a sophisticated WORD PROCESSOR that allows images or charts to be placed within a document. Internally, text, images and charts are represented by different kinds of object, but if each of these understands a method called 'print', then when printing out the document, the main program can simply ask each type of object to print itself without becoming concerned with the details of how this is to be accomplished. This property of objects is called POLYMORPHISM. e) Important objects within an object-oriented program may expose their interfaces to external inspection, enabling an end-user to customize the workings of the program - or to integrate it with another program to perform some special task - using a simple SCRIPTING LANGUAGE and without needing to possess the full SOURCE CODE of the program.
Object-orientation is widely employed in today's commercial software, Microsoft's Office 2000 suite provides a good example: all its constituent applications (Word, Excel, Outlook and PowerPoint) expose their internal object interfaces, allowing them to be 'glued together' to create customized applications using VISUAL BASIC FOR APPLICATIONS as the scripting language.