Rationale

This chapter is about object-oriented programming languages. It presents an overview of existing languages and discusses their heritage from Simula. Further, it contains a detailed comparison of the three major object-oriented languages; Smalltalk, Eiffel, C++ and Java. It discusses the design dimensions of object-oriented languages and proposes orthogonal dimensions of design, following  [Wegner87]. Also, class-less prototype-based languages are dealt with. These languages use dynamic delegation instead of static inheritance for sharing resources. Finally, the chapter discusses meta-level architectures for object-oriented languages.

Project assignments

As subjects for a paper, you may think of

where X may range over Turbo Pascal, Nexpert Object, or any language that claims to be object-oriented. Features to pay attention to include protection mechanisms and inheritance.

As practical assignments you may think of

where X may be any non object-oriented language. An interesting project would be to develop an object-oriented extension of yacc.