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