Object-oriented programming is becoming an important technique in the construction of large software systems. Compelling arguments, like reduced maintenance costs, are advanced to encourage its use. To maximise the advantages of such methods, object-oriented programming languages need to be well-designed. When selecting the main features of a programming language, or choosing between alternative designs, formal methods of semantic analysis are invaluable. To date little attention has been given to the formal description of object-oriented languages. This thesis introduces a framework for describing the semantics of object-oriented languages.
To characterise the important features of object-oriented languages, an idealised object-oriented language is described and its semantics specified formally, using the denotational style of VDM. Design alternatives are explored in the same way. Several general principles of object-oriented language design are introduced, and the alternatives reviewed in light of these principles. By choosing apposite semantic domains, the fundamental concepts of object-oriented systems are exposed: two message-passing schemes, based on dynamically-bound procedure call and delegation, are presented; class- and prototype-based systems are described; and special emphasis is given to the different approaches to class-based multiple inheritance. The encapsulation of behaviour within classes is discussed, and suggestions are made as to how this might be best achieved. A variety of object-oriented control mechanisms are also surveyed.
You can get the various parts of this thesis, in PostScript: