面向对象软件构造?

面向对象软件构造?
作 者: Bertrand Meyer
出版社: 机械工业出版社
丛编项: 英文版.第2版
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 面向对象
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《面向对象软件构造?》作者简介

内容简介

美国软件开发杂志获奖图书 为软件产业带来震撼与效率 奖项背景:从1990年开始,美国权威的软件开发杂志(《Software Development》)每年从图书、设计工具等6个类别的700多个候选产品中评选出每个类别的1~2个年度震撼大奖(Jolt Award,即产品优胜奖)和2~3个年度效率大奖(Productivity Award),以表彰这些产品在推动软件开发方面的杰出贡献。回顾这12年来的获奖名单,入选的无一不是对业界产生深远影响的里程碑式作品。(详情可参阅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...

图书目录

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