Smalltalk is an object-oriented programming language because everything that a
Smalltalk programmer deals with is an object, from a number to an entire application.
All objects are an instance of a class. Classes serve as templates because they
define the instance variables for all the class variables and methods. Objects have
public and private properties. An object's implementation details are private and are
hidden from other objects. An object's public properties are its messages that it
understands. This make up its interface. The object's private properties are its
variables. Interaction with an object only occurs via these messages to its interface.
All object instances of a given class have a common message interface.