<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
Hi Trygve,<div><br></div><div>I apologize for any misunderstandings here. <span style="font-size: 10pt">I am not an English native speaker. It was not my intent do accuse you of lying.</span></div><div><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">However, there is a difference between a bug report and an unsubstantiated rant. I did read your entire post "A Sad Day" as the latter. Whose mistake that was, I cannot tell now. Neutral, objective bug reports would read different, I suppose.</span></div><div><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">> </span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">I have copied the 2 methods below. The suspicious message is in 5.3: </span><i style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">f</i><i style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">ilteredEvent := child </i><i style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">processEvent: localEvent </i><i style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">using: self. </i><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"> This assignment to a filter seems to be the root of the problem.</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 a bug then. I will investigate that. Morphs should be able to inject their own event dispatcher at any point during the dispatching. You'r observation is correct. We should fix that.</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 MyConnector>> processEvent: anEvent using: anIgnoredDispatcher 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">Reading "</span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">anIgnoredDispatcher" is misleading because that very method #processEvent:using: is actually talking to that "ignored" dispatcher. That's why I said, it's not true. It still is not true at that point in the code.</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">However, you made a valid point as written above. I will investigate that.</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">I am sorry that you had to use uppercase letters in your previous answer. You were screaming at me, I suppose. Well, it can sometimes be hard to form a substantiated, detailed answer to an abstract, high-level claim. I hope you can understand that. Sorry again.</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.</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 post bug reports.</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">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 14.08.2020 11:01:38 schrieb Trygve Reenskaug <trygver@ifi.uio.no>:</p><div style="font-family:Arial,Helvetica,sans-serif">
Hi Marcel,<br>
I am 90, and decided I did not want to spend the rest of my days
with a Squeak I had no hope of understanding. That was the reason
behind my goodbye-message where I was endeavoring to be as concrete
and non-emotional as I possibly could. I then put everything Squeak
in cold storage and picked up my life with other activities.
Unfortunately, you wrote:<br>
<blockquote style="min-width: 500px"> Class MyConnector>> processEvent: anEvent using:
anIgnoredDispatcher is a regular event handler in 3.10.2. In 5.3,
it is a filter, and its execution never stops.<br>
<span style="color: #ff0000">That's just not true.</span> <br>
</blockquote>
I am deeply offended because you accuse me of lying. I reluctantly
had to retrieve Squeak from its storage yesterday and spend most of
the night awake trying to formulate a non-emotional answer. This is
the result:<br>
<br>
START FACTS<br>
My Squeak Reverse Engineering program (SRE) lets me build a diagram
with nodes and connectors. I add new nodes interactively and the
connectors are added automatically. The connectors behave as
expected with the redbutton letting me add breakpoints to a
connector line and the yellowbutton opens a menu as usual. SRE has
been working for many years under Squeak 3.10.2 and has proven very
useful.<br>
<br>
I have copied and compiled the SRE classes into Squeak 5.3. I can
still build a diagram with its nodes and connectors <b>BUT the
image freezes immediately if the cursor touches a connector</b>.
This anomaly is consistently reproducible and is a clear bug. I WAS
NOT LYING!<br>
END FACTS<br>
<br>
I tried to debug the program. It was not easy because the normal
debugging tools do not work in this case. My tentative findings
were:<br>
<blockquote style="min-width: 500px">1) <br>
The first error is a MNU: Your system believes my connector object
is an event, which is isn't.<br>
<br>
2) <br>
<i>MyConnector>> processEvent:using:</i> is called from <i>MorphicEventDispatcher</i>,
differently in the two releases:<br>
3.10.2 MorphicEventDispatcher>>dispatchDefault: anEvent
with: aMorph<br>
5.3 MorphicEventDispatcher>>dispatchEvent: anEvent
toSubmorphsOf: aMorph<br>
</blockquote>
I have copied the 2 methods below. The suspicious message is in 5.3:
<i>f</i><i>ilteredEvent := child </i><i>processEvent: localEvent </i><i>using:
self. </i> This assignment to a filter seems to be the root of the
problem.<br>
<blockquote style="min-width: 500px"><span style=""><b>3.10.2>></b></span><span style=""><b><font size="-1">MorphicEventDispatcher>></font></b><b>dispatchDefault:
anEvent with: aMorph</b></span><br>
<span style=""> "Dispatch the given event. The event will be
passed to the front-most visible submorph that contains the
position wrt. to the event."</span><br>
<span style=""> | localEvt index child morphs inside |</span><br>
<span style=""> "See if we're fully outside aMorphs bounds"</span><br>
<span style=""> (aMorph fullBounds containsPoint: anEvent
position) ifFalse:[^#rejected]. "outside"</span><br>
<span style=""> "Traverse children"</span><br>
<span style=""> index _ 1.</span><br>
<span style=""> morphs _ aMorph submorphs.</span><br>
<span style=""> inside _ false.</span><br>
<span style=""> [index <= morphs size] whileTrue:[</span><br>
<span style=""> child _ morphs at: index.</span><br>
<span style=""> localEvt _ anEvent transformedBy: (child
transformedFrom: aMorph).</span><br>
<span style=""> (<i><b>child processEvent: localEvt using:
self)</b></i> == #rejected ifFalse:[</span><br>
<span style=""> "Not rejected. The event was in some
submorph of the receiver"</span><br>
<span style=""> inside _ true.</span><br>
<span style=""> localEvt wasHandled ifTrue:[anEvent
copyHandlerState: localEvt].</span><br>
<span style=""> index _ morphs size. "break"</span><br>
<span style=""> ].</span><br>
<span style=""> index _ index + 1.</span><br>
<span style=""> ].</span><br>
<span style=""> "Check for being inside the receiver"</span><br>
<span style=""> inside ifFalse:[inside _ aMorph containsPoint:
anEvent position event: anEvent].</span><br>
<span style=""> inside ifTrue:[^aMorph handleEvent: anEvent].</span><br>
<span style=""> ^#rejected</span><br>
</blockquote>
and<br>
<blockquote style="min-width: 500px"><span style=""><font size="-1"><b>5,3>>MorphicEventDispatcher>>dispatchEvent:
anEvent toSubmorphsOf: aMorph</b></font></span><br>
<span style="">
<font size="-1"> "Dispatch the given event to the submorphs
of the given morph. For coordinate transformations, work only
with copies. Either return the given event or a copy of any
filtered event to employ immutability to some extent. ---
PRIVATE!"</font></span><br>
<span style="">
<font size="-1"> | localEvent filteredEvent | </font></span><br>
<span style="">
<font size="-1"> aMorph submorphsDo: [:child |</font></span><br>
<span style="">
<font size="-1"> </font><font size="-1"> localEvent :=
anEvent transformedBy: (child transformedFrom: aMorph).</font></span><br>
<span style="">
<font size="-1"> <i><b> filteredEvent :=</b></i><i><b>
child </b></i></font></span><i><b><span style=""><font size="-1">processEvent: localEvent </font></span></b></i><i><b><span style=""><font size="-1">using: self. "use same dispatcher"</font></span></b></i><br>
<span style="">
<font size="-1"> filteredEvent == #rejected ifFalse: [
"some event or #rejected symbol"</font></span><br>
<span style="">
<font size="-1"> self flag: #overlappingChildren.
"mt: We cannot give two overlapping siblings the chance to
handle the event!" </font></span><br>
<span style="">
<font size="-1"> ^ self nextFromOriginal: anEvent
local: localEvent filtered: filteredEvent]].</font></span><br>
<span style="">
<font size="-1"> ^ #rejected<br>
</font></span></blockquote>
<br>
The 5.3 version assigns the result of MyConnector>>
processEvent:using: to a variable called <i>filteredEvent</i>.
Nothing like that happens in 3.10.2, yet you claim that <i>"The
dispatcher is still dispatching as it was in Squeak 3.10.2"</i>.
Since <i>MyConnector>> processEvent:using:</i> has never
returned an event, the program is doomed to fail.<br>
<br>
To avoid any further problems, I repeat that I am reporting to the
best of my ability what I have experienced with a real program
running in 2 real Squeak releases on real hardware. I also trust
that the 2 methods i have quoted exist in the release images even
though I have copied them from one of my debugging images.<br>
<br>
I hope I can return everything Squeak back to its cold storage and
that it will stay there.<br>
Have fun and goodbye<br>
--Trygve<br>
<br>
<span style=""><br>
</span>
<div class="moz-cite-prefix">On 2020-08-13 09:59, Marcel Taeumel
wrote:<br>
</div>
<blockquote type="cite" cite="mid:Mailbird-0fb9b21d-9b82-4570-9f8b-c20f9a804074@hpi.de" style="min-width: 500px">
<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>
<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
<a class="moz-txt-link-rfc2396E" href="mailto:trygver@ifi.uio.no"><trygver@ifi.uio.no></a>:</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" moz-do-not-send="true" width="497" height="284"></img><!-- </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" moz-do-not-send="true"><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/" moz-do-not-send="true"><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" moz-do-not-send="true"><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>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap=""></pre>
</blockquote>
<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>