search for books and compare prices
Tables of Contents for Foundations of Object-Oriented Languages
Chapter/Section Title
Page #
Page Count
List of Figures
xi
Preface
xv
I Type Problems in Object-Oriented Languages
1
116
Introduction
3
14
Type systems in programming languages
4
2
Type checking and strongly typed languages
6
6
Focus on statically typed class-based languages
12
1
Foundations: A look ahead
13
4
Fundamental Concepts of Object-Oriented Languages
17
16
Objects, classes, and object types
17
5
Subclasses and inheritance
22
2
Subtypes
24
2
Covariant and contravariant changes in types
26
1
Overloading versus overriding methods
27
5
Summary
32
1
Type Problems in Object-Oriented Languages
33
16
Type checking object-oriented languages is difficult
33
2
Simple type systems are lacking in flexibility
35
13
Summary of typing problems
48
1
Adding Expressiveness to Object-Oriented Languages
49
22
GJ
49
11
Even more flexible typing with Eiffel
60
9
Summary
69
2
Understanding Subtypes
71
18
Subtyping for non-object types
72
11
Object types
83
1
Subtyping for class types
84
2
Summary
86
3
Type Restrictions on Subclasses
89
6
Allowable changes to method types
89
2
Instance variable types invariant in subclasses
91
1
Changing visibility
92
1
Summary
93
2
Varieties of Object-Oriented Programming Languages
95
22
Multi-methods vs. object-based vs. class-based languages
95
8
Well-known object-oriented languages
103
8
Summary
111
6
Historical Notes and References for Section I
113
4
II Foundations: The Lambda Calculus
117
54
Formal Language Descriptions and the Lambda Calculus
119
22
The simply-typed lambda calculus
120
12
Adding pairs, sums, records, and references
132
8
Summary
140
1
The Polymorphic Lambda Calculus
141
30
Parameterized types and polymorphism
141
6
Recursive expressions and types
147
4
Information hiding and existential types
151
5
Adding subtypes to the polymorphic lambda calculus
156
9
Summary
165
6
Historical Notes and References for Section II
167
4
III Formal Descriptions of Object-Oriented Languages
171
118
SOOL, a Simple Object-Oriented Language
173
28
Informal description and example
173
3
Syntax and type-checking rules
176
24
Summary
200
1
A Simple Translational Semantics of Objects and Classes
201
24
Representing objects at runtime
201
2
Modeling SOOL types in ΛP<
203
4
Modeling SOOL expressions in ΛP<:
207
5
Modeling classes - first try
212
6
Problems with modeling subclasses
218
5
Summary
223
2
Improved Semantics for Classes
225
14
(Re-)Defining classes
225
7
A correct subclass encoding
232
1
Summary and a look ahead
233
6
SOOL's Type System Is Safe (and Sound)
239
24
The translation of SOOL to ΛP<: is sound
239
16
The translation is well defined
255
3
SOOL is type safe
258
2
Errors
260
2
Summary
262
1
Completing SOOL: super, nil, Information Hiding, and Multiple Inheritance
263
26
Using methods from superclasses
263
3
Translating nil
266
5
A complication with self
271
1
Finer control over information hiding
272
3
Multiple inheritance
275
4
Summary
279
10
Historical Notes and References for Section III
283
6
IV Extending Simple Object-Oriented Languages
289
78
Adding Bounded Polymorphism to SOOL
291
8
Introducing PSOOL
291
5
Translational semantics of PSOOL
296
1
Summary
297
2
Adding MyType to Object-Oriented Programming Languages
299
32
Typing self with MyType
300
9
MOOL: Adding MyType to SOOL
309
10
Translational semantics of MOOL
319
3
Soundness of translation for MOOL
322
8
Summary
330
1
Match-Bounded Polymorphism
331
18
Benefits of match-bounded polymorphism
331
2
Introducing PMOOL
333
1
Examples and comparison with F-bounded polymorphism
334
1
Translational semantics of PMOOL
335
7
Soundness of the translation of PMOOL
342
5
Summary
347
2
Simplifying: Dropping Subtyping for Matching
349
18
Can we drop subtyping?
349
3
Introducing hash types
352
4
Type-checking rules
356
4
An informal semantics of hash types
360
1
Summary
361
6
Historical Notes and References for Section IV
363
4
Bibliography
367
12
Index
379
<