注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)程序設(shè)計(jì)綜合程序開(kāi)發(fā)原理:抽象、規(guī)格與面向?qū)ο笤O(shè)計(jì)

程序開(kāi)發(fā)原理:抽象、規(guī)格與面向?qū)ο笤O(shè)計(jì)

程序開(kāi)發(fā)原理:抽象、規(guī)格與面向?qū)ο笤O(shè)計(jì)

定 價(jià):¥58.00

作 者: (美)利斯科瓦(Liskov, B)著
出版社: 電子工業(yè)出版社
叢編項(xiàng): 國(guó)外計(jì)算機(jī)科學(xué)教材系列
標(biāo) 簽: 軟件開(kāi)發(fā) 教材 英文

ISBN: 9787121026935 出版時(shí)間: 2006-06-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 464 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

本書由著名編程理論專家所著,是美國(guó)麻省理工學(xué)院電子工程與計(jì)算機(jī)科學(xué)系的編程實(shí)踐課程教材。書中討論了怎樣構(gòu)建具有高可靠性、易于維護(hù)和快速修改的軟件的開(kāi)發(fā)方法,強(qiáng)調(diào)了軟件的模塊化開(kāi)發(fā)思想,用豐富的實(shí)例告訴讀者怎樣進(jìn)行模塊化并合理地組織各種模塊以構(gòu)成大型軟件系統(tǒng)的過(guò)程。該書的前8章首次提出編程領(lǐng)域中的一些十分有用的抽象概念,如過(guò)程抽象、迭代抽象以及最重要的數(shù)據(jù)抽象等。此外,本書通過(guò)大量的例子,用非形式化的規(guī)范來(lái)詳細(xì)定義這些數(shù)據(jù)抽象,描述模塊所需完成的任務(wù),并定義了模塊所需的性能邊界條件。該書的后7章主要講述了怎樣利用抽象構(gòu)建大型軟件,主要側(cè)重于軟件工程的內(nèi)容,基于類型層次結(jié)構(gòu)提出對(duì)于數(shù)據(jù)抽象的調(diào)試、測(cè)試、需求分析、自頂向下和迭代的開(kāi)發(fā)過(guò)程,還簡(jiǎn)要介紹了設(shè)計(jì)模式的概念。這是一本傳授思想的書籍,能使讀者透過(guò)現(xiàn)象看到本質(zhì),從而掌握編寫程序的關(guān)鍵。本書非常適合作為軟件學(xué)院的教材,在低年級(jí)即可培養(yǎng)學(xué)生對(duì)于事物的抽象能力。此外,本書也非常適合軟件開(kāi)發(fā)人員參考。本書還討論了以下主題:■展示滿足規(guī)格的程序?qū)崿F(xiàn)和封裝過(guò)程■在程序設(shè)計(jì)的簡(jiǎn)單化和性能之間如何權(quán)衡■幫助讀者理解和推斷程序代碼的技巧,重點(diǎn)講解了抽象數(shù)據(jù)類型和抽象函數(shù)■類型層次及其在定義相關(guān)數(shù)據(jù)抽象時(shí)的運(yùn)用■調(diào)試、分析和需求分析■采用自頂向下、迭代過(guò)程方法和設(shè)計(jì)模式的程序設(shè)計(jì)與方法書中的例子采用Java語(yǔ)言描述,但是所提出的技術(shù)并不受語(yǔ)言影響。本書也對(duì)主要的Java概念進(jìn)行了介紹,以幫助那些可能對(duì)該語(yǔ)言還不太熟悉的程序員。

作者簡(jiǎn)介

  美國(guó)麻省理工學(xué)院電子工程與計(jì)算機(jī)科學(xué)系資深教授。她是美國(guó)國(guó)家工程院院士,在程序評(píng)議、分布式計(jì)算、程序設(shè)計(jì)方法論以及軟件工程領(lǐng)域做出了卓越的貢獻(xiàn),曾與JohnGuttag合著了AbstractionandSpecificationinProgramDvevlopemt.

圖書目錄

1   Introduction
1.1   Decomposition and Abstraction  
1.2   Abstraction  
1.2.1 Abstraction by Parameterization
1.2.2 Abstraction by Specification
1.2.3 Kinds of Abstractions
1.3   The Remainder of the Book  
Exercises  
2   Understanding Objects in Java
2.1   Program Structure  
2.2   Packages  
2.3   Objects and Variables  
2.3.1 Mutability
2.3.2 Method Call Semantics
2.4   Type Checking  
2.4.1 Type Hierarchy
2.4.2 Conversions and Overloading
2.5   Dispatching  
2.6   Types  
2.6.1 Primitive Object Types
2.6.2 Vectors
2.7   Stream Input/Output  
2.8   Java Applications  
Exercises  
3   Procedural Abstraction
3.1   The Benefits of Abstraction  
3.2   Specifications  
3.3   Specifications of Procedural Abstractions  
3.4   Implementing Procedures  
3.5   Designing Procedural Abstractions  
3.6   Summary  
Exercises  
4   Exceptions
4.1   Specifications  
4.2   The Java Exception Mechanism  
4.2.1 Exception Types
4.2.2 Defining Exception Types
4.2.3 Throwing Exceptions
4.2.4 Handling Exceptions
4.2.5 Coping with Unchecked Exceptions
4.3   Programming with Exceptions  
4.3.1 Reflecting and Masking
4.4   Design Issues  
4.4.1 When to Use Exceptions
4.4.2 Checked versus Unchecked Exceptions
4.5   Defensive Programming  
4.6   Summary  
Exercises
5 Data Abstraction                    
5.1   Specifications for Data Abstractions  
5.1.1 Specification of IntSet
5.1.2 The Poly Abstraction
5.2   Using Data Abstractions  
5.3   Implementing Data Abstractions  
5.3.1 Implementing Data Abstractions in Java
5.3.2 Implementation of IntSet
5.3.3 Implementation of Poly
5.3.4 Records
5.4   Additional Methods  
5.5   Aids to Understanding Implementations  
5.5.1 The Abstraction Function
5.5.2 The Representation Invariant
5.5.3 Implementing the Abstraction Function and Rep Invariant
5.5.4 Discussion
5.6   Properties of Data Abstraction Implementations  
5.6.1 Benevolent Side Effects
5.6.2 Exposing the Rep
5.7   Reasoning about Data Abstractions  
5.7.1 Preserving the Rep Invariant
5.7.2 Reasoning about Operations
5.7.3 Reasoning at the Abstract Level
5.8   Design Issues  
5.8.1 Mutability
5.8.2 Operation Categories
5.8.3 Adequacy
5.9   Locality and Modifiability  
5.10  Summary  
Exercises  
6   Iteration Abstraction              
6.1   Iteration in Java  
6.2   Specifying Iterators  
6.3   Using Iterators  
6.4   Implementing Iterators  
6.5   Rep Invariants and Abstraction Functions for Generators  
6.6   Ordered Lists  
6.7   Design Issues  
6.8   Summary  
Exercises  
7   Type Hierarchy                    
7.1   Assignment and Dispatching  
7.1.1 Assignment
7.1.2 Dispatching
7.2   Defining a Type Hierarchy  
7.3   Defining Hierarchies in Java  
7.4   A Simple Example  
7.5   Exception Types  
7.6   Abstract Classes  
7.7   Interfaces  
7.8   Multiple Implementations  
7.8.1 Lists
7.8.2 Polynomials
7.9   The Meaning of Subtypes  
7.9.1 The Methods Rule
7.9.2 The Properties Rule
7.9.3 Equality
7.10  Discussion of Type Hierarchy  
7.11  Summary  
Exercises  
8   Polymorphic Abstractions                
8.1   Polymorphic Data Abstractions  
8.2   Using Polymorphic Data Abstractions  
8.3   Equality Revisited  
8.4   Additional Methods  
8.5   More Flexibility  
8.6   Polymorphic Procedures  
8.7   Summary  
Exercises  
9   Specifications
9.1   Specifications and Specificand Sets  
9.2   Some Criteria for Specifications  
9.2.1 Restrictiveness
9.2.2 Generality
9.2.3 Clarity
9.3   Why Specifications?  
9.4   Summary  
Exercises  
10   Testing and Debugging
10.1  Testing  
10.1.1 Black-Box Testing
10.1.2 Glass-Box Testing
10.2  Testing Procedures  
10.3  Testing Iterators  
10.4  Testing Data Abstractions  
10.5  Testing Polymorphic Abstractions  
10.6  Testing a Type Hierarchy  
10.7  Unit and Integration Testing  10.8  Tools for Testing  
10.9  Debugging  
10.10 Defensive Programming  
10.11 Summary  
Exercises  
11   Requirements Analysis
11.1  The Software Life Cycle  
11.2  Requirements Analysis Overview  
11.3  The Stock Tracker  
11.4  Summary  
Exercises  
12   Requirements Specifications            
12.1  Data Models  
12.1.1 Subsets
12.1.2 Relations
12.1.3 Textual Information
12.2  Requirements Specifications  
12.3  Requirements Specification for Stock Tracker  
12.3.1 The Data Model
12.3.2 Stock Tracker Specification
12.4  Requirements Specification for a Search Engine  
12.5  Summary  
Exercises  
13 Design                            
13.1  An Overview of the Design Process  
13.2  The Design Notebook  
13.2.1 The Introductory Section
13.2.2 The Abstraction Sections
13.3  The Structure of Interactive Programs  
13.4  Starting the Design  
13.5  Discussion of the Method  
13.6  Continuing the Design  
13.7  The Query Abstraction  
13 8  The WordTable Abstraction  
13.9  Finishing Up  
13.10 Interaction between FP and UI  
13.11 Module Dependency Diagrams versus Data Models  
13.12 Review and Discussion  
13.12.1 Inventing Helpers
13.12.2 Specifying Helpers
13.12.3 Continuing the Design
13.12.4 The Design Notebook
13.13 Top-Down Design  
13.14 Summary  
Exercises  
14   Between Design and Implementation    
14.1  Evaluating a Design  
14.1.1 Correctness and Performance
14.1.2 Structure
14.2  Ordering the Program development Process  
14.3  Summary  
Exercises  
15   Design Patterns                    
15.1  Hiding Object Creation  
15.2  Neat Hacks  
15.2.1 Flyweights
15.2.2 Singletons
15.2.3 The State Pattern
15.3  The Bridge Pattern  
15.4  Procedures Should Be Objects Too  
15.5  Composites  
15.5.1 Traversing the Tree
15.6  The Power of Indirection  
15.7  Publish/Subscribe  
15.7.1 Abstracting Control
15.8  Summary  
Exercises  
Glossary  
Index  

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)