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

面向对象软件构造(第2版 影印版)
作 者: 迈耶
出版社: 清华大学出版社
丛编项: 大学计算机教育丛书
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 面向对象
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  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 universiti...

内容简介

内容简介 这是一本目前所见到的最全面,最完整地系统论述面向 对象软件构造的教科书。作者一方面从软件构造方法角度详 细论述了软件构造模块的品质因素和构造高质量模块的原则, 规划和原理,另一方面从数学上抽象数据类型对类型系统描述 定义论述了抽象模块和对象模块的正确性、鲁棒性问题,以及 类型系统的类属、继承、封装,多态等面向对象方法的重要概 念和机制。本书观点明确、一致,系统性强,对目前传统软件 工程中的问题作了透彻的分析,对目前在面向对象方法中存 在的模糊观点和混乱进行了一致性论述,对完善面向对象方 法论提出了鲜明的观点。本书既可作为教科书,也可作为在 面向对象方法研究和面向对象开发的科技人员很好的参考书。

图书目录

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