<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Hi all,<br>
The answer is yes or no depending on the observer's mindset.<br>
<br>
A Smalltalk object has a unique identity and encapsulates state and
behavior.
Objects in its environment can know its identity and send
messages to
it. There is no restriction; an object can receive any conceivable
message. Inside
the encapsulation, we find instance variables and methods. An object
selects and invokes a method in response to an incoming message. (The <code>doesNotUnderstand:</code>
method is one of them).<br>
<br>
An isolated object by itself is not interesting.<br>
The essence of object orientation is that objects interact to achieve a
task.<br>
A person who wants to understand how a system of objects works, needs
to answer three essential questions: <br>
"What are the objects?" "How are they interconnected?" "What do they
do?"<br>
<br>
<i>Are objects really hard?</i><br>
The answer is YES for a person having a class-based mindset. The class
abstraction describes all the properties of an object that are visible
when it is observed from its inside. Its environment is outside its
encapsulation and is not visible in the class description.  Anybody
trying to answer the above three essential questions by studying a
class is doomed to failure. Objects are really hard for such people.<br>
<br>
<i>Are objects really hard?</i><br>
The answer is NO if the question is asked by a person having an
object-based mindset: <br>
<ul>
  <li>Alan Kay's schoolchildren had no problems with interacting
objects. </li>
  <li>My company developed object-based models for different clients
using role modeling (OOram). Again, there was no problem with the idea
of interacting objects. </li>
  <li>Many developers use CRC cards to elucidate object-based mental
models shared by users and developers alike. Again, CRC cards are easy
to understand. (A note here. CRC originally was short for <i>Class-Responsibility-Collaboration</i>.
This was a misnomer since classes do not collaborate, their instances
do. People think instance even if they say class. Today, the letters
stand for <i>Candidate role-Resonsibility-Collaboration</i>. <small>[Rebecca
Wirfs-Brock]</small>) </li>
  <li>In their book  "Lean System Architecture", Coplien and Brøvig
recommend programmers to work closely with users to elucidate an
object-based system
architecture. <br>
  </li>
  <li>A growing community of programmers understand the DCI paradigm
and
have an object-based mindset. DCI (Data-Context-Interaction) includes
both mental models and actual code. It is interesting to note that many
members of this community started out with a class-based mindset. As
one should expect, changing a mindset can prove very hard. After the
hard
work of the transition, objects became very simple..<br>
  </li>
</ul>
In Smalltalk, anything anybody will ever want to represent in the
system will be represented by an object. There is no alternative. The
image of objects rests on top of the VM. A few of these objects are
special in that
the VM knows the position of certain key properties within the object.
Instances of class Class are such objects where the VM knows how to
find the <code>methodDict </code>and other properties. Examples are
the properties the VM needs to create a new instance. There are
other special objects such as <code>CompiledMethod </code>and <code>SmallInteger</code>.
It is
interesting to note that there is no such thing as a "Smalltalk
language" in the same sense that there is a Java language. There is a
default language for specifying methods in the context of a class. Its
compiler is actually a method in the metaclass. Other classes can
support other languages. VisualWorks had classes where the methods were
written in SQL.<br>
<br>
There is nothing in Smalltalk that makes class-based programming
mandatory. It makes me sad to think of all the opportunities
that have been lost through the past 40 years due to this wholly
arbitrary restriction.<br>
<br>
Cheers<br>
--Trygve<br>
<br>
<br>
<div class="moz-signature">-- <br>
<meta http-equiv="Content-Type" content="text/html; ">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 10">
<meta name="Originator" content="Microsoft Word 10">
<link rel="File-List" href="TrygveSignature-filer/filelist.xml">
<title>-- </title>
<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:HyphenationZone>21</w:HyphenationZone>
  <w:PunctuationKerning/>
  <w:DrawingGridHorizontalSpacing>6 pt</w:DrawingGridHorizontalSpacing>
  <w:DrawingGridVerticalSpacing>6 pt</w:DrawingGridVerticalSpacing>
  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
  <w:DisplayVerticalDrawingGridEvery>3</w:DisplayVerticalDrawingGridEvery>
  <w:UseMarginsForDrawingGridOrigin/>
  <w:DoNotShadeFormData/>
  <w:Compatibility>
   <w:FootnoteLayoutLikeWW8/>
   <w:ShapeLayoutLikeWW8/>
   <w:AlignTablesRowByRow/>
   <w:ForgetLastTabAlignment/>
   <w:LayoutRawTableWidth/>
   <w:LayoutTableRowsApart/>
   <w:UseWord97LineBreakingRules/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]-->
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-parent:"";
        margin:0cm;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:12.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";}
span.SpellE
        {mso-style-name:"";
        mso-spl-e:yes;}
span.GramE
        {mso-style-name:"";
        mso-gram-e:yes;}
 /* Page Definitions */
 @page
        {mso-page-border-surround-header:no;
        mso-page-border-surround-footer:no;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;
        mso-header-margin:35.4pt;
        mso-footer-margin:35.4pt;
        mso-paper-source:0;}
div.Section1
        {page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
        {mso-style-name:"Vanlig tabell";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="2050"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1"/>
 </o:shapelayout></xml><![endif]-->
<div class="Section1">
<p class="MsoNormal" style=""><span class="SpellE"><span
 style="font-size: 10pt; font-family: Arial;" lang="EN-GB">Trygve</span></span><span
 style="font-size: 10pt; font-family: Arial;" lang="EN-GB">
Reenskaug<span style="">       </span>mailto: <span class="SpellE"><a
 class="moz-txt-link-abbreviated" href="mailto:trygver@ifi.uio.no">trygver@ifi.uio.no</a></span></span><span
 style="font-size: 10pt; font-family: Arial;"><o:p></o:p></span></p>
<p class="MsoNormal" style=""><span class="SpellE"><span class="GramE"><span
 style="font-size: 10pt; font-family: Arial;" lang="EN-GB">Morgedalsvn</span></span></span><span
 class="GramE"><span style="font-size: 10pt; font-family: Arial;"
 lang="EN-GB">.</span></span><span
 style="font-size: 10pt; font-family: Arial;" lang="EN-GB"> 5A <span
 style="">        </span> <a class="moz-txt-link-freetext"
 href="http://folk.uio.no/trygver/">http://folk.uio.no/trygver/</a><o:p></o:p></span></p>
<p class="MsoNormal" style=""><span
 style="font-size: 10pt; font-family: Arial;">N-0378
Oslo<span style="">               </span>Tel: (+47) 22 49 57 27<o:p></o:p></span></p>
<p class="MsoNormal" style=""><span class="SpellE"><span
 style="font-size: 10pt; font-family: Arial;">Norway</span></span><span
 style="font-size: 10pt; font-family: Arial;"><o:p></o:p></span></p>
</div>
</div>
</body>
</html>