Object-Oriented Programming (OOP) Language
Jump to navigation
Jump to search
An Object-Oriented Programming (OOP) Language is a programming language that follows an object-oriented programming paradigm (e.g. with software classes and software objects).
- Context:
- It can range from being a Compiled OOP Language to being a Dynamic OOP Language.
- It can range from being a Pure OOP Language to being a Multi-Paradigm OOP Language.
- It can attempt to make every program element an object, including Software Constants or Software Functions.
- …
- Example(s):
- Counter-Example(s):
- a Procedural Programming Language, such as C.
- a Functional Programming Language.
- See: Object-Oriented Program.
References
2020
- (Wikipedia, 2020) ⇒ https://en.wikipedia.org/wiki/Object-oriented_programming Retrieved:2020-5-6.
- … Many of the most widely used programming languages (such as C++, Java, 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
Java,
C++,
C#,
Python,
PHP,
JavaScript,
Ruby,
Perl,
Object Pascal,
Objective-C,
Dart,
Swift,
Scala,
Kotlin,
Common Lisp,
MATLAB,
and
Smalltalk.
- … Many of the most widely used programming languages (such as C++, Java, 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
2013
- (Chisnall, 2013) ⇒ David Chisnall. (2013). “The Challenge of Cross-language Interoperability.” In: Queue Journal, 11(10). doi:10.1145/2542661.2543971
- QUOTE: Object-oriented languages bind some notion of code and data together. Alan Kay, who helped develop object-oriented programming while at Xerox PARC, described objects as "simple computers that communicate via message passing." This definition leaves a lot of leeway for different languages to fill in the details:
- Should there be factory objects (classes) as first-class constructs in the language?
- If there are classes, are they also objects?
- Should there be zero (e.g., Go), one (e.g., Smalltalk, Java, JavaScript, Objective-C), or many (e.g., C++, Self, Simula) superclasses or prototypes for an]]object]]?
- Is method lookup tied to the static type system (if there is one)?
- Is the data contained within an object of static or dynamic layout?
- Is it possible to modify method lookup at runtime?
- The question of multiple inheritance is one of the most common areas of focus. Single inheritance is convenient, because it simplifies many aspects of the implementation. Objects can be extended just by appending fields; a cast to the supertype just involves ignoring the end, and a cast to a subtype just involves a check — the pointer values remain the same. Downcasting in C++ requires a complex search of the inheritance graph in the run-time type information via a runtime library function.
- QUOTE: Object-oriented languages bind some notion of code and data together. Alan Kay, who helped develop object-oriented programming while at Xerox PARC, described objects as "simple computers that communicate via message passing." This definition leaves a lot of leeway for different languages to fill in the details:
2011
- http://en.wikipedia.org/wiki/Object-oriented_programming#OOP_languages
- Concerning the degree of object orientation, following distinction can be made:
- Languages called "pure" OO languages, because everything in them is treated consistently as an object, from primitives such as characters and punctuation, all the way up to whole classes, prototypes, blocks, modules, etc. They were designed specifically to facilitate, even enforce, OO methods. Examples: Scala, Smalltalk, Eiffel, Ruby, JADE, Emerald.[1]
- Languages designed mainly for OO programming, but with some procedural elements. Examples: C++, C#, VB.NET, Java, Python. (Note: C# and VB.NET are both exclusively part of Microsoft's .NET Framework development platform and compile to the same intermediate language (IL). Although there are some construct differences, they are minimal and in the context of this grouping, some might consider them part of one language with simply two syntax translation engines).
- Languages that are historically procedural languages, but have been extended with some OO features. Examples: Visual Basic (derived from BASIC), Fortran 2003, Perl, COBOL 2002, PHP, ABAP.
- Languages with most of the features of objects (classes, methods, inheritance, reusability), but in a distinctly original form. Examples: Oberon (Oberon-1 or Oberon-2) and Common Lisp.
- Languages with abstract data type support, but not all features of object-orientation, sometimes called object-based languages. Examples: Modula-2 (with excellent encapsulation and information hiding), Pliant, CLU.
- Concerning the degree of object orientation, following distinction can be made:
- ↑ "The Emerald Programming Language". http://www.emeraldprogramminglanguage.org/. Retrieved 2011-02-26.