Notes for `slides1'.  These slides are for a presentation to people
familiar with OO programming.  The terminology you use might need to be
adjusted to their C++ orientedness; `polymorphism' all too soon becomes
`overloading'.

TOM: A LITTLE HISTORY

EXAMPLE CODE 1

 - syntax of defining a class and instances; they accompany each other
 - simple method definition
 - the `int main Indexed' class method starting the program
 - simple method invocations
 - class messaging
 - stdio class, output streams, print and nl methods
 - return statement (expression, really)

PROGRAM COMPONENTS

EXAMPLE COMPILATION

EXAMPLE CODE 2

 - superclass indication
 - inheritance from State class (for instances to be able to carry state)
 - instance variable declaration
 - basic types: `int'
 - id type (too early?)
 - messaging super
 - return value assignment
    - init should return self
 - alloc-init mechanism
    - alloc functionality
 - local variable declaration + initialization

METHODS

 - dynamic binding: method invoked depends on receiver's actual type, not
   its perceived type (i.e. the type indication of variable holding a
   reference to the object).
 - different implementation of lookup: a = send (foo, `int "bar" int', 123)
 - overloading semantics: same type for every object
    - avoid trouble with extensions: avoid ambiguities with a method
      definition caused be the unforeseeable extension of a class.
    - one can not anticipate something one can't observe

OBJECTS

METHOD EXAMPLES

TYPES

ENCAPSULATION

CONSTRUCTING OBJECTS

CONSTRUCTING OBJECTS, CONTINUED

METHOD CONDITIONS

METHOD CONDITIONS, CONTINUED

ARCHIVING

OTHER FEATURES

MAINTAINABILITY

ADVANTAGES

DISADVANTAGES

FUTURE
