This site contains older material on Eiffel. For the main Eiffel page, see http://www.eiffel.com.

OOSC-2 presentation -- Table of contents -- Preface -- Ordering

OOSC-2: TABLE OF CONTENTS

Bertrand Meyer, ISE

Note

This is the complete table of contents (down to level-2 sections) of the book Object-Oriented Software Construction, second edition. The links point to those chapters which are available for browsing here (under an imperfect rendition due to the limitations of HTML generation).

Contents

Part A: The issues

Chapter 1: Software quality 3

    1.1 EXTERNAL AND INTERNAL FACTORS

    1.2 A REVIEW OF EXTERNAL FACTORS

    1.3 ABOUT SOFTWARE MAINTENANCE

    1.4 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    1.5 BIBLIOGRAPHICAL NOTES

Chapter 2: Criteria of object orientation 21

    2.1 ON THE CRITERIA

    2.2 METHOD AND LANGUAGE

    2.3 IMPLEMENTATION AND ENVIRONMENT

    2.4 LIBRARIES

    2.5 FOR MORE SNEAK PREVIEW

    2.6 BIBLIOGRAPHICAL NOTES AND OBJECT RESOURCES

Part B: The road to object orientation

Chapter 3: Modularity 39

    3.1 FIVE CRITERIA

    3.2 FIVE RULES

    3.3 FIVE PRINCIPLES

    3.4 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    3.5 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 4: Approaches to reusability 67

    4.1 THE GOALS OF REUSABILITY

    4.2 WHAT SHOULD WE REUSE?

    4.3 REPETITION IN SOFTWARE DEVELOPMENT

    4.4 NON-TECHNICAL OBSTACLES

    4.5 THE TECHNICAL PROBLEM

    4.6 FIVE REQUIREMENTS ON MODULE STRUCTURES

    4.7 TRADITIONAL MODULAR STRUCTURES

    4.8 OVERLOADING AND GENERICITY

    4.9 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    4.10 BIBLIOGRAPHICAL NOTES

Chapter 5: Towards object technology 101

    5.1 THE INGREDIENTS OF COMPUTATION

    5.2 FUNCTIONAL DECOMPOSITION

    5.3 OBJECT-BASED DECOMPOSITION

    5.4 OBJECT-ORIENTED SOFTWARE CONSTRUCTION

    5.5 ISSUES

    5.6 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    5.7 BIBLIOGRAPHICAL NOTES

Chapter 6: Abstract data types 121

    6.1 CRITERIA

    6.2 IMPLEMENTATION VARIATIONS

    6.3 TOWARDS AN ABSTRACT VIEW OF OBJECTS

    6.4 FORMALIZING THE SPECIFICATION

    6.5 FROM ABSTRACT DATA TYPES TO CLASSES

    6.6 BEYOND SOFTWARE

    6.7 SUPPLEMENTARY TOPICS

    6.8 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    6.9 BIBLIOGRAPHICAL NOTES

    EXERCISES

Part C: Object-oriented techniques

Chapter 7: The static structure: classes 165

    7.1 OBJECTS ARE NOT THE SUBJECT

    7.2 AVOIDING THE STANDARD CONFUSION

    7.3 THE ROLE OF CLASSES

    7.4 A UNIFORM TYPE SYSTEM

    7.5 A SIMPLE CLASS

    7.6 BASIC CONVENTIONS

    7.7 THE OBJECT-ORIENTED STYLE OF COMPUTATION

    7.8 SELECTIVE EXPORTS AND INFORMATION HIDING

    7.9 PUTTING EVERYTHING TOGETHER

    7.10 DISCUSSION

    7.11 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    7.12 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 8: The run-time structure: objects 217

    8.1 OBJECTS

    8.2 OBJECTS AS A MODELING TOOL

    8.3 MANIPULATING OBJECTS AND REFERENCES

    8.4 CREATION PROCEDURES

    8.5 MORE ON REFERENCES

    8.6 OPERATIONS ON REFERENCES

    8.7 COMPOSITE OBJECTS AND EXPANDED TYPES

    8.8 ATTACHMENT: REFERENCE AND VALUE SEMANTICS

    8.9 DEALING WITH REFERENCES: BENEFITS AND DANGERS

    8.10 DISCUSSION

    8.11 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    8.12 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 9: Memory management 279

    9.1 WHAT HAPPENS TO OBJECTS

    9.2 THE CASUAL APPROACH

    9.3 RECLAIMING MEMORY: THE ISSUES

    9.4 PROGRAMMER-CONTROLLED DEALLOCATION

    9.5 THE COMPONENT-LEVEL APPROACH

    9.6 AUTOMATIC MEMORY MANAGEMENT

    9.7 REFERENCE COUNTING

    9.8 GARBAGE COLLECTION

    9.9 PRACTICAL ISSUES OF GARBAGE COLLECTION

    9.10 AN ENVIRONMENT WITH MEMORY MANAGEMENT

    9.11 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    9.12 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 10: Genericity 217

    10.1 HORIZONTAL AND VERTICAL TYPE GENERALIZATION

    10.2 THE NEED FOR TYPE PARAMETERIZATION

    10.3 GENERIC CLASSES

    10.4 ARRAYS

    10.5 THE COST OF GENERICITY

    10.6 DISCUSSION: NOT DONE YET

    10.7 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    10.8 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 11: Design by Contract: building reliable software 331

    11.1 BASIC RELIABILITY MECHANISMS

    11.2 ABOUT SOFTWARE CORRECTNESS

    11.3 EXPRESSING A SPECIFICATION

    11.4 INTRODUCING ASSERTIONS INTO SOFTWARE TEXTS

    11.5 PRECONDITIONS AND POSTCONDITIONS

    11.6 CONTRACTING FOR SOFTWARE RELIABILITY

    11.7 WORKING WITH ASSERTIONS

    11.8 CLASS INVARIANTS

    11.9 WHEN IS A CLASS CORRECT?

    11.10 THE ADT CONNECTION

    11.11 AN ASSERTION INSTRUCTION

    11.12 LOOP INVARIANTS AND VARIANTS

    11.13 USING ASSERTIONS

    11.14 DISCUSSION

    11.15 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    11.16 BIBLIOGRAPHICAL NOTES

    EXERCISES

    POSTSCRIPT: THE ARIANE 5 FAILURE

Chapter 12: When the contract is broken: exception handling 411

    12.1 BASIC CONCEPTS OF EXCEPTION HANDLING

    12.2 HANDLING EXCEPTIONS

    12.3 AN EXCEPTION MECHANISM

    12.4 EXCEPTION HANDLING EXAMPLES

    12.5 THE TASK OF A RESCUE CLAUSE

    12.6 ADVANCED EXCEPTION HANDLING

    12.7 DISCUSSION

    12.8 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    12.9 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 13: Supporting mechanisms 439

    13.1 INTERFACING WITH NON-O-O SOFTWARE

    13.2 ARGUMENT PASSING

    13.3 INSTRUCTIONS

    13.4 EXPRESSIONS

    13.5 STRINGS

    13.6 INPUT AND OUTPUT

    13.7 LEXICAL CONVENTIONS

    13.8 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    EXERCISES

Chapter 14: Introduction to inheritance 459

    14.1 POLYGONS AND RECTANGLES

    14.2 POLYMORPHISM

    14.3 TYPING FOR INHERITANCE

    14.4 DYNAMIC BINDING

    14.5 DEFERRED FEATURES AND CLASSES

    14.6 REDECLARATION TECHNIQUES

    14.7 THE MEANING OF INHERITANCE

    14.8 THE ROLE OF DEFERRED CLASSES

    14.9 DISCUSSION

    14.10 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    14.11 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 15: Multiple inheritance 519

    15.1 EXAMPLES OF MULTIPLE INHERITANCE

    15.2 FEATURE RENAMING

    15.3 FLATTENING THE STRUCTURE

    15.4 REPEATED INHERITANCE

    15.5 DISCUSSION

    15.6 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    15.7 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 16: Inheritance techniques 569

    16.1 INHERITANCE AND ASSERTIONS

    16.2 THE GLOBAL INHERITANCE STRUCTURE

    16.3 FROZEN FEATURES

    16.4 CONSTRAINED GENERICITY

    16.5 ASSIGNMENT ATTEMPT

    16.6 TYPING AND REDECLARATION

    16.7 ANCHORED DECLARATION

    16.8 INHERITANCE AND INFORMATION HIDING

    16.9 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    16.10 BIBLIOGRAPHICAL NOTE

    EXERCISES

Chapter 17: Typing 611

    17.1 THE TYPING PROBLEM

    17.2 STATIC TYPING: WHY AND HOW

    17.3 COVARIANCE AND DESCENDANT HIDING

    17.4 FIRST APPROACHES TO SYSTEM VALIDITY

    17.5 RELYING ON ANCHORED TYPES

    17.6 GLOBAL ANALYSIS

    17.7 BEWARE OF POLYMORPHIC CATCALLS!

    17.8 AN ASSESSMENT

    17.9 THE PERFECT FIT

    17.10 KEY CONCEPTS STUDIED IN THIS CHAPTER

    17.11 BIBLIOGRAPHICAL NOTES

Chapter 18: Global objects and constants 643

    18.1 CONSTANTS OF BASIC TYPES

    18.2 USE OF CONSTANTS

    18.3 CONSTANTS OF CLASS TYPES

    18.4 APPLICATIONS OF ONCE ROUTINES

    18.5 CONSTANTS OF STRING TYPE

    18.6 UNIQUE VALUES

    18.7 DISCUSSION

    18.8 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    18.9 BIBLIOGRAPHICAL NOTES

    EXERCISES

Part D: Object-oriented methodology: applying the method well

Chapter 19: On methodology 663

    19.1 SOFTWARE METHODOLOGY: WHY AND WHAT

    19.2 DEVISING GOOD RULES: ADVICE TO THE ADVISORS

    19.3 ON USING METAPHORS

    19.4 THE IMPORTANCE OF BEING HUMBLE

    19.5 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 20: Design pattern: multi-panel interactive systems 675

    20.1 MULTI-PANEL SYSTEMS

    20.2 A SIMPLE-MINDED ATTEMPT

    20.3 A FUNCTIONAL, TOP-DOWN SOLUTION

    20.4 A CRITIQUE OF THE SOLUTION

    20.5 AN OBJECT-ORIENTED ARCHITECTURE

    20.6 DISCUSSION

    20.7 BIBLIOGRAPHICAL NOTE

Chapter 21: Inheritance case study: "undo" in an interactive system 695

    21.1 PERSEVERARE DIABOLICUM

    21.2 FINDING THE ABSTRACTIONS

    21.3 MULTI-LEVEL UNDO-REDO

    21.4 IMPLEMENTATION ASPECTS

    21.5 A USER INTERFACE FOR UNDOING AND REDOING

    21.6 DISCUSSION

    21.7 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 22: How to find the classes 719

    22.1 STUDYING A REQUIREMENTS DOCUMENT

    22.2 DANGER SIGNALS

    22.3 GENERAL HEURISTICS FOR FINDING CLASSES

    22.4 OTHER SOURCES OF CLASSES

    22.5 REUSE

    22.6 THE METHOD FOR OBTAINING CLASSES

    22.7 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    22.8 BIBLIOGRAPHICAL NOTES

Chapter 23: Principles of class design 747

    23.1 SIDE EFFECTS IN FUNCTIONS

    23.2 HOW MANY ARGUMENTS FOR A FEATURE?

    23.3 CLASS SIZE: THE SHOPPING LIST APPROACH

    23.4 ACTIVE DATA STRUCTURES

    23.5 SELECTIVE EXPORTS

    23.6 DEALING WITH ABNORMAL CASES

    23.7 CLASS EVOLUTION: THE OBSOLETE CLAUSE

    23.8 DOCUMENTING A CLASS AND A SYSTEM

    23.9 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    23.10 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 24: Using inheritance well 809

    24.1 HOW NOT TO USE INHERITANCE

    24.2 WOULD YOU RATHER BUY OR INHERIT?

    24.3 AN APPLICATION: THE HANDLE TECHNIQUE

    24.4 TAXOMANIA

    24.5 USING INHERITANCE: A TAXONOMY OF TAXONOMY

    24.6 ONE MECHANISM, OR MORE?

    24.7 SUBTYPE INHERITANCE AND DESCENDANT HIDING

    24.8 IMPLEMENTATION INHERITANCE

    24.9 FACILITY INHERITANCE

    24.10 MULTIPLE CRITERIA AND VIEW INHERITANCE

    24.11 HOW TO DEVELOP INHERITANCE STRUCTURES

    24.12 A SUMMARY VIEW: USING INHERITANCE WELL

    24.13 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    24.14 BIBLIOGRAPHICAL NOTES

    24.15 APPENDIX: A HISTORY OF TAXONOMY

    EXERCISES

Chapter 25: Useful techniques 871

    25.1 DESIGN PHILOSOPHY

    25.2 CLASSES

    25.3 INHERITANCE TECHNIQUES

Chapter 26: A sense of style 875

    26.1 COSMETICS MATTERS!

    26.2 CHOOSING THE RIGHT NAMES

    26.3 USING CONSTANTS

    26.4 HEADER COMMENTS AND INDEXING CLAUSES

    26.5 TEXT LAYOUT AND PRESENTATION

    26.6 FONTS

    26.7 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 27: Object-oriented analysis 903

    27.1 THE GOALS OF ANALYSIS

    27.2 THE CHANGING NATURE OF ANALYSIS

    27.3 THE CONTRIBUTION OF OBJECT TECHNOLOGY

    27.4 PROGRAMMING A TV STATION

    27.5 EXPRESSING THE ANALYSIS: MULTIPLE VIEWS

    27.6 ANALYSIS METHODS

    27.7 THE BUSINESS OBJECT NOTATION

    27.8 BIBLIOGRAPHY

Chapter 28: The software construction process 923

    28.1 CLUSTERS

    28.2 CONCURRENT ENGINEERING

    28.3 STEPS AND TASKS

    28.4 THE CLUSTER MODEL OF THE SOFTWARE LIFECYCLE

    28.5 GENERALIZATION

    28.6 SEAMLESSNESS AND REVERSIBILITY

    28.7 WITH US, EVERYTHING IS THE FACE

    28.8 KEY CONCEPTS COVERED IN THIS CHAPTER

    28.9 BIBLIOGRAPHICAL NOTES

Chapter 29: Teaching the method 935

    29.1 INDUSTRIAL TRAINING

    29.2 INTRODUCTORY COURSES

    29.3 OTHER COURSES

    29.4 TOWARDS A NEW SOFTWARE PEDAGOGY

    29.5 AN OBJECT-ORIENTED PLAN

    29.6 KEY CONCEPTS STUDIED IN THIS CHAPTER

    29.7 BIBLIOGRAPHICAL NOTES

Part E: Advanced topics

Chapter 30: Concurrency, distribution, client-server and the Internet 951

    30.1 A SNEAK PREVIEW

    30.2 THE RISE OF CONCURRENCY

    30.3 FROM PROCESSES TO OBJECTS

    30.4 INTRODUCING CONCURRENT EXECUTION

    30.5 SYNCHRONIZATION ISSUES

    30.6 ACCESSING SEPARATE OBJECTS

    30.7 WAIT CONDITIONS

    30.8 REQUESTING SPECIAL SERVICE

    30.9 EXAMPLES

    30.10 TOWARDS A PROOF RULE

    30.11 A SUMMARY OF THE MECHANISM

    30.12 DISCUSSION

    30.13 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    30.14 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 31: Object persistence and databases 1037

    31.1 PERSISTENCE FROM THE LANGUAGE

    31.2 BEYOND PERSISTENCE CLOSURE

    31.3 SCHEMA EVOLUTION

    31.4 FROM PERSISTENCE TO DATABASES

    31.5 OBJECT-RELATIONAL INTEROPERABILITY

    31.6 OBJECT-ORIENTED DATABASE FUNDAMENTALS

    31.7 O-O DATABASE SYSTEMS: EXAMPLES

    31.8 DISCUSSION: BEYOND O-O DATABASES

    31.9 KEY CONCEPTS STUDIED IN THIS CHAPTER

    31.10 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 32: Some O-O techniques for graphical interactive applications 1063

    32.1 NEEDED TOOLS

    32.2 PORTABILITY AND PLATFORM ADAPTATION

    32.3 GRAPHICAL ABSTRACTIONS

    32.4 INTERACTION MECHANISMS

    32.5 HANDLING THE EVENTS

    32.6 A MATHEMATICAL MODEL

    32.7 BIBLIOGRAPHICAL NOTES

Part F: Applying the method in various languages and environments

Chapter 33: O-O programming and Ada 1079

    33.1 A BIT OF CONTEXT

    33.2 PACKAGES

    33.3 A STACK IMPLEMENTATION

    33.4 HIDING THE REPRESENTATION: THE PRIVATE STORY

    33.5 EXCEPTIONS

    33.6 TASKS

    33.7 FROM ADA TO ADA 95

    33.8 KEY CONCEPTS INTRODUCED IN THIS CHAPTER

    33.9 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 34: Emulating object technology in non-O-O
environments 1099

    34.1 LEVELS OF LANGUAGE SUPPORT

    34.2 OBJECT-ORIENTED PROGRAMMING IN PASCAL?

    34.3 FORTRAN

    34.4 OBJECT-ORIENTED PROGRAMMING AND C

    34.5 BIBLIOGRAPHICAL NOTES

    EXERCISES

Chapter 35: Simula to Java and beyond: major O-O languages
and environments 1113

    35.1 SIMULA

    35.2 SMALLTALK

    35.3 LISP EXTENSIONS

    35.4 C EXTENSIONS

    35.5 JAVA

    35.6 OTHER O-O LANGUAGES

    35.7 BIBLIOGRAPHICAL NOTES

    EXERCISES

Part G: Doing it right

Chapter 36: An object-oriented environment 1143

    36.1 COMPONENTS

    36.2 THE LANGUAGE

    36.3 THE COMPILATION TECHNOLOGY

    36.4 TOOLS

    36.5 LIBRARIES

    36.6 INTERFACE MECHANISMS

    36.7 BIBLIOGRAPHICAL NOTES

    Epilogue, In Full Frankness Exposing the Language

Part H: Appendices

Appendix A: Extracts from the Base libraries

Appendix B: Genericity versus inheritance

    B.1 GENERICITY

    B.2 INHERITANCE

    B.3 EMULATING INHERITANCE WITH GENERICITY

    B.4 EMULATING GENERICITY WITH INHERITANCE

    B.5 COMBINING GENERICITY AND INHERITANCE

    B.6 KEY CONCEPTS INTRODUCED IN THIS APPENDIX

    B.7 BIBLIOGRAPHICAL NOTES

    EXERCISES

Appendix C: Principles, rules, precepts and definitions

Appendix D: A glossary of object technology

Appendix E: Bibliography

    E.1 WORKS BY OTHER AUTHORS

    E.2 WORKS BY THE AUTHOR OF THE PRESENT BOOK

Index

OOSC-2 presentation -- Table of contents -- Preface -- Ordering