Object-Oriented Programming Language: Difference between revisions

From GM-RKB
Jump to navigation Jump to search
m (Text replacement - " development platform" to " development platform")
Tag: New redirect
 
Line 1: Line 1:
An [[Object-Oriented Programming Language]] is a [[programming language]] that follows a [[programming language paradigm]] that supports an [[object-oriented programming paradigm]] (e.g. with [[software class]]es and [[software object]]s).
#REDIRECT [[Object-Oriented Programming (OOP) Language]]
* <B>Context:</B>
** It can attempt to make every [[program element]] an [[object]], including [[Software Constant]]s or [[Software Function]]s.
* <B>Example(s):</B>
** a [[C++ Programming Language]].
** a [[Java Programming Language]].
** a [[Scala Programming Language]].
* <B>Counter-Example(s):</B>
** a [[Procedural Programming Language]], such as [[C Programming Language|C]].
** a [[Functional Programming Language]].
* <B>See:</B> [[Object-Oriented Program]].
----
----
 
== References ==
 
=== 2013 ===
* http://en.wikipedia.org/wiki/Object-oriented_programming
** '''Object-oriented programming</B> ('''OOP</B>) is a [[programming paradigm]] that represents concepts as “[[Object (computer science)|objects]]&rdquo;  that have [[Field (computer science)|data fields]] (attributes that describe the object) and associated procedures known as [[Method (computer science)|methods]]. Objects, which are usually [[instance (computer science)|instance]]s of [[class (computer science)|class]]es,  are used to [[interact with]]  one another to design applications and computer programs.<ref>{{Cite journal  | last = Kindler | first =  E.  | last2 = Krivy | first2 = I.  | title = Object-Oriented Simulation of systems with sophisticated control  | publisher = International Journal of General Systems  | year = 2011 | month=  | pages = 313–343}}</ref><ref>{{Cite book|last=Lewis|first=John|last2=Loftus|first2= William|title=Java Software Solutions Foundations of Programming Design 6th ed|publisher=Pearson Education Inc.|year=2008|isbn=0-321-53205-8}}, section 1.6 "Object-Oriented Programming"</ref> [[C++]], [[Objective-C]], [[Smalltalk]], [[Java (programming language)|Java]] and [[C Sharp (programming language)|C#]] are examples of object-oriented programming languages.
<references/>
 
<BR>
* ([[2013_TheChallengeofCrossLanguageInte|Chisnall, 2013]]) ⇒ [[David Chisnall]]. ([[2013]]). “The Challenge of Cross-language Interoperability.” In: [[Queue Journal]], 11(10). [http://dx.doi.org/10.1145/2542661.2543971 doi:10.1145/2542661.2543971]
** QUOTE: [[Object-Oriented Programming Language|Object-oriented language]]s 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 construct]]s in the [[language]]?
*** If there are [[class]]es, are they also [[object]]s?
*** Should there be [[zero]] (e.g., [[Go language|Go]]), [[one]] (e.g., [[Smalltalk]], [[Java]], [[JavaScript]], [[Objective-C]]), or many (e.g., [[C++]], [[Self]], [[Simula]]) [[superclass]]es or [[prototype]]s 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 layout|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.
 
=== 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 (programming language)|Scala]], [[Smalltalk]], [[Eiffel (programming language)|Eiffel]], [[Ruby (programming language)|Ruby]], [[JADE (programming language)|JADE]], Emerald.<ref>{{cite web|url=http://www.emeraldprogramminglanguage.org/|title=The Emerald Programming Language|accessdate=2011-02-26}}</ref>
*** Languages designed mainly for OO programming, but with some procedural elements. Examples: [[C++]], [[C Sharp (programming language)|C#]], [[VB.NET]], [[Java (programming language)|Java]], [[Python (programming language)|Python]].  (Note: [[Comparison of C Sharp and Visual Basic .NET|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 programming|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 (programming language)|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 (programming language)|CLU]].
<references/>
----
__NOTOC__
[[Category:Concept]]

Latest revision as of 17:58, 6 May 2020