美國軟件開發(fā)雜志獲獎圖書 為軟件產(chǎn)業(yè)帶來震撼與效率 獎項(xiàng)背景:從1990年開始,美國權(quán)威的軟件開發(fā)雜志(《Software Development》)每年從圖書、設(shè)計(jì)工具等6個(gè)類別的700多個(gè)候選產(chǎn)品中評選出每個(gè)類別的1~2個(gè)年度震撼大獎(Jolt Award,即產(chǎn)品優(yōu)勝獎)和2~3個(gè)年度效率大獎(Productivity Award),以表彰這些產(chǎn)品在推動軟件開發(fā)方面的杰出貢獻(xiàn)?;仡欉@12年來的獲獎名單,入選的無一不是對業(yè)界產(chǎn)生深遠(yuǎn)影響的里程碑式作品。(詳情可參閱www.sdmagazine.com)This second edition is not an update but the result of a thorough reworking. Not a paragraph of the original version has been left untouched. (Hardly a single line, actually.) Countless new topics have been added, including a whole chapter on concurrency, distribution, client-server computing and Internet programming; another on persistence and databases; one on user interfaces; one on the software lifecycle; many design patterns and implementation techniques; an in-depth exploration of a methodological issue on which little is available in the literature, how to use inheritance well and avoid misusing it; discussions of many other topics of object-oriented methodology; an extensive presentation of the theory of abstract data types : the mathematical basis for our subject, indispensable to a complete understanding of object technology yet seldom covered in detail by textbooks and tutorials; a presentation of O-O analysis; hundreds of new bibliographic and Web site references; the description of a complete object-oriented development environment (also included on the accompanying CD-ROM for the reader's enjoyment) and of the underlying concepts; and scores of new ideas, principles, caveats, explanations, figures, examples, comparisons, citations, classes, routines.
作者簡介
暫缺《面向?qū)ο筌浖?gòu)造?》作者簡介
圖書目錄
Preface Foreword to the second edition About the accompanying CD-ROM On the bibliography, Internet sources and exercises Contents Part A: THE ISSUES Chapter 1: Software quality 1.1 EXTERANL 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 Chater 2: Criteria of object orientation 2.1 ON THE CRITERIA 2.2 METHOD AND LANGUAGE 2.3 IMPLEMENTATOIN 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 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 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 TECHNICLA 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 5.1 THE INGREDIENTS OF COMPUTATION 5.2 FUNCTIONAL DECOMPOSITION 5.3 OBJECT-BASED DECOMPOSITION 5.4 OBJECT-ORIENTED SOFTWARE CONSTRUCTOIN 5.5 ISSUES 5.6 KEY CONCEPTS INTRODUCED IN THIS CHAPTER 5.7 BIBLIOGRAPHICAL NOTES Chapter 6: Abstract data types 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 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 8.1 OBJECTS 8.2 OBJECTS AS A MODELING TOOL 8.3 MANIPULATING OBJECTS AND REFERENCES 8.4 CREATINO 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 9.1 WHAT HAPPENS TO OBJECTS 9.2 THE CASUAL APPROACH 9.3 RECLAIMING MEMORY: THE ISSUES 8.4 PROGRAMMER-CONTROLLED DEALLOCATION 9.5 THE COMPONENT-LEVEL APPROACH 9.6 AUTOMATIC MEMORY MANAGEMENT 9.7 PEFERENCE 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 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 11.1 BASIC RELIABLILITY 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 CONNECTOIN 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 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 EXERCLSES Chapter 13: Supporting mechanisms 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 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 MANING FO 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 15.1 EMAMPLES 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 16.1 INHERITANCE AND ASSERTIONS 16.2 THE GLOBAL INHERITANCE STRUCTURE 16.3 FROZEN FEATURES 16.4 CONSTRAINED GENERICITY 16.5 ASSIGNMENT APTTEMPT 16.6 TYPING AND REDECLARATOIN 16.7 ANCHORED DECLARATION 16.8 INHERITANCE AND INFORMATOIN HIDING 16.9 KEY CONCEPTS INTRODUCED IN THIS CHAPTER 16.10 BIBLIOGRAPHICAL NOTE EXERCISES Chapter 17: Typing 17.1 THE TYUPING 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 objeects and constants 18.1 CONSTANTS OF BASIC TYPES 18.2 USE OF CONSTANTS 18.3 CONSTANTS OF CLASS TYPES 18.4 APPLICATOINS 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 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 20.1 MULT-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 21.1 PERSEVERARE DIABOLICUM 21.2 FINDING THE ABSTRACTIONS 21.3 MULTI-LEVEL UNDO-REDO 21.4 IMPLEMENTATION ASPECRTS 21.5 A USER INTERFACE FOR UNDOING AND REDOING 21.6 DISCUSSION 21.7 BIBLIOGRAPHICAL NOTES EXERCISES Chapter 22: How to find the classes 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: Priniples of class design 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 24.1 HOW NOT TO USE INHERITANCE 24.2 WOULD YOU RATHER BUY OR INHERIT? 24.3 AN APPLICATOIN: THE HANDLE TECHNIQUE 24.4 TAXOMANIA 24.5 USING INHERTANCE: 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 25.1 DESIGN PHILOSOPHY 25.2 CLASSES 25.3 INHERITANCE TECHNIQUES Chapter 26: A sense of style 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 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 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 BIBLIOGRAPHIC AL NOTES Chapter 29: Teaching the method 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 30.1 A SNEAK PREVIEW 30.2 THE RESE 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 39.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 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-OOOO DATABASES 31.9 KEY CONCEPTS STUDIED IN THIS CHAPTER 31.10 BIBLIOGRAPHICAL NOTES Chapter 32: Some O-O techniques for graphical interactive applications 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 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 ADS 95 33.8 KEY CONCEPTS INTRODUCED IN THIS CHAPTER 33.9 BIBLIOGRAPHICAL NOTES EXERCISES Chapter 34: Emulating object technology in non-O-O environments 34.1 LEVELS OF LANGUAGE SUPPORT 34.2 OBJECT-ORIENTED PROGRAMMING IN PASCAL? 34.3 FORTAN 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 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 RIGHT Chapter 36: An object-oriented environment 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 EXERCLISES 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 FOF THE PRESENT OOK Index