Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p><a href="http://C2.Com/cgi/wiki?DefinitionsForOo" rel="noreferrer" title="Definitions for OO on Ward&#39;s WikiWikiWeb">Definitions for Object-Orientation</a> are of course a <a href="http://C2.Com/cgi/wiki?OoBestFeatures" rel="noreferrer" title="OO Best Features on Ward&#39;s WikiWikiWeb">huge can of worms</a>, but here are my 2 cents:</p> <p>To me, Object-Orientation is all about objects that collaborate by sending messages. That is, to me, the single most important trait of an object-oriented language.</p> <p>If I had to put up an ordered list of all the features that an object-oriented language must have, it would look like this:</p> <ol> <li><a href="http://C2.com/cgi/wiki?MessagePassing" rel="noreferrer" title="Message Passing on Ward&#39;s WikiWikiWeb">Objects sending messages to other objects</a></li> <li>Everything is an Object</li> <li><a href="http://C2.Com/cgi/wiki?LateBinding" rel="noreferrer" title="Late Binding on Ward&#39;s WikiWikiWeb">Late Binding</a></li> <li><a href="http://C2.Com/cgi/wiki?PolyMorphism" rel="noreferrer" title="Polymorphism on Ward&#39;s WikiWikiWeb">Subtype Polymorphism</a></li> <li>Inheritance or something similarly expressive, like <a href="http://C2.Com/cgi/wiki?DelegationInheritance" rel="noreferrer" title="Delegation Inheritance on Ward&#39;s WikiWikiWeb">Delegation</a></li> <li><a href="http://C2.com/cgi/wiki?EncapsulationDefinition" rel="noreferrer" title="Encapsulation Definition on Ward&#39;s WikiWikiWeb">Encapsulation</a></li> <li><a href="http://C2.com/cgi/wiki?InformationHiding" rel="noreferrer" title="Information Hiding on Ward&#39;s WikiWikiWeb">Information Hiding</a></li> <li>Abstraction</li> </ol> <p>Obviously, this list is very controversial, since it excludes a great variety of languages that are widely regarded as object-oriented, such as <a href="http://Java.Com/" rel="noreferrer" title="Java Programming Language">Java</a>, <a href="http://MSDN.Microsoft.Com/vcsharp/" rel="noreferrer" title="C# Programming Language">C#</a> and <a href="http://Open-Std.Org/jtc1/sc22/wg21/" rel="noreferrer" title="C++ Programming Language">C++</a>, all of which violate points 1, 2 and 3. However, there is no doubt that those languages allow for object-oriented programming (but so does <a href="http://Open-Std.Org/jtc1/sc22/wg14/" rel="noreferrer" title="C Programming Language">C</a>) and even facilitate it (which C doesn't). So, I have come to call languages that satisfy those requirements "purely object-oriented".</p> <p>As archetypical object-oriented languages I would name <a href="http://Research.Sun.Com/self/" rel="noreferrer" title="Self Homepage at Sun Research">Self</a> and <a href="http://NewspeakLanguage.Org/" rel="noreferrer" title="Newspeak Programming Language">Newspeak</a>.</p> <p>Both satisfy the above-mentioned requirements. Both are inspired by and successors to <a href="http://Smalltalk.Org/" rel="noreferrer" title="Smalltalk Programming Language">Smalltalk</a>, and both actually manage to be "more OO" in some sense. The things that I like about Self and Newspeak are that both take the message sending paradigm to the extreme (Newspeak even more so than Self).</p> <p>In Newspeak, <em>everything</em> is a message send. There are no instance variables, no fields, no attributes, no constants, no class names. They are all emulated by using getters and setters.</p> <p>In Self, there are <em>no classes</em>, only objects. This emphasizes, what OO is <em>really</em> about: objects, not classes.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload