A theory of objects
By: Martín Abadi, Luca Cardelli.
Contributors: Cardelli, Luca.
Series: Monographs in computer science
Publisher: Springer
Published: 1996
Place of publication: New York
Language: eng
Number of pages: 396
Subjects: Object-oriented programming (Computer science)
First sentence: This book develops a theory of objects as a foundation for object-oriented languages and programming. (Preface, v)  Procedural languages are generally well understood; their constructs are by now standard, and their formal underpinnings are solid. (Prologue, 1)
Description: The authors take a novel approach to understanding object-oriented languages by introducing object calculi and developing a theory of objects around them.  The book covers both the semantics of objects and their typing rules, and explains a range of object-oriented concepts, such as self, dynamic dispatch, classes, inheritance, prototyping, subtyping, covariance and contravariance, and method specialization.  (From back-cover copy)
Notes: Includes bibliographical references (p. [383]-390) and index.
Table of contents: title: Preface, v; title: Prologue, 1; title: . Review: Object-Oriented Features; title: . 1: Object Orientation, 7; title: Objects, 7; title: Reuse, 8; title: Classifying Features, 9; title: . 2: Class-Based Languages, 11; title: Classes and Objects, 11; title: Method Lookup, 13; title: Subclasses and Inheritance, 15; title: Subsumption and Dynamic Dispatch, 17; title: Type Information, Lost and Found, 19; title: Covariance, Contravariance, and Invariance, 20; title: Method Specialization, 22; title: Self Type Specialization, 23; title: . 3: Advanced Class-Based Features, 25; title: Object Types, 25; title: Distinguishing Subclassing from Subtyping, 27; title: Type Parameters, 28; title: Subclassing without Subtyping, 30; title: Object Protocols, 32; title: . 4: Object-Based Languages, 35; title: Objects without Classes, 35; title: Prototypes and Clones, 36; title: Inheritance by Embedding and by Delegation, 38; title: Embedding, 39; title: Delegation, 42; title: Embedding versus Delegation, 45; title: Dynamic Inheritance and Mode-Swwitching, 46; title: Traits: From Prototypes back to Classes?, 47; title: Types for Object-Based Languages, 49; title: . 5: Modeling Object-Oriented Languages, 51; title: Reduction to Basic Mechanisms, 51; title: The Role of Method Update, 52; title: The Scope of this Book, 53; title: . Part I: Untyped and First-Order Calculi; title: . 6: Untyped Calculi, 57; title: Object Primitives, 57; title: The sigma-Calculus, 60; title: Functions as Objects, 66; title: Fixpoints, 68; title: Examples, 69; title: Traits, Classes, and Inheritance, 73; title: Interpretations of Objects, 76; title: . 7: First Order Calculi, 79; title: Formal Systems, 79; title: The Object Fragment, 80; title: Standard First-Order Fragments, 82; title: Examples, 84; title: Some Properties of Ob, 85; title: First-Order Equational Theories, 89; title: Functions and Fixpoints, 91; title: . 8: Subtyping, 93; title: Subtyping, 93; title: Examples, 95; title: Some Properties of Ob(1<:), 95; title: First-Order Equational Theories with Subtyping, 98; title: Classes and Inheritance, 100; title: Objects versus Records, 106; title: Variance Annotations, 109; title: . 9: Recursion, 113; title: Recursion, 113; title: Recursionand Subsumption, 115; title: Some Properties of Ob(1<:mu), 118; title: Examples, 121; title: The Shortcomings of First-Order Typing, 123; title: Towards the Type Self, 125; title: Dynamic Typing, 126; title: . 10: Untyped Imperative Calculi, 129; title: Syntax, 129; title: Fields, 130; title: Procedures, 131; title: Examples, 133; title: Operational Semantics, 135; title: . 11: First-Order Imperative Calculi, 141; title: Typing, 141; title: Examples of Typing, 142; title: Classes and Global Behavior Change, 144; title: Subject Reduction, 146; title: . 12: A First-Order Language, 153; title: Features, 153; title: Syntax, 154; title: Examples, 156; title: Typing, 159; title: Translation, 162; title: . Part II: Second-Order Calculi; title: . 13: Second-Order Calculi, 169; title: The Universal Quantifier, 169; title: The Existential Quantifier, 173; title: Variance Properties, 177; title: Variant Product and Function Types, Encoded in Ob(<:), 178; title: The Self Quantifier, 179; title: . 14: A Semantics, 185; title: The Untyped Universe, 185; title: Types in the Untyped Universe, 187; title: The Interpretation of Types and Typed Terms, 196; title: . 15: Definable Covariant Self Types, 201; title: sigma-Objects, 201; title: Examples, with Typing, 205; title: Binary Methods and the Covariance Requirement, 208; title: Classes and Inheritance, with Self, 209; title: Updating from the Outside, 210; title: Recoup, 212; title: Objects with Structural Invariants, 215; title: . 16 Primitive Covariant Self Types, 221; title: Primitive Self Types and Structural Rules, 221; title: Objects with Structural Rules, 222; title: Quantifiers, 227; title: Subject Reduction, 229; title: Examples, 233; title: Classes and Inheritance, with Primitive Self, 237; title: . 17 Interpretations of Object Calculi, 241; title: Syntax of Terms and Operational Semantics, 241; title: Typing with Self, 242; title: Quantifiers, 243; title: Examples, 245; title: Subject Reduction, 247; title: . 18 Interpretations of Object Calculi, 257; title: The Interpretation Problem, 257; title: Untyped Interpretations, 259; title: Typed Interpretations, 264; title: . 19: A Second-Order Language, 273; title: Features, 273; title: Syntax, 274; title: Examples, 276; title: Typing, 279; title: Translation, 282; title: . Part III: Higher-Order Calculi; title: . 20: A Higher-Order Calculus, 287; title: Syntax of Ob(omega<:mu), 287; title: Operational Semantics, 289; title: Typing, 290; title: Binary Methods, 294; title: Basic Properties of Ob(omega<:mu), 298; title: Subject Reduction, 301; title: . 21: A Language with Matching, 305; title: Features, 305; title: Syntax, 306; title: Examples, 307; title: Typing, 311; title: Translation, 315; title: . Epilogue, 325; title: . Appendix: Rules and Proofs; title: . A: Fragments, 329; title: Simple-Objects Fragments, 329; title: Other Typing Fragments, 330; title: Other Equational Fragments, 333; title: . B: Systems, 337; title: The Ob(1<:) Calculus, 337; title: The F(<:mu) Calculus, 339; title: The sigmaOb Calculus, 342; title: . C: Proofs; title: Proof of the Variance Lemma from Section 13.3, 347; title: Proof of the Variance Lemma from Section 16.4, 351; title: Deriving the Rules for sigma-Objects from Section 15.1.2, 352; title: Denotational Soundness of Equational Rules, 354; title: List of Figures, 363; title: List of Tables, 365; title: List of Notations, 371; title: List of Languages, 381; title: Bibliography, 383; title: Index, 391