Objects belong to classes and each class shares a common set of messages that they handle. A class is created by sending a special message to a special object and then sending the new class informative messages about itself. Each class of objects has a list of actions that it does to answer a message. If the message can't be answered by an object of one class then there is a specified 'superclass' to which the message is transfered. An object has a list of variables that belong to that object from the time it is created. The answer to a message can involve both reading and writing these values. The variables found in each class of objects is determined by the class of the object so, when a new class of object is defined sets of of hidden variables are defined. One of the primitive data types included is Object. Each Class is also an object in its own right and has a separate set of of variables which are accessable by objects of that class - so for example if we had a class called BOOKS then the number of BOOKS would be a class variable and each Book's author would be an 'instance' variable - associated with the objects not the collection. Definitions: o selector - a symbol used to select an appropriate method o message - a selector and a list of actual arguments o method - the code that answers a message Predefined objects Tiny Smalltalk Is set up with this Class hierarchy Object Class Boolean True true False false File Block [...] [...|...] Method Smalltalk Context UndefinedObject Link Switch Random Symbol #... Magnitude (ordered objects) Number Integer 123 Float 12.34 Char $... Collection List Set Interval IndexedCollection Dictionary Array #(...) ByteArray #[...] String '...' This can be modified and extended and the result saved. The hierarchy can then be reloaded at the start of the next session. The initial setup is described - in Smalltalk in ~dick/cs320/smalltalk/basic.st and ~dick/cs320/smalltalk/unix.st