<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        Hi Trygve.<div><br></div><div>> <span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Class MorphicEventDispatcher has 4 methods in 3.10.2 and 16 methods in 5.3.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Finally, we managed to improve modularity of Squeak's event handling by assembling -- once scattered -- methods and logic in a place where it can be found and understood. Of course, the number of methods in a class can go up in the process. What you describe as "additional bloat" is clearly a revelation of already existing complexity.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif"><span style="font-size: 13px">Since the plain number of methods is rather unhelpful to assess code readability, I wonder whether there are better names we can use to guide programmers when exploring MorphicEventDispatcher, its protocols, and methods.</span></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">> </span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Class </span><i style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><span style="font-size: 12pt;line-height: 17.12px">MyMorph>> processEvent: anEvent using: anIgnoredDispatcher </span></i><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">is a regular event handler in 3.10.2. In 5.3, it is a filter, and its execution never stops.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">That's just not true. The dispatcher is still dispatching as it was in Squeak 3.10.2. Event filters were added as a mechanism to tackle the existing mis-use of event listeners. The filter mechanism uses patterns that are already existing in the Squeak system. Yes, there is still room for improvement regarding its modularity.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">***</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">We need better ways to assess the image quality. Phrases such as "unbelievable image bloat", "many thousands of classes", etc. are not helpful at all. Such a perspective ignores incidental vs. accidental complexity. It also ignores the role of tools in such a live and exploratory programming system.</span></div><div><br></div><div>We need better ways to look beyond the source code. Of course, we strive for a clean, compact, understandable system. However, that goal must not only focus on lines of code, number of methods/classes/packages. Programmers do not just read code to gather understanding. They execute code, play around with objects ---> use tools. Those tools show us the names and relationships of all kinds of software artifacts. Those tools enable very concise, task-specific views on rather complex systems. Those tools can help find redundancy, clarify meaning.</div><div><br></div><div>Don't get me wrong. I am always in favor of removing a class or concept if that is not necessary. I do think twice before adding a new class or extending the inheritance tree.</div><div><br></div><div>However, just counting the number of code artifacts is not a helpful metric to move forward. It can only be a first step in a more throrough exploration process.</div><div><br></div><div>Don't give up. Happy Squeaking! :-)</div><div><br></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div>
                                        
                                        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 13.08.2020 09:34:39 schrieb Trygve Reenskaug <trygver@ifi.uio.no>:</p><div style="font-family:Arial,Helvetica,sans-serif">
    <br>
    <span style="mso-spacerun:yes"></span>Dear All,
    <br>
    Imagine that you bought an iPhone 20 years ago. Over the
    years, you have filled it with pictures, contacts, and other
    personal data. You
    now want to upgrade to iPhone SE and find that all your personal
    data are lost
    because there is no way to transfer your data. Very sad.<br>
    <br>
    The same has happened to me with Squeak. The Squeak programs
    I have written over the past 20 years are effectively lost because I
    can’t port
    them to a current version of Squeak. Very sad.<br>
    <br>
    The essence of object orientation is that objects
    collaborate to achieve a goal. I retired 20 years ago and made it my
    task to
    create DCI (Data-Context-Interaction), a programming paradigm that
    merges the
    concepts of class and collaboration. BabyIDE is a non-intrusive
    Squeak program
    that includes a model of DCI as well as tools for programming within
    the
    paradigm. BabyIDE is a kind of Dynabook, a personal computer for
    experts in all
    domains. Its target group could be department managers in business
    and
    industry; they are experts in running their department in
    collaboration with
    other managers. Another target group could be farmers; they are
    experts in
    taking care of their animals. A third target group could be
    homeowners; they
    build expertise in controlling their smart home.<br>
    <br>
    Squeak is more than a programming language; it is a live
    universe of collaborating objects. The shared objects on the web is
    also a
    universe of collaborating objects that Kevin Kelly called a <i>single,
      global
      machine</i>. BabyIDE extends the Squeak image into this global
    machine, making all the
    combined objects available for personal programming as illustrated
    below:<br>
    <br>
    <div align="center"><span style="mso-no-proof:yes"><img src="cid:part1.B8569C86.7E4A26CB@ifi.uio.no" width="497" height="284"></img></span><br>
    </div>
    <br>
    BabyIDE is now running in Squeak 3.10.2, together with a new
    Squeak Reverse Engineering tool. I want to port my programs to
    Squeak 3.5
    to benefit from its improved internet communication facilities. This
    port has
    been pestering me since April, but the overwhelming complexity of
    3.5 has forced
    me to accept defeat. I can’t avoid speculating about the nature of
    Squeak’s current
    target group. It used to be “children of all ages.” Today, it
    neither includes
    children nor old Smalltalk hands like me (I wrote my first Smalltalk
    program in
    1978). Stephen Pope, another veteran who also bemoans what is
    happening to
    Squeak, wrote in a blog: <br>
    <br>
    <blockquote style="min-width: 500px"><i>“</i><i><span style="font-size: 12.0pt;mso-bidi-font-size: 10.0pt;line-height: 107%">The most popular
          systems (Squeak
          and Pharo) both suffer from unbelievable image bloat, with
          many thousands of
          classes, hundreds of root classes, class hierarchies with many
          instance
          variables in the high-level (abstract) classes, and too many
          packages with cute
          but meaningless (to a new-comer) names.”</span></i><br>
      <span style="font-size: 12.0pt;mso-bidi-font-size: 10.0pt;line-height: 107%">
      </span><a href="https://smalltalk.tech.blog/2020/08/10/smalltalks-successor/" moz-do-not-send="true"><span style="font-size: 12.0pt;mso-bidi-font-size: 10.0pt;line-height: 107%">https://smalltalk.tech.blog/2020/08/10/smalltalks-successor/</span></a><br>
    </blockquote>
    I couldn’t agree more. A few examples:<br>
    <br>
    <blockquote style="min-width: 500px"><span style="mso-fareast-font-family:Arial;mso-bidi-font-family:Arial"><span style="mso-list:Ignore">1.<span style="font-style: normal;font-variant: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-language-override: normal;font-feature-settings: normal;font-variation-settings: normal">  
          </span></span></span>Class Object defines 485 methods. This
      means
      that every Squeak object understands at least 485 messages. Most
      of them are irrelevant to
      the problem at hand, but all of them can be part of unexpected
      behavior.  <br>
      <br>
      <span style="mso-fareast-font-family:Arial;mso-bidi-font-family:Arial"><span style="mso-list:Ignore">2.<span style="font-style: normal;font-variant: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-language-override: normal;font-feature-settings: normal;font-variation-settings: normal">  
          </span></span></span>The state of every Morph object is held
      in its
      regular instance variables PLUS any number of undeclared and
      undocumented
      variables in its <i>extension</i>, a Dictionary that may include
      another dictionary
      inside it. The Morph class comment: <i><span style="font-size: 12.0pt;mso-bidi-font-size: 10.0pt;line-height: 107%">“MorphExtension Allows extra
          properties to be stored
          without adding a storage burden to all morphs.”</span></i> I’m
      more concerned about
      the burden put upon the code reader.<br>
      <br>
      <span style="mso-fareast-font-family:Arial;mso-bidi-font-family:Arial"><span style="mso-list:Ignore">3.<span style="font-style: normal;font-variant: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-language-override: normal;font-feature-settings: normal;font-variation-settings: normal">  
          </span></span></span>For me, the final straw was the new
      filtering
      phase added to Squeak’s already complex event handling mechanism.
      Squeak 3.5
      has 208 new methods with ‘filter’ in their name, but there is no
      indication as
      to what they are for and when to use them. The abstract concepts
      of event
      filtering are documented, but there is no documentation on their
      reification
      into concrete code. The complexity of a basically simple mechanism
      has reached
      a new high far beyond the capabilities of my brain.<br>
      <br>
      <span style="mso-fareast-font-family:Arial;mso-bidi-font-family:Arial"><span style="mso-list:Ignore">4.<span style="font-style: normal;font-variant: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-language-override: normal;font-feature-settings: normal;font-variation-settings: normal">  
          </span></span></span>Class MorphicEventDispatcher has 4
      methods in
      3.10.2 and 16 methods in 5.3.<br>
      <br>
      <span style="mso-fareast-font-family:Arial;mso-bidi-font-family:Arial"><span style="mso-list:Ignore">5.<span style="font-style: normal;font-variant: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-language-override: normal;font-feature-settings: normal;font-variation-settings: normal">  
          </span></span></span>Class <i><span style="font-size: 12.0pt;mso-bidi-font-size: 10.0pt;line-height: 107%">MyMorph>>
          processEvent:
          anEvent using: anIgnoredDispatcher</span></i><br>
      is a regular event handler in 3.10.2. In 5.3, it is a filter, and
      its execution
      never stops. <br>
    </blockquote>
    <br>
    After 60 years in programming, 42 of them in Smalltalk, and the
    last 20 in Squeak, I have reached the end of my patience and
    reluctantly have
    to quit Squeak programming. It is truly a sad day.<br>
    <br>
    Have fun and Goodbye, <br>
    --Trygve <br>
    <br>
    
    
    
    
    <div class="moz-signature">-- <br>
      
      
      
      
      <link rel="File-List" href="TrygveSignature-filer/filelist.xml">
      <link rel="themeData" href="TrygveSignature-filer/themedata.thmx">
      <link rel="colorSchemeMapping" href="TrygveSignature-filer/colorschememapping.xml">
      <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:TrackMoves>false</w:TrackMoves>
  <w:TrackFormatting/>
  <w:HyphenationZone>21</w:HyphenationZone>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>NO-BOK</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SplitPgBreakAndParaMark/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="--"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
      <!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
        {mso-style-name:"Table Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        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","serif";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026"/>
</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="WordSection1">
        <p class="MsoNormal"><i style="mso-bidi-font-style:normal"><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New
              Roman";mso-ansi-language: EN-US" lang="EN-US">The essence of object orientation is
              that objects <span class="GramE">collaborate<span style="mso-spacerun:yes">  </span>to</span> achieve a
              goal. </span></i><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
            <span class="SpellE">Trygve</span> <span class="SpellE">Reenskaug</span>      </span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman""><a href="mailto:%20trygver@ifi.uio.no"><span style="mso-ansi-language:
                EN-US" lang="EN-US">mailto: trygver@ifi.uio.no</span></a></span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
            <span class="SpellE">Morgedalsvn</span>.
            5A       </span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times New Roman""><a href="http://folk.uio.no/trygver/"><span style="mso-ansi-language:EN-US" lang="EN-US">http://folk.uio.no/trygver/</span></a></span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
            N-0378
            Oslo             </span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman""><a href="http://fullOO.info"><span style="mso-ansi-language:EN-US" lang="EN-US">http://fullOO.info</span></a></span><span style="font-size: 10.0pt;mso-fareast-font-family: "Times
            New Roman";mso-ansi-language: EN-US" lang="EN-US"><br>
            Norway                     Tel:
            (+47) 468 58 625 </span><span style="font-size: 10.0pt;mso-ansi-language: EN-US" lang="EN-US"><o:p></o:p></span></p>
      </div>
    
  </div></div></blockquote></div>