| Preface | p. xv |
| Acknowledgments | p. xix |
| Objects, UML, and Java | p. 1 |
| Object Orientation | p. 2 |
| Object-Oriented Languages | p. 3 |
| Object-Oriented Design and the UML | p. 4 |
| The Payoff of Objects | p. 5 |
| Chapter Summary | p. 5 |
| The Essence of Objects | p. 7 |
| What Is an Object-Oriented System? | p. 9 |
| Fundamental Properties of an Object-Oriented System | p. 10 |
| Abstraction with Objects | p. 13 |
| Encapsulated Classes | p. 13 |
| Communication via Messages | p. 14 |
| Object Lifetime | p. 15 |
| Class Hierarchies | p. 18 |
| Polymorphism | p. 25 |
| An Example: Putting It All Together | p. 27 |
| Other OO Concepts | p. 29 |
| Abstract Classes | p. 29 |
| Visibility of Methods | p. 30 |
| Class Versus Instance | p. 32 |
| Accessing Objects | p. 33 |
| A Low-Level View of Objects | p. 34 |
| Chapter Summary | p. 36 |
| Resources | p. 37 |
| Objects in Java | p. 39 |
| Defining Classes in Java | p. 40 |
| Visibility | p. 44 |
| Inheritance | p. 48 |
| Association, Aggregation, and Composition | p. 54 |
| Java Interfaces | p. 57 |
| Object Lifetime in Java | p. 60 |
| Constructors | p. 60 |
| Garbage Collection | p. 61 |
| Memory Leaks | p. 61 |
| Class Versus Instance Methods and Attributes | p. 62 |
| Copies of Objects | p. 63 |
| Messages | p. 70 |
| Chapter Summary | p. 71 |
| Resources | p. 71 |
| Object-Oriented Analysis and Design | p. 73 |
| Software Methodologies | p. 76 |
| The Elements of a Software Project | p. 77 |
| The Essence of Object-Oriented Analysis | p. 81 |
| Object Discovery | p. 82 |
| Evaluate Candidate Objects | p. 84 |
| Determine Object Hierarchies | p. 87 |
| Discover Object Attributes | p. 88 |
| Discover Object Operations | p. 89 |
| The Essence of Object-Oriented Design | p. 92 |
| Some Design Guidelines | p. 94 |
| Get the Big Picture | p. 94 |
| Encapsulation | p. 95 |
| Designing Classes | p. 95 |
| Inheritance | p. 96 |
| General Guidelines | p. 97 |
| The Build and Release Phases | p. 98 |
| Building the Software | p. 98 |
| Releasing the Software | p. 100 |
| More on the UML | p. 101 |
| Chapter Summary | p. 103 |
| Resources | p. 104 |
| Object-Oriented Graphical User Interfaces with Swing | p. 105 |
| Graphical User Interfaces | p. 106 |
| A Typical Application | p. 106 |
| Dialog Boxes | p. 107 |
| Events | p. 108 |
| A Brief Introduction to Swing | p. 109 |
| Handling Swing Command Events | p. 112 |
| A Bunch of Options | p. 121 |
| MVC: Model/View/Controller | p. 122 |
| MVC with Java | p. 123 |
| A Small Swing MVC GUI Framework | p. 125 |
| A Simple Application Based on Wmvc | p. 137 |
| UML Sequence Diagram for Thermometer | p. 142 |
| Chapter Summary | p. 144 |
| Resources | p. 144 |
| A Case Study in Java | p. 145 |
| Analysis of MovieCat | p. 146 |
| Use Cases | p. 146 |
| Object, Attribute, and Operation Discovery | p. 148 |
| Evaluation | p. 151 |
| Design of MovieCat | p. 151 |
| Movie Class | p. 152 |
| MovieModel Class | p. 153 |
| View Classes | p. 155 |
| Putting It All Together | p. 158 |
| Implementation of MovieCat | p. 159 |
| MovieCat Class | p. 159 |
| Movie Class | p. 160 |
| MovieModel Class | p. 163 |
| MainView Class | p. 168 |
| MovieListView Class | p. 173 |
| MovieItemView Class | p. 175 |
| MovieEditor Class | p. 179 |
| Movie Helper Classes | p. 183 |
| Review | p. 185 |
| Chapter Summary | p. 187 |
| Design Patterns | p. 189 |
| What Are Design Patterns? | p. 189 |
| Using Design Patterns | p. 190 |
| Design Pattern Description Template | p. 190 |
| The Gang of Four Patterns | p. 191 |
| Creational Patterns | p. 192 |
| Structural Patterns | p. 192 |
| Behavioral Patterns | p. 193 |
| Example Design Patterns Used by Wmvc and MovieCat | p. 195 |
| MVC | p. 195 |
| Observer Pattern | p. 195 |
| Observer Pattern in Wmvc | p. 198 |
| Command Pattern in Wmvc | p. 199 |
| Other Patterns Used in Wmvc and MovieCat | p. 201 |
| Chapter Summary | p. 201 |
| Resources | p. 201 |
| Refactoring | p. 203 |
| What Is Refactoring? | p. 204 |
| The Basic Refactoring Process | p. 204 |
| When Do You Refactor? | p. 206 |
| Code Smells | p. 206 |
| When Not to Refactor | p. 207 |
| Some Refactorings | p. 208 |
| Refactoring Categories | p. 208 |
| Some Specific Refactorings | p. 209 |
| Chapter Summary | p. 211 |
| Resources | p. 211 |
| Software Development Methodologies Today | p. 213 |
| Methodologies for Large-Scale Projects | p. 214 |
| Overview of the Unified Process | p. 215 |
| Basic Concepts | p. 215 |
| Agile Methodologies for Small Projects | p. 217 |
| The Agile Alliance | p. 217 |
| Extreme Programming | p. 219 |
| DSDM | p. 222 |
| Crystal/Adaptive Software Development | p. 223 |
| Open Source Development | p. 223 |
| Open Source Is Distributed Development | p. 224 |
| Chapter Summary | p. 226 |
| Resources | p. 226 |
| Software Tools for Object-Oriented Development | p. 229 |
| GUIs Versus Consoles | p. 230 |
| Editors and IDEs | p. 231 |
| Characteristics of a Good Editor | p. 231 |
| Three Types of Editors | p. 232 |
| Emacs | p. 233 |
| Integrated Development Environments | p. 235 |
| VIDE | p. 236 |
| Borland J Builder | p. 237 |
| Sun Forte | p. 239 |
| Another IDE | p. 240 |
| Source-Code Control | p. 240 |
| CASE, Modeling, and UML Tools | p. 241 |
| ArgoUML | p. 241 |
| MagicDraw | p. 242 |
| Rational Software | p. 242 |
| TogetherSoft | p. 243 |
| Other UML Tools | p. 243 |
| Other Java Tools | p. 244 |
| Programming: A Personal Perspective | p. 245 |
| Programming | p. 246 |
| Your Code Never Dies | p. 246 |
| Program with Style | p. 247 |
| Know What You Are Doing | p. 248 |
| Write Practice Programs | p. 249 |
| Practice Incremental Programming | p. 249 |
| The Tools Matter | p. 249 |
| Objects Really Help | p. 250 |
| Testing | p. 250 |
| Debugging | p. 250 |
| Don't Reinvent the Wheel | p. 251 |
| Sometimes It Is Better to Do It Yourself | p. 251 |
| You Can Get Ideas Any Time | p. 251 |
| Get a Life | p. 252 |
| A Plan Matters | p. 252 |
| The Tools | p. 253 |
| Your Editor Really Matters | p. 253 |
| Know About the Time-Tested Tools | p. 253 |
| Know About the Latest Tools | p. 253 |
| Tools Go Away | p. 254 |
| The Work Environment | p. 254 |
| A Happy Programmer Is a Productive Programmer | p. 254 |
| Physical Environment | p. 254 |
| Flexibility | p. 255 |
| 40 Hours | p. 256 |
| The Team | p. 256 |
| Marketing Matters | p. 256 |
| Keep Up-to-Date | p. 257 |
| Share the Struggle | p. 257 |
| Let Programmers Help Make Policy | p. 257 |
| Let Your Boss Know What You Need | p. 258 |
| The Reference Software Story | p. 258 |
| Programming Resources | p. 258 |
| Use the Web | p. 259 |
| Watch Out for the Web | p. 259 |
| Use Open Source if You Can | p. 259 |
| Other Programmers | p. 259 |
| Web Sites | p. 259 |
| What Next? | p. 261 |
| Object Orientation | p. 261 |
| Java | p. 262 |
| More Terms You Need to Know | p. 262 |
| Distributed Computing Terms | p. 263 |
| Java-Related Terms from Sun | p. 264 |
| Other Terms | p. 265 |
| Glossary | p. 267 |
| Index | p. 279 |
| Table of Contents provided by Syndetics. All Rights Reserved. |