All Topics  
Object-oriented programming

 

   Email Print
   Bookmark   Link






 

Object-oriented programming



 
 
Object-oriented programming (OOP) is a programming paradigm
Programming paradigm

A programming paradigm is a fundamental style of computer programming. . Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation ....
 that uses "objects
Object (computer science)

In its simplest embodiment, an object is an allocated region of storage. Since programming languages use variable#Computer_programmings to access objects, the terms object and variable are often used interchangeably....
" and their interactions to design applications and computer programs. Programming techniques may include features such as information hiding
Information hiding

Information hiding in computer science is the principle of 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....
, data abstraction, encapsulation
Encapsulation (computer science)

In computer science, Encapsulation is the hiding of the internal mechanisms and data structures of a software component behind a defined interface, in such a way that users of the component only need to know what the component does, and cannot make themselves dependent on the details of how it does it....
, modularity, polymorphism
Polymorphism in object-oriented programming

In simple terms, polymorphism is the ability of one type, A, to appear as and be used like another type, B. In strongly typed languages, this usually means that type A somehow derives from type B, or type A implements an interface that represents type B....
, and inheritance
Inheritance (computer science)

In object-oriented programming, inheritance is a way to form new class es using classes that have already been defined. The inheritance concept was invented in 1967 for Simula....
. It was not commonly used in mainstream software application development until the early 1990s. Many modern programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
s now support OOP.

ct-oriented programming can trace its roots to the 1960s.






Discussion
Ask a question about 'Object-oriented programming'
Start a new discussion about 'Object-oriented programming'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Object-oriented programming (OOP) is a programming paradigm
Programming paradigm

A programming paradigm is a fundamental style of computer programming. . Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation ....
 that uses "objects
Object (computer science)

In its simplest embodiment, an object is an allocated region of storage. Since programming languages use variable#Computer_programmings to access objects, the terms object and variable are often used interchangeably....
" and their interactions to design applications and computer programs. Programming techniques may include features such as information hiding
Information hiding

Information hiding in computer science is the principle of 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....
, data abstraction, encapsulation
Encapsulation (computer science)

In computer science, Encapsulation is the hiding of the internal mechanisms and data structures of a software component behind a defined interface, in such a way that users of the component only need to know what the component does, and cannot make themselves dependent on the details of how it does it....
, modularity, polymorphism
Polymorphism in object-oriented programming

In simple terms, polymorphism is the ability of one type, A, to appear as and be used like another type, B. In strongly typed languages, this usually means that type A somehow derives from type B, or type A implements an interface that represents type B....
, and inheritance
Inheritance (computer science)

In object-oriented programming, inheritance is a way to form new class es using classes that have already been defined. The inheritance concept was invented in 1967 for Simula....
. It was not commonly used in mainstream software application development until the early 1990s. Many modern programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
s now support OOP.

Overview

Object-oriented programming can trace its roots to the 1960s. As hardware and software became increasingly complex, quality was often compromised . Researchers studied ways to maintain software quality and developed object-oriented programming in part to address common problems by strongly emphasizing discrete, reusable units of programming logic. The methodology focuses on data rather than processes, with programs composed of self-sufficient modules (objects) each containing all the information needed to manipulate its own data structure. This is in contrast to the existing modular programming which had been dominant for many years that focused on the function of a module ,rather than specifically the data, but equally provided for code reuse
Code reuse

Code reuse, also called software reuse, is the use of existing software, or software knowledge, to build new software....
, and self-sufficient reusable units of programming logic, enabling collaboration
Collaboration

Collaboration is a recursive process where two or more people or organizations work together toward an intersection of common goals ? for example, an intellectual endeavor that is creative in nature?by sharing knowledge, learning and building consensus....
 through the use of linked modules (/subroutine
Subroutine

In computer science, a subroutine or subprogram is a portion of computer code within a larger computer program, which performs a specific task and is relatively independent of the remaining code....
s) . This more conventional approach, which still persists, tends to consider data and behavior separately.

An object-oriented program may thus be viewed as a collection of cooperating objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutine
Subroutine

In computer science, a subroutine or subprogram is a portion of computer code within a larger computer program, which performs a specific task and is relatively independent of the remaining code....
s) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects and can be viewed as an independent 'machine' with a distinct role or responsibility. The actions (or "operators") on these objects are closely associated with the object. For example, the data structures tend to carry their own operators around with them (or at least "inherit" them from a similar object or class).

The Simula
Simula

Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard....
 programming language was the first to introduce the concepts underlying object-oriented programming (objects, classes, subclasses, virtual methods, coroutines, garbage collection, and discrete event simulation) as a superset of Algol
Algol

Algol , known colloquially as the Demon Star, is a bright star in the constellation Perseus . It is one of the best known eclipsing binary, the first such star to be discovered, and also one of the first variable stars to be discovered....
. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. Smalltalk
Smalltalk

Smalltalk is an Object-oriented programming, Type system, reflection computer programming programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human?computer symbiosis." It was designed and created in part for educational use, more so for constructionist learning, at PARC by Al...
 was the first programming language to be called "object-oriented".

History


The concept of objects and instances in computing had its first major breakthrough with the PDP-1
PDP-1

The PDP-1 was the first computer in Digital Equipment Corporation's Programmed Data Processor series and was first produced in 1960. It is famous for being the computer most important in the creation of Hacker culture, at Massachusetts Institute of Technology, Bolt, Beranek and Newman and elsewhere....
 system at MIT which was probably the earliest example of capability based architecture. Another early example was Sketchpad
Sketchpad

Sketchpad was a revolutionary computer program written by Ivan Sutherland in 1963 in the course of his PhD thesis, for which he received the Turing Award in 1988....
 made by Ivan Sutherland
Ivan Sutherland

Ivan Edward Sutherland is an United States computer scientist and Internet pioneer. He received the Turing Award in 1988 for the invention of Sketchpad, an early predecessor to the sort of graphical user interface that has become ubiquitous in personal computers....
 in 1963; however, this was an application and not a programming paradigm
Programming paradigm

A programming paradigm is a fundamental style of computer programming. . Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation ....
. Objects as programming entities were introduced in the 1960s in Simula 67
Simula

Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard....
, a programming language designed for making simulations, created by Ole-Johan Dahl
Ole-Johan Dahl

Ole-Johan Dahl was a Norway computer scientist and is considered to be one of the fathers of Simula and object-oriented programming along with Kristen Nygaard....
 and Kristen Nygaard
Kristen Nygaard

Kristen Nygaard was a Norway mathematician, computer programming language pioneer and politician. He was born in Oslo and died of a myocardial infarction in 2002....
 of the Norwegian Computing Center
Norwegian Computing Center

Norwegian Computing Center is a private, independent, non-profit research foundation founded in 1952. NR carries out contract research and development in the areas of computing and quantitative methods for a broad range of Industry, commerce and Public services organisations in the national and international markets....
 in Oslo
Oslo

is the Capital and largest List of cities in Norway in Norway.Metropolitan Oslo or the Greater Oslo Region makes up the third largest urban area in Scandinavia after Metropolitan Stockholm and Metropolitan Copenhagen....
. (They were working on ship simulations, and were confounded by the combinatorial explosion of how the different attributes from different ships could affect one another. The idea occurred to group the different types of ships into different classes of objects, each class of objects being responsible for defining its own data
DATA

Debt, AIDS, Trade in Africa is a multinational Non-governmental organization founded in January 2002 in London by U2's Bono along with Robert Sargent Shriver III and activists from the Jubilee 2000 Drop the Debt campaign....
 and behavior
Behavior

Behavior or behaviour refers to the action s or reactions of an object or organism, usually in Relational theory to the environment. Behavior can be conscious or Unconscious mind, overt or covert, and voluntary or involuntary....
.) Such an approach was a simple extrapolation of concepts earlier used in analog programming. On analog computers, mapping from real-world phenomena/objects to analog phenomena/objects (and conversely), was (and is) called 'simulation'. Simula not only introduced the notion of classes, but also of instances of classes, which is probably the first explicit use of those notions. The ideas of Simula 67
Simula

Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard....
 influenced many later languages, especially Smalltalk and derivatives of Lisp
Lisp programming language

Lisp is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older....
 and Pascal.

The Smalltalk
Smalltalk

Smalltalk is an Object-oriented programming, Type system, reflection computer programming programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human?computer symbiosis." It was designed and created in part for educational use, more so for constructionist learning, at PARC by Al...
 language, which was developed at Xerox PARC
Xerox PARC

PARC , formerly Xerox PARC, is a research and development company in Palo Alto, California with a distinguished reputation for its contributions to information technology....
 (by Alan Kay
Alan Kay

Alan Curtis Kay is an United States computer scientist, known for his early pioneering work on object-oriented programming and Window graphical user interface design....
 and others) in the 1970s , introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk
Smalltalk

Smalltalk is an Object-oriented programming, Type system, reflection computer programming programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human?computer symbiosis." It was designed and created in part for educational use, more so for constructionist learning, at PARC by Al...
 creators were influenced by the ideas introduced in Simula 67
Simula

Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard....
, but Smalltalk
Smalltalk

Smalltalk is an Object-oriented programming, Type system, reflection computer programming programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human?computer symbiosis." It was designed and created in part for educational use, more so for constructionist learning, at PARC by Al...
 was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67
Simula

Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard....
. Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte magazine
Byte (magazine)

Byte magazine was an influential microcomputer computer magazine in the late 1970s and throughout the 1980s, because of its wide-ranging editorial coverage....
.

In the 1970s, Kay's Smalltalk work had influenced the Lisp community to incorporate object-based techniques which were introduced to developers via the Lisp machine
Lisp machine

Lisp machines were general-purpose computers designed to efficiently run Lisp programming language as their main programming language. In a sense, they were the first commercial single-user Computer workstation....
. In the 1980s, there were a few attempts to design processor architectures which included hardware support for objects in memory but these were not successful. Examples include the Intel iAPX 432
Intel iAPX 432

The Intel iAPX 432 was Intel's first 32-bit microprocessor design, introduced in 1981 as a set of three integrated circuits.The iAPX 432 was intended to be Intel's major design for the 1980s, implementing many advanced computer multitasking and memory management features in hardware, which led them to refer to the design as the Micromainf...
 and the Linn Smart
Linn Products

Linn Products is a Scottish company, based in Glasgow, that manufactures hi-fi, home theater, and multi-room audio systems. It is the manufacturer of the renowned Linn Sondek LP12 turntable....
 Rekursiv
Rekursiv

Rekursiv was a computer processor designed by David M. Harland in the mid-1980s for Linn Smart Computing in Glasgow, Scotland. It was one of the few computer architectures intended to implement object-oriented concepts directly in hardware....
.

Object-oriented programming developed as the dominant programming methodology during the mid-1990s, largely due to the influence of C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
. Its dominance was further enhanced by the rising popularity of graphical user interface
Graphical user interface

A graphical user interface is a type of user interface which allows people to human-computer interaction such as computers; hand-held devices such as MP3 Players, Portable Media Players or Gaming devices; household appliances and office equipment....
s, for which object-oriented programming seems to be well-suited. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X
Mac OS X

Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
, written in Objective C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming
Event-driven programming

In computer programming, event-driven programming or event-based programming is a programming paradigm in which the Program flow is determined by event s — i.e., sensor outputs or user actions or Message passing from other programs or Thread_....
 (although this concept is not limited to OOP). Some feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream.

At ETH Zürich, Niklaus Wirth
Niklaus Wirth

Niklaus Emil Wirth is a Switzerland computer science, best known for designing several programming languages, including Pascal , and for pioneering several classic topics in software engineering....
 and his colleagues had also been investigating such topics as data abstraction and modular programming
Modularity (programming)

Modular programming is a software design technique that increases the extent to which software is composed from separate parts, called modules. Conceptually, modules represent a separation of concerns, and improve maintainability by enforcing logical boundaries between components....
. Modula-2
Modula-2

Modula-2 is a computer programming language invented by Niklaus Wirth at ETH, around 1978, as a successor to his intermediate language Modula. Modula-2 was implemented in 1980 for the Lilith computer, which was commercialized in 1982 by startup company DISER as MC1 and MC2....
 included both, and their succeeding design, Oberon, included a distinctive approach to object orientation, classes, and such. The approach is unlike Smalltalk, and very unlike C++.

Object-oriented features have been added to many existing languages during that time, including Ada, BASIC
BASIC

In computer programming, BASIC is a family of high-level programming languages. The Dartmouth BASIC was designed in 1964 by John George Kemeny and Thomas Eugene Kurtz at Dartmouth College in New Hampshire, United States to provide computer access to non-science students....
, Fortran
Fortran

Fortran is a general-purpose programming language, procedural programming language, imperative programming language programming language that is especially suited to numerical analysis and scientific computing....
, Pascal, and others. Adding these features to languages that were not initially designed for them often led to problems with compatibility and maintainability of code.

In the past decade Java
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
 has emerged in wide use partially because of its similarity to C
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
 and to C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
, but perhaps more importantly because of its implementation using a virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
 that is intended to run code unchanged on many different platforms. This last feature has made it very attractive to larger development shops with heterogeneous environments. Microsoft's .NET
.NET Framework

The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
 initiative has a similar objective and includes/supports several new languages, or variants of older ones, and also uses the idea of a virtual machine, which enables it to run on other platforms besides Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
's (one implementation for Linux and Mac OS X being the Mono Project).

More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python
Python (programming language)

Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python's core syntax and semantics are Minimalism , while the standard library is large and comprehensive....
 and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic .NET
Visual Basic .NET

Visual Basic , formerly called Visual Basic .NET , is an object-oriented programming computer language that can be viewed as an evolution of Microsoft Visual Basic implemented on the .NET Framework....
 (VB.NET) and C#, both designed for Microsoft's .NET
.NET Framework

The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
 platform, and Java, developed by Sun Microsystems
Sun Microsystems

Sun Microsystems, Inc. is a multinational corporation vendor of computers, computer components, computer software, and information technology services, founded on February 24, 1982....
. VB.NET and C# both support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language.

Recently many universities have begun to teach Object-oriented design in introductory computer science classes.

Just as procedural programming
Procedural programming

Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm based upon the concept of the procedure call....
 led to refinements of techniques such as structured programming
Structured programming

Structured programming can be seen as a subset or subdiscipline of procedural programming, one of the major programming paradigms. It is most famous for removing or reducing reliance on the GOTO Statement ....
, modern object-oriented software design methods include refinements such as the use of design patterns
Design pattern (computer science)

In software engineering, a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code ....
, design by contract
Design by contract

Design by Contract or Programming by Contract is an approach to designing computer software. It prescribes that software designers should define Formal methods, precise and verifiable interface specifications for Component-based software engineering#Software component based upon the theory of abstract data types and the conceptual metaph...
, and modeling language
Modeling language

A modeling language is any artificial language that can be used to express information or knowledge or systems in a structure that is defined by a consistent set of rules....
s (such as UML
Unified Modeling Language

Unified Modeling Language is a standardized general-purpose modeling language in the field of software engineering.UML includes a set of graphical notation techniques to create abstract models of specific systems....
).

Fundamental concepts

A survey by Deborah J. Armstrong of nearly 40 years of computing literature identified a number of "quarks", or fundamental concepts, found in the strong majority of definitions of OOP. They are the following: Class
Class (computer science)

In object-oriented programming, a class is a programming language construct that is used as a blueprint to create Object s. This blueprint includes Attribute s and Method s that the created objects all share....
 : Defines the abstract characteristics of a thing (object), including the thing's characteristics (its attributes, fields
Field (computer science)

In computer science, data that has several parts can be divided into fields. For example, a computer may represent today's date as three distinct fields: the day, the month and the year....
 or properties
Property (programming)

In some object-oriented programming programming languages, a property is a special sort of Class member, intermediate between a field and a method ....
) and the thing's behaviors (the things it can do, or methods
Method (computer science)

In object-oriented programming, a method is a subroutine that is exclusively associated either with a class or with an object . Like a procedure in procedural programming languages, a method usually consists of a sequence of statement to perform an action, a set of input parameter to customize those actions, and possibly an output value...
, operations or features). One might say that a class is a blueprint or factory that describes the nature of something. For example, the class Dog would consist of traits shared by all dogs, such as breed and fur color (characteristics), and the ability to bark and sit (behaviors). Classes provide modularity
Modularity (programming)

Modular programming is a software design technique that increases the extent to which software is composed from separate parts, called modules. Conceptually, modules represent a separation of concerns, and improve maintainability by enforcing logical boundaries between components....
 and structure
Structure

Structure is a fundamental and sometimes intangible notion covering the recognition, observation, nature , and stability of patterns and relationships of entities....
 in an object-oriented computer program. A class should typically be recognizable to a non-programmer familiar with the problem domain, meaning that the characteristics of the class should make sense in context. Also, the code for a class should be relatively self-contained (generally using encapsulation
Information hiding

Information hiding in computer science is the principle of 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....
). Collectively, the properties and methods defined by a class are called members. Object
Object (computer science)

In its simplest embodiment, an object is an allocated region of storage. Since programming languages use variable#Computer_programmings to access objects, the terms object and variable are often used interchangeably....
 : A pattern (exemplar) of a class. The class of Dog defines all possible dogs by listing the characteristics and behaviors they can have; the object Lassie is one particular dog, with particular versions of the characteristics. A Dog has fur; Lassie has brown-and-white fur. Instance : One can have an instance of a class or a particular object. The instance is the actual object created at runtime. In programmer jargon, the Lassie object is an instance of the Dog class. The set of values of the attributes of a particular object is called its state
State (computer science)

In computer science and automata theory, a state is a unique configuration of information in a program or machine. It is a concept that occasionally extends into some forms of systems programming such as Lexical analysiss and parsers....
. The object consists of state and the behaviour that's defined in the object's class. Method
Method (computer science)

In object-oriented programming, a method is a subroutine that is exclusively associated either with a class or with an object . Like a procedure in procedural programming languages, a method usually consists of a sequence of statement to perform an action, a set of input parameter to customize those actions, and possibly an output value...
 : An object's abilities. In language, methods (sometimes referred to as "functions") are verbs. Lassie, being a Dog, has the ability to bark. So bark is one of Lassie's methods. She may have other methods as well, for example sit or eat or walk or save_timmy. Within the program, using a method usually affects only one particular object; all Dogs can bark, but you need only one particular dog to do the barking. Message passing
Message passing

Message passing in computer science, is a form of communication used in parallel computing, object-oriented programming, and interprocess communication....
 : "The process by which an object sends data to another object or asks the other object to invoke a method." Also known to some programming languages as interfacing. For example, the object called Breeder may tell the Lassie object to sit by passing a "sit" message which invokes Lassie's "sit" method. The syntax varies between languages, for example: [Lassie sit] in Objective-C. In Java, code-level message passing corresponds to "method calling". Some dynamic languages use double-dispatch or multi-dispatch
Multiple dispatch

Multiple dispatch or multimethods is the feature of some object-oriented programming languages in which a function or method can be dynamically dispatched based on the run time type of more than one of its arguments....
 to find and pass messages. Inheritance
Inheritance (computer science)

In object-oriented programming, inheritance is a way to form new class es using classes that have already been defined. The inheritance concept was invented in 1967 for Simula....
 : "Subclasses" are more specialized versions of a class, which inherit attributes and behaviors from their parent classes, and can introduce their own.
For example, the class Dog might have sub-classes called Collie, Chihuahua, and GoldenRetriever. In this case, Lassie would be an instance of the Collie subclass. Suppose the Dog class defines a method called bark and a property called furColor. Each of its sub-classes (Collie, Chihuahua, and GoldenRetriever) will inherit these members, meaning that the programmer only needs to write the code for them once.
Each subclass can alter its inherited traits. For example, the Collie class might specify that the default furColor for a collie is brown-and-white. The Chihuahua subclass might specify that the bark method produces a high pitch by default. Subclasses can also add new members. The Chihuahua subclass could add a method called tremble. So an individual chihuahua instance would use a high-pitched bark from the Chihuahua subclass, which in turn inherited the usual bark from Dog. The chihuahua object would also have the tremble method, but Lassie would not, because she is a Collie, not a Chihuahua. In fact, inheritance is an "a... is a" relationship between classes, while instantiation is an "is a" relationship between an object and a class: a Collie is a Dog ("a... is a"), but Lassie is a Collie ("is a"). Thus, the object named Lassie has the methods from both classes Collie and Dog.
Multiple inheritance
Multiple inheritance

Multiple inheritance refers to a feature of some object-oriented programming programming languages in which a class can inheritance behaviors and features from more than one superclass ....
 is inheritance from more than one ancestor class, neither of these ancestors being an ancestor of the other. For example, independent classes could define Dogs and Cats, and a Chimera object could be created from these two which inherits all the (multiple) behavior of cats and dogs. This is not always supported, as it can be hard both to implement and to use well.
Abstraction
Abstraction (computer science)

In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time....
 : Abstraction is simplifying complex reality by modelling classes appropriate to the problem, and working at the most appropriate level of inheritance for a given aspect of the problem.
For example, Lassie the Dog may be treated as a Dog much of the time, a Collie when necessary to access Collie-specific attributes or behaviors, and as an Animal (perhaps the parent class of Dog) when counting Timmy's pets.
Abstraction is also achieved through Composition
Object composition

In computer science, object composition is a way to Object association simple object s or data types into more complex ones. Compositions are a critical building block of many basic data structures, including the tagged union, the linked list, and the binary tree, as well as the object used in object-oriented programming....
. For example, a class Car would be made up of an Engine, Gearbox, Steering objects, and many more components. To build the Car class, one does not need to know how the different components work internally, but only how to interface
Interface (computer science)

Interface generally refers to an Abstraction_%28computer_science%29 that an entity provides of itself to the outside. This separates the methods of external communication from internal operation, and allows it to be internally modified without affecting the way outside entities interact with it, as well as provide Polymorphism in object-orien...
 with them, i.e., send messages to them, receive messages from them, and perhaps make the different objects composing the class interact with each other.
Encapsulation
Information hiding

Information hiding in computer science is the principle of 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....
 : Encapsulation conceals the functional details of a class from objects that send messages to it.
For example, the Dog class has a bark method. The code for the bark method defines exactly how a bark happens (e.g., by inhale and then exhale, at a particular pitch and volume). Timmy, Lassie's friend, however, does not need to know exactly how she barks. Encapsulation is achieved by specifying which classes may use the members of an object. The result is that each object exposes to any class a certain interface
Interface (computer science)

Interface generally refers to an Abstraction_%28computer_science%29 that an entity provides of itself to the outside. This separates the methods of external communication from internal operation, and allows it to be internally modified without affecting the way outside entities interact with it, as well as provide Polymorphism in object-orien...
— those members accessible to that class. The reason for encapsulation is to prevent clients of an interface from depending on those parts of the implementation that are likely to change in future, thereby allowing those changes to be made more easily, that is, without changes to clients. For example, an interface can ensure that puppies can only be added to an object of the class Dog by code in that class. Members are often specified as
public, protected or private, determining whether they are available to all classes, sub-classes or only the defining class. Some languages go further: Java
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
 uses the
default access modifier to restrict access also to classes in the same package, C# and VB.NET
Visual Basic .NET

Visual Basic , formerly called Visual Basic .NET , is an object-oriented programming computer language that can be viewed as an evolution of Microsoft Visual Basic implemented on the .NET Framework....
 reserve some members to classes in the same assembly using keywords
internal (C#) or Friend (VB.NET), and Eiffel
Eiffel (programming language)

Eiffel is an International Organization for Standardization-standardized, object-oriented programming language designed to enable programmers to efficiently develop extensible, reusable, reliable software....
 and C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
 allow one to specify which classes may access any member.
Polymorphism : Polymorphism allows the programmer to treat derived class members just like their parent class' members. More precisely, Polymorphism in object-oriented programming
Polymorphism in object-oriented programming

In simple terms, polymorphism is the ability of one type, A, to appear as and be used like another type, B. In strongly typed languages, this usually means that type A somehow derives from type B, or type A implements an interface that represents type B....
 is the ability of objects
Object (computer science)

In its simplest embodiment, an object is an allocated region of storage. Since programming languages use variable#Computer_programmings to access objects, the terms object and variable are often used interchangeably....
 belonging to different data type
Data type

A data type in programming languages is an attribute of a data which tells the computer something about the kind of data it is. This involves setting constraints on the datum, such as what values it can take and what operations may be performed upon it....
s to respond to method calls of methods
Method (computer science)

In object-oriented programming, a method is a subroutine that is exclusively associated either with a class or with an object . Like a procedure in procedural programming languages, a method usually consists of a sequence of statement to perform an action, a set of input parameter to customize those actions, and possibly an output value...
 of the same name, each one according to an appropriate type-specific behavior. One method, or an operator such as +, -, or *, can be abstractly applied in many different situations. If a Dog is commanded to speak, this may elicit a bark. However, if a Pig is commanded to speak, this may elicit an oink. They both inherit speak from Animal, but their derived class methods override the methods of the parent class; this is Overriding Polymorphism. Overloading Polymorphism is the use of one method signature, or one operator such as "+", to perform several different functions depending on the implementation. The "+" operator, for example, may be used to perform integer addition, float addition, list concatenation, or string concatenation. Any two subclasses of Number, such as Integer and Double, are expected to add together properly in an OOP language. The language must therefore overload the addition operator, "+", to work this way. This helps improve code readability. How this is implemented varies from language to language, but most OOP languages support at least some level of overloading polymorphism. Many OOP languages also support Parametric Polymorphism, where code is written without mention of any specific type and thus can be used transparently with any number of new types. Pointers are an example of a simple polymorphic routine that can be used with many different types of objects. Decoupling
Decoupling

The term "decoupling" is used in many different contexts....
 : Decoupling allows for the separation of object interactions from classes and inheritance into distinct layers of abstraction. A common use of decoupling is to polymorphically decouple the encapsulation, which is the practice of using reusable code to prevent discrete code modules from interacting with each other. However, in practice decoupling often involves trade-offs with regard to which patterns of change to favor. The science of measuring these trade-offs in respect to actual change in an objective way is still in its infancy.

Not all of the above concepts are to be found in all object-oriented programming languages, and so object-oriented programming that uses classes is called sometimes class-based programming
Class-based programming

Class-based programming, or more commonly class-orientation, refers to the style of object-oriented programming in which inheritance is achieved by defining classes of objects, as opposed to the objects themselves ....
. In particular, prototype-based programming
Prototype-based programming

Prototype-based programming is a style of object-oriented programming in which class es are not present, and behavior reuse is performed via a process of cloning existing object s that serve as prototypes....
 does not typically use
classes. As a result, a significantly different yet analogous terminology is used to define the concepts of object and instance.

OOP in scripting

In recent years, object-oriented programming has become especially popular in scripting programming languages. Python
Python (programming language)

Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python's core syntax and semantics are Minimalism , while the standard library is large and comprehensive....
 and Ruby are scripting languages built on OOP principles, while Perl
Perl

In computer programming, Perl is a high-level programming language, List of programming languages by category, Interpreter , dynamic programming language....
 and PHP
PHP

PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
 have been adding object oriented features since Perl 5 and PHP 3, and ColdFusion
ColdFusion

ColdFusion is an application server and software language used for Internet application development such as for dynamic web page. In this regard, ColdFusion is a similar product to Microsoft Active Server Pages, JavaServer Pages or PHP....
 since version 6.

The Document Object Model
Document Object Model

The Document Object Model is a platform- and programming language-independent standard object model for representing HTML or XML documents as well as an Application Programming Interface for querying, traversing and manipulating such documents....
 of HTML
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
, XHTML
XHTML

The Extensible Hypertext Markup Language, or XHTML, is a markup language that has the same depth of expression as HTML, but also conforms to XML syntax....
, and XML documents on the Internet have bindings to the popular JavaScript
JavaScript

JavaScript is a scripting language widely used for client-side web development. It was the originating Programming language dialect of the ECMAScript standard....
/ECMAScript
ECMAScript

ECMAScript is a scripting language, standardized by Ecma International in the ECMA-262 Specification . The language is widely used on the World Wide Web, and is often confused with JavaScript or JScript, the two major Programming language dialect from which ECMAScript was standardized....
 language. JavaScript is perhaps the best known prototype-based programming
Prototype-based programming

Prototype-based programming is a style of object-oriented programming in which class es are not present, and behavior reuse is performed via a process of cloning existing object s that serve as prototypes....
 language which employs cloning from prototypes rather than inheriting from a class. Another popular scripting language that exploits this approach is Lua. Earlier versions of ActionScript
ActionScript

ActionScript is a scripting language based on ECMAScript. ActionScript is used primarily for the development of websites and software using the Adobe Flash Player platform , but is also used in some database applications , and in basic robotics, as with the Make Controller Kit....
 (a partial superset of the ECMA-262 R3, otherwise known as ECMAScript) also used a prototype based object model. Later versions of ActionScript
ActionScript

ActionScript is a scripting language based on ECMAScript. ActionScript is used primarily for the development of websites and software using the Adobe Flash Player platform , but is also used in some database applications , and in basic robotics, as with the Make Controller Kit....
 incorporate a combination of classification and prototype based object models based largely on the currently incomplete ECMA-262 R4 specification, which has its roots in an early JavaScript 2 Proposal. Microsoft's JScript.NET also includes a mash-up of object models based on the same proposal, and is also a superset of the ECMA-262 R3 specification.

Problems and patterns

There are a number of programming challenges which a developer encounters regularly in object-oriented design. There are also widely accepted solutions to these problems. The best known are the design patterns codified by Gamma
et al
Design Patterns

Design Patterns: Elements of Reusable Object-Oriented Software is a software engineering book describing recurring solutions to common problems in software design....
, but in a broader sense the term "design patterns
Design pattern (computer science)

In software engineering, a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code ....
" can be used to refer to any general, repeatable solution to a commonly occurring problem in software design. Some of these commonly occurring problems have implications and solutions particular to object-oriented development.

Gang of Four design patterns

Design Patterns: Elements of Reusable Object-Oriented Software is an influential book published in 1995 by Erich Gamma
Erich Gamma

Erich Gamma is a co-author of the influential computer science textbook, Design Patterns . He co-wrote the JUnit software testing framework with Kent Beck and led the design of the Eclipse platform's Java Development Tools ....
, Richard Helm
Richard Helm

Richard Helm is currently with The Boston Consulting Group. He has some degree of fame as one of the "Gang of Four" for being a co-author of the award winning book...
, Ralph Johnson
Ralph Johnson

Ralph E. Johnson is a Research Associate Professor in the Department of Computer Science at the University of Illinois at Urbana-Champaign. He is a co-author of the influential computer science textbook Design Patterns ....
, and John Vlissides
John Vlissides

John Matthew Vlissides was a software scientist known mainly as one of the four authors of the book Design Patterns . Vlissides referred to himself as "#4 of the Gang of Four and wouldn't have it any other way"....
, sometimes casually called the "Gang of Four". Along with exploring the capabilities and pitfalls of object-oriented programming, it describes 23 common programming problems and patterns for solving them. As of April 2007, the book was in its 36th printing. Typical design patterns are as follows:

  • Creational pattern
    Creational pattern

    In software engineering, creational design patterns are design pattern that deal with object lifetime mechanisms, trying to create objects in a manner suitable to the situation....
    s : Factory Pattern
    Factory pattern

    The factory pattern is a creational design pattern used in software development to encapsulate the processes involved in the creation of objects....
    , Abstract Factory Pattern
    Abstract factory pattern

    A software Design pattern , the Abstract Factory Pattern provides a way to encapsulate a group of individual factory object that have a common theme....
    , Singleton Pattern
    Singleton pattern

    In software engineering, the singleton pattern is a design pattern that is used to restrict Instantiation of a class to one object-oriented programming....
    , Builder Pattern
    Builder pattern

    The Builder Pattern is a software Design pattern . The intention is to abstract steps of construction of object so that different implementations of these steps can construct different representations of objects....
    , Prototype Pattern
    Prototype pattern

    A prototype pattern is a creational design pattern used in software development when the type of objects to create is determined by a prototypical instance, which is cloned to produce new objects....
  • Structural pattern
    Structural pattern

    In software engineering, structural design patterns Design pattern that ease the design by identifying a simple way to realize relationships between entities....
    s : Adapter Pattern
    Adapter pattern

    In computer programming, the adapter design pattern translates one Interface for a Class into a compatible interface. An adapter allows classes to work together that normally could not because of incompatible interfaces, by providing its interface to clients while using the original interface....
    , Bridge Pattern
    Bridge pattern

    The bridge pattern is a design pattern used in software engineering which is meant to "decouple an Abstraction from its implementation so that the two can vary independently" ....
    , Composite Pattern
    Composite pattern

    In computer science, the composite pattern is a partitioning design pattern . Composite allows a group of objects to be treated in the same way as a single instance of an object....
    , Decorator Pattern
    Decorator pattern

    In object-oriented programming, the decorator pattern is a design pattern that allows new/additional behaviour to be added to an existing Class dynamically....
    , Facade Pattern
    Façade pattern

    The Facade pattern is a software engineering design pattern commonly used with Object-oriented programming.A facade is an object that provides a simplified interface to a larger body of code, such as a class library....
    , Flyweight Pattern
    Flyweight pattern

    Flyweight is a software design pattern . A Flyweight is an object that minimizes memory use by sharing as much data as possible with other similar objects; it is a way to use objects in large numbers when a simple repeated representation would use an unacceptable amount of memory....
    , Proxy Pattern
    Proxy pattern

    In computer programming, the proxy pattern is a software design pattern.A proxy, in its most general form, is a class functioning as an interface to something else....
  • Behavioral pattern
    Behavioral pattern

    In software engineering, behavioral design patterns are design pattern s that identify common communication patterns between objects and realize these patterns....
    s : Chain of Responsibility Pattern
    Chain-of-responsibility pattern

    In Object oriented design, the chain-of-responsibility pattern is a design pattern consisting of a source of Command pattern and a series of processing objects....
    , Command Pattern
    Command pattern

    In object-oriented programming, the Command pattern is a Design pattern in which an object is used to represent and Information Hiding all the information needed to call a method at a later time....
    , Interpreter Pattern
    Interpreter pattern

    In computer programming, the interpreter pattern is a particular design pattern . The basic idea is to have a Class_ for each symbol in a Domain specific languages, so that the language's abstract syntax tree is an instance of the composite pattern pattern....
    , Iterator Pattern
    Iterator pattern

    In object-oriented programming, the Iterator pattern is a Design pattern in which iterator are used to access the elements of an aggregate object sequentially without exposing its underlying representation....
    , Mediator Pattern
    Mediator pattern

    The mediator pattern, one of the 23 software design pattern described in Design Patterns, provides a unified interface to a set of interfaces in a subsystem....
    , Memento Pattern
    Memento pattern

    The memento pattern is a design pattern that provides the ability to restore an object to its previous state .The memento pattern is used by two objects: the originator and a caretaker....
    , Observer Pattern
    Observer pattern

    The observer pattern is a design pattern in which an Object #Objects_in_object-oriented_programming , called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their Method ....
    , State pattern
    State pattern

    The state pattern is a Behavioral pattern software design pattern, also known as the objects for states pattern. This pattern is used in computer programming to represent the state of an object ....
    , Strategy Pattern
    Strategy pattern

    In computer programming, the strategy pattern is a particular design pattern , whereby algorithms can be selected at runtime.In some programming languages, such as those without Polymorphism , the issues addressed by this pattern are handled through forms of Reflection , such as the native function pointer or function Delegation syntax....
    , Template Pattern, Visitor Pattern
    Visitor pattern

    In object-oriented programming and software engineering, the visitor design pattern is a way of separating an algorithm from an object structure upon which it operates....


Object-orientation and databases

Both object-oriented programming and relational database management systems (RDBMSs) are extremely common in software . Since relational database
Relational database

A relational database is a database that groups data using common attributes found in the data set. The resulting "clumps" of organized data are much easier for people to understand....
s don't store objects directly (though some RDBMSs have object-oriented features to approximate this), there is a general need to bridge the two worlds. There are a number of widely used solutions to this problem. One of the most common is object-relational mapping
Object-relational mapping

Object-relational mapping is a Computer programming technique for converting data between incompatible type systems in relational databases and object-oriented programming languages....
, as found in libraries like Java Data Objects
Java Data Objects

Java Data Objects is a specification of Java platform object Persistence . One of its features is a transparency of the persistent services to the domain model....
 and Ruby on Rails
Ruby on Rails

Ruby on Rails is an open source web application framework for the Ruby . It is often referred to as "Rails" or "RoR". It is intended to be used with an agile software development, which is often utilized by web developers for its suitability for short, client-driven projects....
' ActiveRecord.

There are also object database
Object database

An object database is a database model in which information is represented in the form of Object as used in object-oriented programming.Object databases are generally recommended when there is a business need for high performance processing on complex data....
s which can be used to replace RDBMSs, but these have not been as commercially successful as RDBMSs.

Matching real world

OOP can be used to translate from real-world phenomena to program elements (and vice versa). OOP was even invented for the purpose of physical modeling in the Simula-67 programming language. However, not everyone agrees that direct real-world mapping is facilitated by OOP, or is even a worthy goal; Bertrand Meyer
Bertrand Meyer

Bertrand Meyer is an academic, author, and consultant in the field of computer languages. He created the Eiffel ....
 argues in Object-Oriented Software Construction
Object-Oriented Software Construction

Object-Oriented Software Construction is the title of a book by Bertrand Meyer, widely considered a foundational text of object-oriented programming....
  that a program is not a model of the world but a model of some part of the world; "Reality is a cousin twice removed". At the same time, some principal limitations of OOP had been noted.

However, Niklaus Wirth said of OOP in his paper "Good Ideas through the Looking Glass", "This paradigm closely reflects the structure of systems 'in the real world', and it is therefore well suited to model complex systems with complex behaviours."

Formal definition

There have been several attempts at formalizing the concepts used in object-oriented programming. The following concepts and constructs have been used as interpretations of OOP concepts:

  • coalgebraic datatypes
    F-coalgebra

    In mathematics, specifically in category theory, an -coalgebra for an endofunctoris an object of together with a -morphism.In this sense F-coalgebras are dual to F-algebras....
  • existential quantification
    Existential quantification

    In predicate logic, an existential quantification is the predication of a property or relation to at least one member of the domain. In laymen's terms, it simply refers to something....
     and modules
  • recursion
    Recursion

    Recursion, in mathematics and computer science, is a method of defining Function in which the function being defined is applied within its own definition....
  • records
    Record (computer science)

    In computer science, a record type or struct is a type whose values are records, i.e. aggregates of several items of possibly different types....
     and record extensions
  • F-bounded polymorphism


Attempts to find a consensus definition or theory behind objects have not proven very successful (however, see "Abadi & Cardelli: A Theory of Objects" for formal definitions of many OOP concepts and constructs), and often diverge widely. For example, some definitions focus on mental activities, and some on mere program structuring. One of the simpler definitions is that OOP is the act of using "map" data structures or arrays that can contain functions and pointers to other maps, all with some syntactic and scoping sugar on top. Inheritance can be performed by cloning the maps (sometimes called "prototyping").

OOPS

The term OOPS, which refers to an
object-oriented programming system, is widely used and was common in early development of object-oriented programming.

Criticism

In the academic realm of MIT there is a long tradition of criticising object-oriented programming as a false anunciation. Usually this claim is founded upon the observation that there are no
formal innovations in object-oriented programming -- that the paradigm never brought out a technique or characteristic of programming languages not known to academics by another name. Classes and inheritance are syntactic sugar, whereas polymorphism has long been known to Lisp developers as "dispatching on type." Overall, object-oriented programming, generic programming
Generic programming

Generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters and was pioneered by Ada which appeared in 1983....
, and whatever else the designers of static programming languages add to augment the expressivity
Expressive power

In computer science, the expressive power of a language may refer to:* what can be said in the language * how concisely it can be said.Formal discussions mostly use the term in the first sense, using conciseness elegance for the second sense....
 of these languages have been
formally known to programmers of Lisp for many years. What has been wanting in Lisp is efficiency, and the addition of these techniques to static languages brings their efficiency to the fore.

  • Luca Cardelli
    Luca Cardelli

    Luca Cardelli is an Italian computer scientist who is currently an Assistant Director at Microsoft Research in Cambridge, UK. Cardelli is well-known for his research in type theory and operational semantics....
     wrote a paper titled ''.
  • Richard Stallman
    Richard Stallman

    Richard Matthew Stallman , often abbreviated "rms","'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= Stallman...
     wrote in 1995, "Adding OOP to Emacs
    Emacs

    Emacs is a class of feature-rich text editors, usually characterized by their extensibility. Emacs has, perhaps, more editing commands than any other editor or word processor, numbering over 1,000....
     is not clearly an improvement; I used OOP when working on the Lisp Machine
    Lisp machine

    Lisp machines were general-purpose computers designed to efficiently run Lisp programming language as their main programming language. In a sense, they were the first commercial single-user Computer workstation....
     window systems, and I disagree with the usual view that it is a superior way to program."
  • A study by Potok et al. has shown no significant difference in productivity between OOP and procedural approaches.
  • Christopher J. Date
    Christopher J. Date

    Chris Date is an independent author, lecturer, researcher, and consultant, specializing in relational database technology....
     stated that critical comparison of OOP to other technologies, relational in particular, is difficult because of lack of an agreed-upon and rigorous definition of OOP.
  • Alexander Stepanov
    Alexander Stepanov

    Alexander Stepanov is the key person behind the C++ Standard Template Library, which he started to develop around 1993 while employed at HP Labs....
     suggested that OOP provides a mathematically-limited viewpoint and called it, "almost as much of a hoax as Artificial Intelligence" (possibly referring to the Artificial Intelligence
    Artificial intelligence

    Artificial intelligence is the intelligence of machines and the branch of computer science which aims to create it. Major AI textbooks define the field as "the study and design of intelligent agents,"...
     projects and marketing of the 1980s that are sometimes viewed as overzealous in retrospect).
  • Paul Graham
    Paul Graham

    Paul Graham is a programmer, venture capitalist, and essayist, known for his work on Lisp . He is the author of On Lisp , ANSI Common Lisp , and Hackers & Painters ....
    , a successful web entrepreneur and programming author, has suggested that the purpose of OOP is to act as a herding
    Herding

    Herding is the act of bringing individual animals together into a group , maintaining the group and moving the group from place to place—or any combination of those....
     mechanism which keeps mediocre programmers in mediocre organizations from "doing too much damage". This is at the expense of slowing down productive programmers who know how to use more powerful and more compact techniques.


See also

  • Abstract data type
    Abstract data type

    In computing, an abstract data type is a specification of a set of data and the set of operations that can be performed on the data. Such a data type is abstract in the sense that it is independent of various concrete implementations....
  • Aspect-oriented programming
    Aspect-oriented programming

    Aspect-oriented programming is a programming paradigm that increases Modularity by allowing the separation of concerns cross-cutting concerns, forming a basis for Aspect-oriented software development....
  • Circle-ellipse problem
    Circle-ellipse problem

    The circle-ellipse problem in software development illustrates a number of pitfalls which can arise when using subtype polymorphism in object modelling....
  • Constructor overloading
  • CORBA
    Çorba

    Chorba , shurpa , sorpa , or shorpo is one of various kinds of soup or stew found in national cuisines across Eurasia. The term is likely of Persian language or Turkic languages origin....
  • Design by contract
    Design by contract

    Design by Contract or Programming by Contract is an approach to designing computer software. It prescribes that software designers should define Formal methods, precise and verifiable interface specifications for Component-based software engineering#Software component based upon the theory of abstract data types and the conceptual metaph...
  • DCOM
    Distributed component object model

    Distributed Component Object Model is a proprietary software Microsoft technology for communication among software componentry distributed across networked computers....
  • Dot notation
    Dot notation

    Dot notation can refer to:*Newton's notation for differentiation .*Lewis dot notation also known as Electron dot notation*Dot-decimal notation...
  • GRASP
    GRASP (Object Oriented Design)

    GRASP stands for General Responsibility Assignment Software Patterns . It is used in Object-oriented design, and gives guidelines for assigning responsibility to classes and objects....
  • IDEF4
    IDEF4

    File:118 The Behavior Diagram for methods Implementing Louder.jpgIDEF4, officially named Integrated DEFinition for Object-Oriented Design, is an object-oriented design modeling language for the design of component-based client/server systems....
  • Interface description language
    Interface description language

    An interface description language , or IDL for short, is a specification language used to describe a software component's Interface . IDLs describe an interface in a language-neutral way, enabling communication between software components that do not share a language – for example, between components written in C++ and components...
  • Lepus3
    Lepus3

    File:Composite pattern in LePUS3.pngLePUS3 is an object-oriented, visual Design Description Language, namely a software modelling language and a formal specification language that is suitable primarily for modelling large object-oriented programs and design motifs such as design patterns ....
     an Object-Oriented design description language
  • List of object-oriented programming terms
    List of object-oriented programming terms

    Those words found in object-oriented programming. Some are related to OOP and some not....
  • Object association
    Object association

    In the object-oriented programming paradigm, the word association means union. In object association, one object is formed from the union of two or more other objects....
  • Object database
    Object database

    An object database is a database model in which information is represented in the form of Object as used in object-oriented programming.Object databases are generally recommended when there is a business need for high performance processing on complex data....
  • Object-oriented analysis and design
    Object-oriented analysis and design

    Object-oriented analysis and design is a software engineering approach that models a system as a group of interacting object s. Each object represents some entity of interest in the system being modeled, and is characterised by its class, its state , and its behavior....
  • Object-oriented programming language
    Object-oriented programming language

    An object-oriented programming language is one that allows or encourages, to some degree, object-oriented programming techniques such as Information hiding, Inheritance , module , and Polymorphism ....
  • Object-relational impedance mismatch
    Object-Relational impedance mismatch

    The object-relational impedance mismatch is a set of conceptual and technical difficulties that are often encountered when a relational database management system is being used by a program written in an object-oriented programming language or style; particularly when objects or class definitions are mapped in a straightforward way to databas...
     (and The Third Manifesto
    The Third Manifesto

    The Third Manifesto is Christopher J. Date's and Hugh Darwen's proposal for future relational database management systems that would avoid 'object-relational impedance mismatch' between object-oriented programming languages and RDBMSs by fully supporting all the capabilities of the relational model....
    )
  • Object-relational mapping
    Object-relational mapping

    Object-relational mapping is a Computer programming technique for converting data between incompatible type systems in relational databases and object-oriented programming languages....
  • Procedural programming
    Procedural programming

    Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm based upon the concept of the procedure call....
  • Refactoring
    Refactoring

    Code refactoring is the process of changing a computer program's internal structure without modifying its external Functional requirement behavior or existing functionality....
  • Software componentry


Further reading



| url =http://portal.acm.org/citation.cfm?id=1113040 | accessdate = 2006-08-08 | doi = 10.1145/1113034.1113040 }}


External links