书籍详情

面向对象软件构造(第2版 影印版)

面向对象软件构造(第2版 影印版)

作者:迈耶

出版社:清华大学出版社

出版时间:1999-09-01

ISBN:9787302031888

定价:¥96.00

购买这本书可以去
内容简介
  内容简介 这是一本目前所见到的最全面,最完整地系统论述面向 对象软件构造的教科书。作者一方面从软件构造方法角度详 细论述了软件构造模块的品质因素和构造高质量模块的原则, 规划和原理,另一方面从数学上抽象数据类型对类型系统描述 定义论述了抽象模块和对象模块的正确性、鲁棒性问题,以及 类型系统的类属、继承、封装,多态等面向对象方法的重要概 念和机制。本书观点明确、一致,系统性强,对目前传统软件 工程中的问题作了透彻的分析,对目前在面向对象方法中存 在的模糊观点和混乱进行了一致性论述,对完善面向对象方 法论提出了鲜明的观点。本书既可作为教科书,也可作为在 面向对象方法研究和面向对象开发的科技人员很好的参考书。
作者简介
  About the Author Bertrand Meyer is equally at ease in the software industry and in the world of academic computing science. As tbunder of ISE Inc., located in Santa Barbara (Califomia). one of the first companies in the world to devote its activity entirely to object technology, he has played a major role in establishing the industrial viability of the approach. He has directed the design of systems totalling hundreds of thousands ufobject-oriented lines, and thousands oflibrary classes reused in diverse projects throughout the world. He also frequently consults for Fortune 500 companies and has advised several govemments on their computing initiatives. He has been a keynote speaker at many conferences such as OOPSLA, TOOLS, the European Sottware Engineenng Conference, thc Australian Software Engineering Conference, Object Expo, Object World, etc., and has presented hundreds ot' seminars worldwide on a variety of technical and management topics. Aside from his industrial role he has taught at universities in the U.S.. Europe and Australia. As a best-selling author with 10 books to his credit, he has published books with Prentice Hall on theoretical topics (Introduction to the Theory of Programming Languages) as well as industrial applications ot' object technology (Ohject-Oriented Applications) and management issues (Ohject Success: A Munager's Guide to Object Technologv). He is also the author of the definitive reference on the Eiffe! language (Eiffel: The Language). His book Reusable Software is both an extensive di.scussion of the methodological principles of reusable software construction and a detailed description of practical reusable components, based on a "Linnaean taxonomy" ot'the fnndamental objects in computing. He is also the editor ofthe Object-Oriented Series. with more than 25 titles in print hy various authors on many topics ofobject technology.
目录
    Preface
   Foreword to the second edition
   About the accompanying CD-ROM
   On the bibliography, Internet sources and exercises
    Contents
    PARTA: THEISSUES
   Chapter 1: Software quality
    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 ofobject orientation
    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
    3.1 FIVECRITERIA
    3.2 FIVERULES
    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 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
    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
    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 ASIMPLECLASS
    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 BBLIOGRAPHICAL 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 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 WTTH 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
    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
    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 RELIABILITY MECHANISMS
    11.2 ABOUT SOFTWARE CORRECTNESS
    11.3 EXPRESSING A SPECIFICATION
    11.4 INTRODUCING ASSERTIONS INTO SOFTWARE TEXTS
    11.5 PRECONDITIONS AND POSTCONDmONS
    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
    12.1 BASIC CONCEPTS OF EXCEPTION HANDLING
    12.2 HANDLING EXCEPTIONS
    12.3 AN EXCEPTION MECHANISM
    12.4 EXCEPTION HANDLING EXAMPLES
    12.5 THETASKOFARESCUECLAUSE
    12.6 ADVANCED EXCEPTION HANDLING
    12.7 DISCUSSION
    12.8 KEY CONCEPTS INTRODUCED IN THIS CHAPTER
    12.9 BIBLIOGRAPHICALNOTES
    EXERCISES
   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 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
    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
    16.1 INHERITANCE AND ASSERTIONS
    16.2 THE GLOBAL INHERITANCE STRUCTURE
    16.3 FROZEN FEATURES
    16.4 CONSTRAINEDGENERICITY
    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
    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 ANASSESSMENT
    17.9 THE PERFECT FIT
    17.10 KEY CONCEPTS STUDIED IN THIS CHAPTER
    17.11 BIBLIOGRAPHICAL NOTES
   Chapter 18: Global objects and constants
    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 UNIQUEVALUES
    18.7 DISCUSSION
    18.8 KEY CONCEPTS INTRODUCED IN THIS CHAPTER
    18.9 BIBLIOGRAPHICAL NOTES
    EXERCISES
    PARTD: 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 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
    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
    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
    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 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: Usetul techniques
    25.1 DESIGN PHILOSOPHY
    25.2 CLASSES
    25.3 INHERITANCE TECHNIQUES
   Chapter 26: A sense of style
    26.1 COSMETICSMATTERS!
    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 BIBLIOGRAPHICAL NOTES
   Chapter 29: Teaching the method
    29.1 INDUSTRIAL TRAINING
    29.2 INTRODUCTORY COURSES
    29.3 OTHERCOURSES
    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
    PARTE: ADVANCED TOPICS
   Chapter 30: Concurrency, distribution, client,server and
    the Internet
    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
    31.1 PERSISTENCE FROM THE LANGUAGE
    31.2 BEYOND PERSISTENCE CLOSURE
    31.3 SCHEMA EVOLUTION
    31.4 FROM PERSISTENCE TO DATABASES
    31.5 OBJECT-RELATIONALINTEROPERABILITY
    31.6 OBJECT-ORIENTED DATABASE FUNDAMENTALS
    31.7 0-0 DATABASE SYSTEMS: EXAMPLES
    31.8 DISCUSSION: BEYOND 0-0 DATABASES
    31.9 KEY CONCEPTS STUDIED IN THIS CHAPTER
    31.10 BIBLIOGRAPHICAL NOTES
    EXERCISES
   Chapter 32: Some 0-0 techniques for graphical interactive
    applications
    32.1 NEEDEDTOOLS
    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 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
    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 0-0 languages
    and environments
    35.1 SIMULA
    35.2 SMALLTALK
    35.3 LISP EXTENSIONS
    35.4 CEXTENSIONS
    35.5 JAVA
    35.6 OTHER 0-0 LANGUAGES
    35.7 BIBLIOGRAPHICAL NOTES
    EXERCISES
    PARTG: DOINGITRIGHT
   Chapter 36: An object-oriented environment
    36.1 COMPONENTS
    36.2 THELANGUAGE
    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
    PARTH: APPENDICES
   Appendix A: Extracts from the Base libraries
   Appendix B: Genericity versus inheritance
    B.l GENERICITY
    B.2 INHERITANCE
    B.3 EMULATING INHERITANCE WITH GENERICITY
    B.4 EMULATINGGENERICITYWITHINHERITANCE
    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 ofobject technology
   Appendix E: Bibliography
    E.l WORKS BY OTHER AUTHORS
    E.2 WORKS BY THE AUTHOR OF THE PRESENT BOOK
   Index
   
猜您喜欢

读书导航