|
|
1 | (12) |
|
1.1 Defining Software Design |
|
|
4 | (2) |
|
1.2 Design in the Software Development Process |
|
|
6 | (1) |
|
1.3 Capturing Design Knowledge |
|
|
7 | (2) |
|
1.4 Sharing Design Know-How |
|
|
9 | (2) |
|
|
11 | (1) |
|
|
12 | (1) |
|
|
13 | (26) |
|
2.1 Encapsulation and Information Hiding |
|
|
14 | (1) |
|
2.2 Encoding Abstractions as Types |
|
|
14 | (4) |
|
2.3 Scopes and Visibility Restrictions |
|
|
18 | (2) |
|
|
20 | (3) |
|
|
23 | (3) |
|
|
26 | (2) |
|
2.7 Exposing Internal Data |
|
|
28 | (3) |
|
|
31 | (3) |
|
|
34 | (1) |
|
|
34 | (3) |
|
|
37 | (2) |
|
|
39 | (22) |
|
3.1 Decoupling Behavior from Implementation |
|
|
40 | (3) |
|
3.2 Specifying Behavior with Interfaces |
|
|
43 | (2) |
|
|
45 | (2) |
|
|
47 | (3) |
|
|
50 | (3) |
|
3.6 The Iterator Design Pattern |
|
|
53 | (1) |
|
3.7 The Strategy Design Pattern |
|
|
54 | (1) |
|
3.8 The Interface Segregation Principle |
|
|
55 | (3) |
|
|
58 | (1) |
|
|
59 | (1) |
|
|
60 | (1) |
|
|
61 | (30) |
|
4.1 The Static and Dynamic Perspectives of a Software System |
|
|
61 | (1) |
|
4.2 Defining Object State |
|
|
62 | (2) |
|
|
64 | (2) |
|
4.4 Designing Object Life Cycles |
|
|
66 | (2) |
|
|
68 | (6) |
|
4.6 Final Fields and Variables |
|
|
74 | (2) |
|
4.7 Object Identity, Equality, and Uniqueness |
|
|
76 | (3) |
|
4.8 The Flyweight Design Pattern |
|
|
79 | (3) |
|
4.9 The Singleton Design Pattern |
|
|
82 | (1) |
|
4.10 Objects of Nested Classes |
|
|
83 | (4) |
|
|
87 | (1) |
|
|
88 | (1) |
|
|
89 | (2) |
|
|
91 | (28) |
|
5.1 Introduction to Unit Testing |
|
|
92 | (2) |
|
5.2 Unit Testing Framework Fundamentals with JUnit |
|
|
94 | (2) |
|
|
96 | (1) |
|
|
97 | (5) |
|
|
102 | (4) |
|
5.6 Tests and Exceptional Conditions |
|
|
106 | (2) |
|
5.7 Encapsulation and Unit Testing |
|
|
108 | (2) |
|
|
110 | (3) |
|
|
113 | (3) |
|
|
116 | (1) |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
119 | (36) |
|
6.1 Composition and Aggregation |
|
|
120 | (3) |
|
6.2 The Composite Design Pattern |
|
|
123 | (4) |
|
|
127 | (4) |
|
6.4 The Decorator Design Pattern |
|
|
131 | (5) |
|
6.5 Combining Composite and Decorator |
|
|
136 | (2) |
|
6.6 Polymorphic Object Copying |
|
|
138 | (5) |
|
6.7 The Prototype Design Pattern |
|
|
143 | (2) |
|
6.8 The Command Design Pattern |
|
|
145 | (3) |
|
|
148 | (2) |
|
|
150 | (1) |
|
|
150 | (2) |
|
|
152 | (3) |
|
|
155 | (36) |
|
7.1 The Case for Inheritance |
|
|
156 | (2) |
|
7.2 Inheritance and Typing |
|
|
158 | (3) |
|
|
161 | (3) |
|
|
164 | (4) |
|
|
168 | (2) |
|
7.6 Inheritance Versus Composition |
|
|
170 | (2) |
|
|
172 | (3) |
|
7.8 Revisiting the Decorator Design Pattern |
|
|
175 | (2) |
|
7.9 The Template Method Design Pattern |
|
|
177 | (4) |
|
7.10 Proper Use of Inheritance |
|
|
181 | (5) |
|
|
186 | (1) |
|
|
187 | (2) |
|
|
189 | (2) |
|
|
191 | (46) |
|
8.1 Motivating Inversion of Control |
|
|
192 | (2) |
|
8.2 The Model--View--Controller Decomposition |
|
|
194 | (1) |
|
8.3 The Observer Design Pattern |
|
|
195 | (10) |
|
8.4 Applying the Observer Design Pattern |
|
|
205 | (3) |
|
8.5 Introduction to Graphical User Interface Development |
|
|
208 | (3) |
|
8.6 Graphical User Interface Component Graphs |
|
|
211 | (6) |
|
|
217 | (4) |
|
8.8 The Visitor Design Pattern |
|
|
221 | (12) |
|
|
233 | (1) |
|
|
234 | (2) |
|
|
236 | (1) |
|
|
237 | (36) |
|
9.1 First-Class Functions |
|
|
238 | (1) |
|
9.2 Functional Interfaces, Lambda Expressions, and Method References |
|
|
239 | (7) |
|
9.3 Using Functions to Compose Behavior |
|
|
246 | (4) |
|
9.4 Using Functions as Suppliers of Data |
|
|
250 | (7) |
|
9.5 First-Class Functions and Design Patterns |
|
|
257 | (4) |
|
9.6 Functional-Style Data Processing |
|
|
261 | (8) |
|
|
269 | (1) |
|
|
269 | (3) |
|
|
272 | (1) |
|
A Important Java Programming Concepts |
|
|
273 | (8) |
|
|
273 | (1) |
|
|
274 | (1) |
|
|
275 | (1) |
|
|
275 | (2) |
|
A.5 Packages and Importing |
|
|
277 | (1) |
|
|
277 | (1) |
|
|
278 | (1) |
|
|
279 | (2) |
|
|
281 | (4) |
|
|
285 | (2) |
References |
|
287 | (2) |
Index |
|
289 | |