So-o defines a functional layer which adds an object-oriented programming model to a structured programming language. The So-o model is simple, uniform and dynamic, easy to understand. Objects communicate only by sending each other messages. Classes are objects which have the ability to build other objects. Messages are interpreted dynamically.
- Every object is an instance of a class.
- Every class has a superclass with the Object class at the root of the tree.
- Everything between classes and objects happens by sending messages.
- Method lookup follows the inheritance tree.
- A class behaves like an object.
- Not everything is necessarily object-oriented.
So-o blends perfectly within any programming language and lets the designer and the developer switch freely between a functional or an object-oriented approach.