| Preface |
|
xv | |
| Acknowledgments |
|
xix | |
|
|
|
1 | (14) |
|
Decomposition and Abstraction |
|
|
2 | (2) |
|
|
|
4 | (8) |
|
Abstraction by Parameterization |
|
|
7 | (1) |
|
Abstraction by Specification |
|
|
8 | (2) |
|
|
|
10 | (2) |
|
The Remainder of the Book |
|
|
12 | (3) |
|
|
|
13 | (2) |
|
Understanding Objects in Java |
|
|
15 | (24) |
|
|
|
15 | (2) |
|
|
|
17 | (1) |
|
|
|
18 | (6) |
|
|
|
21 | (1) |
|
|
|
22 | (2) |
|
|
|
24 | (5) |
|
|
|
24 | (3) |
|
Conversions and Overloading |
|
|
27 | (2) |
|
|
|
29 | (1) |
|
|
|
30 | (2) |
|
|
|
30 | (1) |
|
|
|
31 | (1) |
|
|
|
32 | (1) |
|
|
|
33 | (6) |
|
|
|
35 | (4) |
|
|
|
39 | (18) |
|
The Benefits of Abstraction |
|
|
40 | (2) |
|
|
|
42 | (1) |
|
Specifications of Procedural Abstractions |
|
|
43 | (4) |
|
|
|
47 | (3) |
|
Designing Procedural Abstractions |
|
|
50 | (5) |
|
|
|
55 | (2) |
|
|
|
56 | (1) |
|
|
|
57 | (20) |
|
|
|
59 | (2) |
|
The Java Exception Mechanism |
|
|
61 | (6) |
|
|
|
61 | (1) |
|
|
|
62 | (2) |
|
|
|
64 | (1) |
|
|
|
65 | (1) |
|
Coping with Unchecked Exceptions |
|
|
66 | (1) |
|
Programming with Exceptions |
|
|
67 | (1) |
|
|
|
67 | (1) |
|
|
|
68 | (4) |
|
|
|
70 | (1) |
|
Checked versus Unchecked Exceptions |
|
|
70 | (2) |
|
|
|
72 | (2) |
|
|
|
74 | (3) |
|
|
|
75 | (2) |
|
|
|
77 | (48) |
|
Specifications for Data Abstractions |
|
|
79 | (6) |
|
|
|
80 | (3) |
|
|
|
83 | (2) |
|
|
|
85 | (1) |
|
Implementing Data Abstractions |
|
|
86 | (8) |
|
Implementing Data Abstractions in Java |
|
|
87 | (1) |
|
|
|
87 | (2) |
|
|
|
89 | (1) |
|
|
|
90 | (4) |
|
|
|
94 | (5) |
|
Aids to Understanding Implementations |
|
|
99 | (9) |
|
|
|
99 | (3) |
|
The Representation Invariant |
|
|
102 | (3) |
|
Implementing the Abstraction Function and Rep Invariant |
|
|
105 | (2) |
|
|
|
107 | (1) |
|
Properties of Data Abstraction Implementations |
|
|
108 | (4) |
|
|
|
108 | (3) |
|
|
|
111 | (1) |
|
Reasoning about Data Abstractions |
|
|
112 | (4) |
|
Preserving the Rep Invariant |
|
|
113 | (1) |
|
Reasoning about Operations |
|
|
114 | (1) |
|
Reasoning at the Abstract Level |
|
|
115 | (1) |
|
|
|
116 | (4) |
|
|
|
116 | (1) |
|
|
|
117 | (1) |
|
|
|
118 | (2) |
|
Locality and Modifiability |
|
|
120 | (1) |
|
|
|
121 | (4) |
|
|
|
121 | (4) |
|
|
|
125 | (22) |
|
|
|
128 | (2) |
|
|
|
130 | (2) |
|
|
|
132 | (2) |
|
|
|
134 | (3) |
|
Rep Invariants and Abstraction Functions for Generators |
|
|
137 | (1) |
|
|
|
138 | (5) |
|
|
|
143 | (1) |
|
|
|
144 | (3) |
|
|
|
144 | (3) |
|
|
|
147 | (42) |
|
Assignment and Dispatching |
|
|
149 | (3) |
|
|
|
149 | (1) |
|
|
|
150 | (2) |
|
Defining a Type Hierarchy |
|
|
152 | (1) |
|
Defining Hierarchies in Java |
|
|
152 | (2) |
|
|
|
154 | (7) |
|
|
|
161 | (1) |
|
|
|
161 | (5) |
|
|
|
166 | (1) |
|
|
|
167 | (7) |
|
|
|
168 | (3) |
|
|
|
171 | (3) |
|
|
|
174 | (9) |
|
|
|
176 | (3) |
|
|
|
179 | (3) |
|
|
|
182 | (1) |
|
Discussion of Type Hierarchy |
|
|
183 | (1) |
|
|
|
184 | (5) |
|
|
|
186 | (3) |
|
|
|
189 | (18) |
|
Polymorphic Data Abstractions |
|
|
190 | (3) |
|
Using Polymorphic Data Abstractions |
|
|
193 | (1) |
|
|
|
193 | (2) |
|
|
|
195 | (3) |
|
|
|
198 | (4) |
|
|
|
202 | (1) |
|
|
|
202 | (5) |
|
|
|
204 | (3) |
|
|
|
207 | (14) |
|
Specifications and Specificand Sets |
|
|
207 | (1) |
|
Some Criteria for Specifications |
|
|
208 | (7) |
|
|
|
208 | (3) |
|
|
|
211 | (1) |
|
|
|
212 | (3) |
|
|
|
215 | (2) |
|
|
|
217 | (4) |
|
|
|
219 | (2) |
|
|
|
221 | (34) |
|
|
|
222 | (8) |
|
|
|
223 | (4) |
|
|
|
227 | (3) |
|
|
|
230 | (1) |
|
|
|
231 | (1) |
|
Testing Data Abstractions |
|
|
232 | (3) |
|
Testing Polymorphic Abstractions |
|
|
235 | (1) |
|
|
|
235 | (2) |
|
Unit and Integration Testing |
|
|
237 | (2) |
|
|
|
239 | (3) |
|
|
|
242 | (7) |
|
|
|
249 | (2) |
|
|
|
251 | (4) |
|
|
|
252 | (3) |
|
|
|
255 | (16) |
|
|
|
255 | (4) |
|
Requirements Analysis Overview |
|
|
259 | (5) |
|
|
|
264 | (5) |
|
|
|
269 | (2) |
|
|
|
270 | (1) |
|
Requirements Specifications |
|
|
271 | (30) |
|
|
|
272 | (10) |
|
|
|
273 | (1) |
|
|
|
274 | (4) |
|
|
|
278 | (4) |
|
Requirements Specifications |
|
|
282 | (4) |
|
Requirements Specification for Stock Tracker |
|
|
286 | (5) |
|
|
|
286 | (3) |
|
Stock Tracker Specification |
|
|
289 | (2) |
|
Requirements Specification for a Search Engine |
|
|
291 | (7) |
|
|
|
298 | (3) |
|
|
|
298 | (3) |
|
|
|
301 | (46) |
|
An Overview of the Design Process |
|
|
301 | (3) |
|
|
|
304 | (6) |
|
|
|
304 | (4) |
|
|
|
308 | (2) |
|
The Structure of Interactive Programs |
|
|
310 | (5) |
|
|
|
315 | (8) |
|
|
|
323 | (1) |
|
|
|
324 | (2) |
|
|
|
326 | (6) |
|
The WordTable Abstraction |
|
|
332 | (1) |
|
|
|
333 | (1) |
|
Interaction between FP and UI |
|
|
334 | (2) |
|
Module Dependency Diagrams versus Data Models |
|
|
336 | (2) |
|
|
|
338 | (5) |
|
|
|
339 | (1) |
|
|
|
340 | (1) |
|
|
|
341 | (1) |
|
|
|
342 | (1) |
|
|
|
343 | (1) |
|
|
|
344 | (3) |
|
|
|
345 | (2) |
|
Between Design and Implementation |
|
|
347 | (22) |
|
|
|
347 | (13) |
|
Correctness and Performance |
|
|
348 | (5) |
|
|
|
353 | (7) |
|
Ordering the Program Development Process |
|
|
360 | (6) |
|
|
|
366 | (3) |
|
|
|
367 | (2) |
|
|
|
369 | (40) |
|
|
|
371 | (4) |
|
|
|
375 | (10) |
|
|
|
375 | (3) |
|
|
|
378 | (4) |
|
|
|
382 | (3) |
|
|
|
385 | (1) |
|
Procedures Should Be Objects Too |
|
|
386 | (4) |
|
|
|
390 | (9) |
|
|
|
393 | (6) |
|
|
|
399 | (3) |
|
|
|
402 | (4) |
|
|
|
403 | (3) |
|
|
|
406 | (3) |
|
|
|
407 | (2) |
| Glossary |
|
409 | (18) |
| Index |
|
427 | |