A program is a bunch of objects telling each other what to do by sending messages. Each object has its own memory made up of other objects.
Every object has a type.
All objects of a particular type can recieve the same messages. Classes a software element describing an abstract data type and its implementation, a set of objects defined by the lists of operations applicable to these objects and the properties of the operation. Not available in Java. Classes as Modules Classes should be the only modules. Every type should be based on a class.