WHAT IS OOPS
"Object-oriented" redirects here. For other meanings of object-oriented, see?Object-orientation .
Object-Oriented Programming?(OOP) is a?programming paradigm ?based on the concept of "objects ", which can contain?data ?and?code . The data is in the form of?fields ?(often known as?attributes ?or?properties), and the code is in the form of procedures (often known as?methods ).
A common feature of objects is that procedures (or methods) are attached to them and can access and modify the object's data fields. In this brand of OOP, there is usually a special name such as?this ?or?self?used to refer to the current object. In OOP, computer programs are designed by making them out of objects that interact with one another.[1] [2] ?OOP languages are diverse, but the most popular ones are?class-based , meaning that objects are?instances ?of?classes , which also determine their?types .
Many of the most widely used programming languages (such as C++, Java,[3] ?Python, etc.) are?multi-paradigm ?and they support object-oriented programming to a greater or lesser degree, typically in combination with?imperative ,?procedural programming .
Significant object-oriented languages include:?Ada ,?ActionScript ,?C++ ,?Common Lisp ,?C# ,?Dart ,?Eiffel ,?Fortran 2003 ,?Haxe ,?Java ,[3] ?JavaScript ,?Kotlin ,?logo ,?MATLAB ,?Objective-C ,?Object Pascal ,?Perl ,?PHP ,?Python ,?R ,?Raku ,?Ruby ,?Scala ,?SIMSCRIPT ,?Simula ,?Smalltalk ,?Swift ,?Vala ?and?Visual Basic.NET .
History[edit ]
Terminology invoking "objects" and "oriented" in the modern sense of object-oriented programming made its first appearance at?MIT ?in the late 1950s and early 1960s. In the environment of the?artificial intelligence ?group, as early as 1960, "object" could refer to identified items (LISP ?atoms) with properties (attributes);[4] [5] ?Alan Kay ?later cited a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[6]
领英推荐
I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages (so messaging came at the very beginning – it took a while to see how to do messaging in a programming language efficiently enough to be useful).
Alan Kay,?[6]
Another early MIT example was?Sketchpad ?created by?Ivan Sutherland ?in 1960–1961; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction.[7] ?Also, an MIT?ALGOL ?version, AED-0, established a direct link between data structures ("plexes", in that dialect) and procedures, prefiguring what were later termed "messages", "methods", and "member functions".[8] [9]
Simula ?introduced important concepts that are today an essential part of object-oriented programming, such as?class ?and?object , inheritance, and?dynamic binding .[10] ?The object-oriented Simula programming language was used mainly by researchers involved with?physical modelling , such as models to study and improve the movement of ships and their content through cargo ports.[10]
In the 1970s, the first version of the?Smalltalk ?programming language was developed at?Xerox PARC ?by?Alan Kay ,?Dan Ingalls ?and?Adele Goldberg . Smalltalk-72 included a programming environment and was?dynamically typed , and at first was?interpreted , not?compiled . Smalltalk became noted for its application of object orientation at the language-level and its graphical development environment. Smalltalk went through various versions and interest in the language grew.[11] ?While?Smalltalk ?was influenced by the ideas introduced in Simula 67 it was designed to be a fully dynamic system in which classes could be created and modified dynamically.[12]
In the 1970s, Smalltalk influenced the?Lisp community ?to incorporate?object-based techniques ?that were introduced to developers via the?Lisp machine . Experimentation with various extensions to Lisp (such as LOOPS and?Flavors ?introducing?multiple inheritance ?and?mixins ) eventually led to the?Common Lisp Object System , which integrates functional programming and object-oriented programming and allows extension via a?Meta-object protocol . In the 1980s, there were a few attempts to design processor architectures that included hardware support for objects in memory but these were not successful. Examples include the?Intel iAPX 432 ?and the?Linn Smart ?Rekursiv .
In 1981, Goldberg edited the August issue of?Byte Magazine , introducing Smalltalk and object-oriented programming to a wider audience. In 1986, the?Association for Computing Machinery ?organised the first?Conference on Object-Oriented Programming, Systems, Languages, and Applications?(OOPSLA), which was unexpectedly attended by 1,000 people. In the mid-1980s?Objective-C ?was developed by?Brad Cox , who had used Smalltalk at?ITT Inc. , and?Bjarne Stroustrup , who had used Simula for his PhD thesis, eventually went to create the object-oriented?C++ .[11] ?In 1985,?Bertrand Meyer ?also produced the first design of the?Eiffel language . Focused on software quality, Eiffel is a purely object-oriented programming language and a notation supporting the entire software lifecycle. Meyer described the Eiffel software development method, based on a small number of key ideas from software engineering and computer science, in?Object-Oriented Software Construction . Essential to the quality focus of Eiffel is Meyer's reliability mechanism,?Design by Contract , which is an integral part of both the method and language.
In the early and mid-1990s object-oriented programming developed as the dominant programming?paradigm ?when programming languages supporting the techniques became widely available. These included Visual?FoxPro ?3.0,[13] [14] [15] ?C++ ,[16] ?and?Delphi [citation needed ]. Its dominance was further enhanced by the rising popularity of?graphical user interfaces , which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the?Cocoa ?frameworks on?Mac OS X , 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 ?(although this concept is not limited to OOP).
At?ETH Zürich ,?Niklaus Wirth ?and his colleagues had also been investigating such topics as?data abstraction ?and?modular programming ?(although this had been in common use since the 1960s or earlier, Wirth has added type checking across module boundaries).?Modula-2 ?(1978) included both, and their succeeding design,?Oberon , included a distinctive approach to object orientation, classes, and such. Inheritance is not obvious in Wirth's design since his nomenclature looks the opposite direction: It is called type extension and the viewpoint is from the parent down to the inheritor.
Object-oriented features have been added to many previously existing languages, including?Ada ,?BASIC ,?Fortran ,?Pascal , and?COBOL . Adding these features to languages that were not initially designed for them often led to problems with compatibility and maintainability of code.
More recently, a number of languages have emerged that are primarily object-oriented, but that are also compatible with procedural methodology. Two such languages are?Python ?and?Ruby . Probably the most commercially important recent object-oriented languages are?Java , developed by?Sun Microsystems , as well as?C# ?and?Visual Basic.NET ?(VB.NET), both designed for Microsoft's?.NET ?platform. Each of these two frameworks shows, in its own way, the benefit of using OOP by creating an abstraction from implementation. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language.