Sold Out
Book Categories |
Foreword | xv | |
Preface | xvii | |
Part I | Introduction | 1 |
Chapter 1 | What Does It Mean to Be Object Oriented, Anyway? | 3 |
1.1 | Encapsulation | 9 |
1.2 | Information/Implementation Hiding | 12 |
1.3 | State Retention | 14 |
1.4 | Object Identity | 15 |
1.5 | Messages | 19 |
1.5.1 | Message structure | 19 |
1.5.2 | Message arguments | 21 |
1.5.3 | The roles of objects in messages | 23 |
1.5.4 | Types of message | 25 |
1.6 | Classes | 27 |
1.7 | Inheritance | 33 |
1.8 | Polymorphism | 38 |
1.9 | Genericity | 43 |
1.10 | Summary | 48 |
1.11 | Exercises | 50 |
1.12 | Answers | 52 |
Chapter 2 | A Brief History of Object Orientation | 57 |
2.1 | Where Did Object Orientation Come From? | 57 |
2.1.1 | Larry Constantine | 58 |
2.1.2 | O.-J. Dahl and K. Nygaard | 58 |
2.1.3 | Alan Kay, Adele Goldberg, and others | 58 |
2.1.4 | Edsger Dijkstra | 58 |
2.1.5 | Barbara Liskov | 59 |
2.1.6 | David Parnas | 59 |
2.1.7 | Jean Ichbiah and others | 59 |
2.1.8 | Bjarne Stroustrup | 59 |
2.1.9 | Bertrand Meyer | 60 |
2.1.10 | Grady Booch, Ivar Jacobson, and Jim Rumbaugh | 60 |
2.2 | Object Orientation Comes of Age | 60 |
2.3 | Object Orientation As an Engineering Discipline | 62 |
2.4 | What's Object Orientation Good For? | 64 |
2.4.1 | Analyzing users' requirements | 65 |
2.4.2 | Designing software | 65 |
2.4.3 | Constructing software | 66 |
2.4.4 | Maintaining software | 69 |
2.4.5 | Using software | 69 |
2.4.6 | Managing software projects | 70 |
2.5 | Summary | 73 |
2.6 | Exercises | 75 |
2.7 | Answers | 76 |
Part II | The Unified Modeling Language | 77 |
Chapter 3 | Basic Expression of Classes, Attributes, and Operations | 85 |
3.1 | The Class | 85 |
3.2 | Attributes | 87 |
3.3 | Operations | 89 |
3.4 | Overloaded Operations | 92 |
3.5 | Visibility of Attributes and Operations | 93 |
3.6 | Class Attributes and Operations | 94 |
3.7 | Abstract Operations and Classes | 95 |
3.8 | The Utility | 97 |
3.9 | Parameterized Classes | 98 |
3.10 | Summary | 100 |
3.11 | Exercises | 102 |
3.12 | Answers | 103 |
Chapter 4 | Class Diagrams | 107 |
4.1 | The Generalization Construct | 108 |
4.1.1 | Single inheritance | 108 |
4.1.2 | Multiple inheritance | 110 |
4.1.3 | Subclass partitioning | 110 |
4.1.4 | Partitioning discriminators | 114 |
4.2 | The Association Construct | 115 |
4.2.1 | The basic UML notation for associations | 116 |
4.2.2 | Associations depicted as classes | 119 |
4.2.3 | Higher-order associations | 120 |
4.2.4 | Navigability of associations | 122 |
4.3 | Whole/Part Associations | 123 |
4.3.1 | Composition | 123 |
4.3.2 | Aggregation | 126 |
4.4 | Summary | 130 |
4.5 | Exercises | 131 |
4.6 | Answers | 133 |
Chapter 5 | Object-Interaction Diagrams | 137 |
5.1 | The Collaboration Diagram | 138 |
5.1.1 | Depicting a message | 139 |
5.1.2 | Polymorphism in the collaboration diagram | 142 |
5.1.3 | Iterated messages | 143 |
5.1.4 | Use of self in messages | 144 |
5.2 | The Sequence Diagram | 146 |
5.3 | Asynchronous Messages and Concurrent Execution | 149 |
5.3.1 | Depicting an asynchronous message | 149 |
5.3.2 | The callback mechanism | 151 |
5.3.3 | Asynchronous messages with priority | 155 |
5.3.4 | Depicting a broadcast (nontargeted) message | 157 |
5.4 | Summary | 159 |
5.5 | Exercises | 161 |
5.6 | Answers | 162 |
Chapter 6 | State Diagrams | 164 |
6.1 | Basic State Diagrams | 165 |
6.2 | Nested States | 167 |
6.3 | Concurrent States and Synchronization | 171 |
6.4 | Transient States from Message-Result Arguments | 176 |
6.5 | Continuously Variable Attributes | 178 |
6.6 | Summary | 180 |
6.7 | Exercises | 182 |
6.8 | Answers | 184 |
Chapter 7 | Architecture and Interface Diagrams | 188 |
7.1 | Depicting System Architecture | 189 |
7.1.1 | Packages | 189 |
7.1.2 | Deployment diagrams for hardware artifacts | 191 |
7.1.3 | Deployment diagrams for software constructs | 193 |
7.2 | Depicting the Human Interface | 196 |
7.2.1 | The window-layout diagram | 196 |
7.2.2 | The window-navigation diagram | 198 |
7.2.3 | A brief digression: What's object oriented about a GUI? | 200 |
7.3 | Summary | 202 |
7.4 | Exercises | 203 |
7.5 | Answers | 204 |
Part III | The Principles of Object-Oriented Design | 207 |
Chapter 8 | Encapsulation and Connascence | 209 |
8.1 | Encapsulation Structure | 209 |
8.1.1 | Levels of encapsulation | 210 |
8.1.2 | Design criteria governing interacting levels of encapsulation | 212 |
8.2 | Connascence | 214 |
8.2.1 | Varieties of connascence | 214 |
8.2.2 | Contranascence | 220 |
8.2.3 | Connascence and encapsulation boundaries | 221 |
8.2.4 | Connascence and maintainability | 222 |
8.2.5 | Connascence abuses in object-oriented systems | 224 |
8.2.6 | The term connascence | 227 |
8.3 | Summary | 228 |
8.4 | Exercises | 230 |
8.5 | Answers | 231 |
Chapter 9 | Domains, Encumbrance, and Cohesion | 233 |
9.1 | Domains of Object Classes | 234 |
9.1.1 | The foundation domain | 235 |
9.1.2 | The architecture domain | 235 |
9.1.3 | The business domain | 236 |
9.1.4 | The application domain | 237 |
9.1.5 | The source of classes in each domain | 238 |
9.2 | Encumbrance | 241 |
9.2.1 | What is encumbrance? | 241 |
9.2.2 | The use of encumbrance | 244 |
9.2.3 | The Law of Demeter | 244 |
9.3 | Class Cohesion: A Class and Its Features | 246 |
9.3.1 | Mixed-instance cohesion | 247 |
9.3.2 | Mixed-domain cohesion | 248 |
9.3.3 | Mixed-role cohesion | 250 |
9.4 | Summary | 253 |
9.5 | Exercises | 254 |
9.6 | Answers | 255 |
Chapter 10 | State-Space and Behavior | 259 |
10.1 | State-Space and Behavior of a Class | 259 |
10.2 | The State-Space of a Subclass | 263 |
10.3 | The Behavior of a Subclass | 266 |
10.4 | The Class Invariant as a Restriction on a State-Space | 267 |
10.5 | Preconditions and Postconditions | 269 |
10.6 | Summary | 272 |
10.7 | Exercises | 273 |
10.8 | Answers | 274 |
Chapter 11 | Type Conformance and Closed Behavior | 278 |
11.1 | Class versus Type | 279 |
11.2 | The Principle of Type Conformance | 281 |
11.2.1 | The principles of contravariance and covariance | 282 |
11.2.2 | An example of contravariance and covariance | 283 |
11.2.3 | A graphic illustration of contravariance and covariance | 288 |
11.2.4 | A summary of the requirements for type conformance | 290 |
11.3 | The Principle of Closed Behavior | 291 |
11.4 | Summary | 294 |
11.2 | Exercises | 295 |
11.6 | Answers | 296 |
Chapter 12 | The Perils of Inheritance and Polymorphism | 299 |
12.1 | Abuses of Inheritance | 299 |
12.1.1 | Mistaken aggregates | 300 |
12.1.2 | Inverted hierarchy | 301 |
12.1.3 | Confusing class and instance | 302 |
12.1.4 | Misapplying is a | 306 |
12.2 | The Danger of Polymorphism | 309 |
12.2.1 | Polymorphism of operations | 309 |
12.2.2 | Polymorphism of variables | 312 |
12.2.3 | Polymorphism in messages | 314 |
12.2.4 | Polymorphism and genericity | 316 |
12.3 | Summary | 319 |
12.4 | Exercises | 320 |
12.5 | Answers | 322 |
Chapter 13 | Techniques for Organizing Operations | 327 |
13.1 | Mix-In Classes | 327 |
13.1.1 | A business example | 328 |
13.1.2 | A graphics example | 333 |
13.2 | Rings of Operations | 336 |
13.3 | Summary | 342 |
13.4 | Exercises | 343 |
13.5 | Answers | 344 |
Chapter 14 | Class Cohesion and Support of States and Behavior | 349 |
14.1 | State Support in a Class Interface | 350 |
14.2 | Behavior Support in a Class Interface | 352 |
14.3 | Operation Cohesion in a Class Interface | 360 |
14.4 | Summary | 364 |
14.5 | Exercises | 366 |
14.6 | Answers | 371 |
Chapter 15 | Designing a Software Component | 377 |
15.1 | What Is a Component? | 378 |
15.2 | Similarities and Differences Between Components and Objects | 380 |
15.3 | Example of a Component | 382 |
15.4 | Internal Design of a Component | 389 |
15.5 | Lightweight and Heavyweight Components | 397 |
15.6 | Advantages and Disadvantages of Using Components | 400 |
15.7 | Summary | 406 |
15.8 | Exercises | 408 |
15.9 | Answers | 409 |
Appendix A | Checklist for an Object-Oriented Design Walkthrough | 411 |
Appendix B | The Object-Oriented Design Owner's Manual | 417 |
Appendix C | The Blitz Guide to Object-Oriented Terminology | 423 |
Glossary | 425 | |
Bibliography | 443 | |
Index | 451 |
Login|Complaints|Blog|Games|Digital Media|Souls|Obituary|Contact Us|FAQ
CAN'T FIND WHAT YOU'RE LOOKING FOR? CLICK HERE!!! X
You must be logged in to add to WishlistX
This item is in your Wish ListX
This item is in your CollectionFundamentals of Object-Oriented Design in UML
X
This Item is in Your InventoryFundamentals of Object-Oriented Design in UML
X
You must be logged in to review the productsX
X
X
Add Fundamentals of Object-Oriented Design in UML, Object technology is increasingly recognized as a valuable tool in application development, but what is not yet recognized is the importance of design in the construction of robust and adaptable object-oriented (OO) applications. With the recent introduct, Fundamentals of Object-Oriented Design in UML to the inventory that you are selling on WonderClubX
X
Add Fundamentals of Object-Oriented Design in UML, Object technology is increasingly recognized as a valuable tool in application development, but what is not yet recognized is the importance of design in the construction of robust and adaptable object-oriented (OO) applications. With the recent introduct, Fundamentals of Object-Oriented Design in UML to your collection on WonderClub |