Foundations of Object-Oriented Languages

by Bruce

ISBN: 9780262324748 | Copyright 2002

Click here to preview

Instructor Requests

Digital Exam/Desk Copy Print Exam/Desk Copy Ancillaries
Tabs

In recent years, object-oriented programming has emerged as the dominant computer programming style, and object-oriented languages such as C++ and Java enjoy wide use in academia and industry. This text explores the formal underpinnings of object-oriented languages to help the reader understand the fundamental concepts of these languages and the design decisions behind them.The text begins by analyzing existing object-oriented languages, paying special attention to their type systems and impediments to expressiveness. It then examines two key features: subtypes and subclasses. After a brief introduction to the lambda calculus, it presents a prototypical object-oriented language, SOOL, with a simple type system similar to those of class-based object-oriented languages in common use. The text offers proof that the type system is sound by showing that the semantics preserves typing information. It concludes with a discussion of desirable features, such as parametric polymorphism and a MyType construct, that are not yet included in most statically typed object-oriented languages.

Expand/Collapse All
List of Figures (pg. xi)
Preface (pg. xv)
Part I: Type Problems in Object-Oriented Languages (pg. 1)
1 Introduction (pg. 3)
2 Fundamental Concepts of Object-Oriented Languages (pg. 17)
3 Type Problems in Object-Oriented Languages (pg. 33)
4 Adding Expressiveness to Object-Oriented Languages (pg. 49)
5 Understanding Subtypes (pg. 71)
6 Type Restrictions on Subclasses (pg. 89)
7 Varieties of Object-Oriented Programming Languages (pg. 95)
Historical Notes and References for Section I (pg. 113)
Part II: Foundations: The Lambda Calculus (pg. 117)
8 Formal Language Descriptions and the Lambda Calculus (pg. 119)
9 The Polymorphic Lambda Calculus (pg. 141)
Historical Notes and References for Section II (pg. 167)
Part III: Formal Descriptions of Object-Oriented Languages (pg. 171)
10 SOOL, a Simple Object-Oriented Language (pg. 173)
11 A Simple Translational Semantics of Objects and Classes (pg. 201)
12 Improved Semantics for Classes (pg. 225)
13 SOOL’s Type System Is Safe (and Sound) (pg. 239)
14 Completing SOOL: super, nil, Information Hiding, and Multiple Inheritance (pg. 263)
Historical Notes and References for Section III (pg. 283)
Part IV: Extending Simple Object-Oriented Languages (pg. 289)
15 Adding Bounded Polymorphism to SOOL (pg. 291)
16 Adding MyType to Object-Oriented Programming Languages (pg. 299)
17 Match-Bounded Polymorphism (pg. 331)
18 Simplifying: Dropping Subtyping for Matching (pg. 349)
Historical Notes and References for Section IV (pg. 363)
Bibliography (pg. 367)
Index (pg. 379)
List of Figures (pg. xi)
Preface (pg. xv)
Part I: Type Problems in Object-Oriented Languages (pg. 1)
1 Introduction (pg. 3)
2 Fundamental Concepts of Object-Oriented Languages (pg. 17)
3 Type Problems in Object-Oriented Languages (pg. 33)
4 Adding Expressiveness to Object-Oriented Languages (pg. 49)
5 Understanding Subtypes (pg. 71)
6 Type Restrictions on Subclasses (pg. 89)
7 Varieties of Object-Oriented Programming Languages (pg. 95)
Historical Notes and References for Section I (pg. 113)
Part II: Foundations: The Lambda Calculus (pg. 117)
8 Formal Language Descriptions and the Lambda Calculus (pg. 119)
9 The Polymorphic Lambda Calculus (pg. 141)
Historical Notes and References for Section II (pg. 167)
Part III: Formal Descriptions of Object-Oriented Languages (pg. 171)
10 SOOL, a Simple Object-Oriented Language (pg. 173)
11 A Simple Translational Semantics of Objects and Classes (pg. 201)
12 Improved Semantics for Classes (pg. 225)
13 SOOL’s Type System Is Safe (and Sound) (pg. 239)
14 Completing SOOL: super, nil, Information Hiding, and Multiple Inheritance (pg. 263)
Historical Notes and References for Section III (pg. 283)
Part IV: Extending Simple Object-Oriented Languages (pg. 289)
15 Adding Bounded Polymorphism to SOOL (pg. 291)
16 Adding MyType to Object-Oriented Programming Languages (pg. 299)
17 Match-Bounded Polymorphism (pg. 331)
18 Simplifying: Dropping Subtyping for Matching (pg. 349)
Historical Notes and References for Section IV (pg. 363)
Bibliography (pg. 367)
Index (pg. 379)
List of Figures (pg. xi)
Preface (pg. xv)
Part I: Type Problems in Object-Oriented Languages (pg. 1)
1 Introduction (pg. 3)
2 Fundamental Concepts of Object-Oriented Languages (pg. 17)
3 Type Problems in Object-Oriented Languages (pg. 33)
4 Adding Expressiveness to Object-Oriented Languages (pg. 49)
5 Understanding Subtypes (pg. 71)
6 Type Restrictions on Subclasses (pg. 89)
7 Varieties of Object-Oriented Programming Languages (pg. 95)
Historical Notes and References for Section I (pg. 113)
Part II: Foundations: The Lambda Calculus (pg. 117)
8 Formal Language Descriptions and the Lambda Calculus (pg. 119)
9 The Polymorphic Lambda Calculus (pg. 141)
Historical Notes and References for Section II (pg. 167)
Part III: Formal Descriptions of Object-Oriented Languages (pg. 171)
10 SOOL, a Simple Object-Oriented Language (pg. 173)
11 A Simple Translational Semantics of Objects and Classes (pg. 201)
12 Improved Semantics for Classes (pg. 225)
13 SOOL’s Type System Is Safe (and Sound) (pg. 239)
14 Completing SOOL: super, nil, Information Hiding, and Multiple Inheritance (pg. 263)
Historical Notes and References for Section III (pg. 283)
Part IV: Extending Simple Object-Oriented Languages (pg. 289)
15 Adding Bounded Polymorphism to SOOL (pg. 291)
16 Adding MyType to Object-Oriented Programming Languages (pg. 299)
17 Match-Bounded Polymorphism (pg. 331)
18 Simplifying: Dropping Subtyping for Matching (pg. 349)
Historical Notes and References for Section IV (pg. 363)
Bibliography (pg. 367)
Index (pg. 379)
eTextbook
Go paperless today! Available online anytime, nothing to download or install.

Features

  • Bookmarking
  • Note taking
  • Highlighting
Support