Foundations of Object-oriented Languages: Types and SemanticsIn recent years, object-oriented programming has emerged as the dominant computerprogramming style, and object-oriented languages such as C++ and Java enjoy wide use in academia andindustry. This text explores the formal underpinnings of object-oriented languages to help thereader understand the fundamental concepts of these languages and the design decisions behindthem.The text begins by analyzing existing object-oriented languages, paying special attention totheir type systems and impediments to expressiveness. It then examines two key features: subtypesand subclasses. After a brief introduction to the lambda calculus, it presents a prototypicalobject-oriented language, SOOL, with a simple type system similar to those of class-basedobject-oriented languages in common use. The text offers proof that the type system is sound byshowing that the semantics preserves typing information. It concludes with a discussion of desirablefeatures, such as parametric polymorphism and a MyType construct, that are not yet included in moststatically typed object-oriented languages. |
What people are saying - Write a review
Բովանդակություն
Introduction | 3 |
Fundamental Concepts of ObjectOriented Languages | 17 |
Type Problems in ObjectOriented Languages | 33 |
Adding Expressiveness to ObjectOriented Languages | 49 |
Understanding Subtypes | 71 |
Type Restrictions on Subclasses | 89 |
Varieties of ObjectOriented Programming Languages | 95 |
Historical Notes and References for Section I | 113 |
A Simple Translational Semantics of Objects and Classes | 201 |
Improved Semantics for Classes | 225 |
SOOCs Type System Is Safe and Sound | 239 |
Busternil Information Hiding and Multiple | 263 |
Historical Notes and References for Section III | 283 |
Adding Bounded Polymorphism to SOOC | 291 |
Adding MyType to ObjectOriented Programming Languages | 299 |
MatchBounded Polymorphism | 331 |
Formal Language Descriptions and the Lambda Calculus | 119 |
The Polymorphic Lambda Calculus | 141 |
Historical Notes and References for Section II | 167 |
SOOC a Simple ObjectOriented Language | 173 |
Dropping Subtyping for Matching | 349 |
Historical Notes and References for Section IV | 363 |
379 | |