Introduction | p. 1 |
Goals for this Book | p. 1 |
Why Is Understanding Objects So Critical To Being a Successful OO Programmer? | p. 2 |
Who Is This Book Written For? | p. 3 |
What if You are Interested in Object Modeling, But Not Necessarily in Java Programming? | p. 5 |
How This Book is Organized | p. 5 |
Part 1 | p. 5 |
Part 2 | p. 5 |
Part 3 | p. 5 |
Conventions | p. 6 |
Which Version of Java is this Book Based On? | p. 6 |
A Final Thought Before We Get Started | p. 7 |
Tell Us What You Think | p. 7 |
Student Registration System Case Study | p. 8 |
The ABC's of Objects | p. 11 |
A Little Taste of Java | p. 13 |
Why Java? | p. 14 |
Java Language Basics | p. 23 |
Getting 'Hands On' With Java | p. 43 |
Summary | p. 44 |
Exercises | p. 45 |
Abstraction and Modeling | p. 47 |
Simplification Through Abstraction | p. 47 |
Generalization Through Abstraction | p. 48 |
Reuse of Abstractions | p. 52 |
Inherent Challenges | p. 53 |
Summary | p. 55 |
Exercises | p. 56 |
Objects and Classes | p. 59 |
What Is an Object? | p. 59 |
Data/State/Attributes | p. 60 |
Behavior/Operations/Methods | p. 61 |
Classes | p. 63 |
Instantiation | p. 64 |
Encapsulation | p. 66 |
Objects vs. Database Records | p. 66 |
Classes as Abstract Data Types | p. 67 |
Instantiating Objects: A Closer Look | p. 69 |
Objects as Attributes | p. 73 |
Composite Classes | p. 74 |
Three Distinguishing Features of an Object-Oriented Programming Language | p. 77 |
Summary | p. 77 |
Exercises | p. 78 |
Object Interactions | p. 81 |
Events Drive Object Collaboration | p. 81 |
Method Signatures | p. 83 |
Message Passing and Dot Notation | p. 87 |
Accessing Attributes via Dot Notation | p. 88 |
Delegation | p. 89 |
Access to Objects | p. 90 |
Objects as Clients and Servers/Agents | p. 92 |
Information Hiding/Visibility | p. 93 |
Accessor and Modifier Methods | p. 96 |
Exceptions to the Public/Private Rule | p. 99 |
Encapsulation Revisited | p. 102 |
Constructors | p. 107 |
Summary | p. 109 |
Exercises | p. 110 |
Relationships Between Objects | p. 113 |
Associations and Links | p. 113 |
Rules for Deriving Classes: The 'Do's' | p. 130 |
Rules for Deriving Classes: The 'Don'ts' | p. 133 |
A Few Words About Multiple Inheritance | p. 135 |
Three Distinguishing Features of an Object-Oriented Programming Language, Take 2 | p. 139 |
Summary | p. 139 |
Exercises | p. 140 |
Collections of Objects | p. 143 |
What are Collections? | p. 143 |
Inventing Your Own Collection Types | p. 153 |
Collections as Method Return Types | p. 156 |
Collections of Supertypes | p. 157 |
Composite Classes, Revisited | p. 158 |
Summary | p. 160 |
Exercises | p. 161 |
Some Final Concepts | p. 163 |
What is Polymorphism? | p. 164 |
Three Distinguishing Features of an Object-Oriented Programming Language | p. 169 |
Abstract Classes | p. 169 |
Interfaces | p. 175 |
Static Attributes | p. 179 |
Summary | p. 185 |
Exercises | p. 186 |
Object Modelling 101 | p. 189 |
The Object Modeling Process in a Nutshell | p. 191 |
The 'Big Picture' Goal of Object Modeling | p. 191 |
Our Object Modeling Process, in a Nutshell | p. 194 |
Summary | p. 197 |
Exercises | p. 198 |
Formalizing Requirements through Use Cases | p. 201 |
What are Use Cases? | p. 202 |
Actors | p. 203 |
Specifying Use Cases | p. 207 |
Matching Up Use Cases with Actors | p. 208 |
To Diagram or Not to Diagram? | p. 209 |
Summary | p. 210 |
Exercises | p. 210 |
Modeling the Static/ Data Aspects of the System | p. 213 |
Identifying Appropriate Classes | p. 214 |
Producing a Data Dictionary | p. 225 |
Determining Associations Between Classes | p. 226 |
Identifying Attributes | p. 230 |
UML Notation: Modeling the Static Aspects of an Abstraction | p. 230 |
Object Diagrams | p. 241 |
Information 'Flows' Along the Association 'Pipeline' | p. 244 |
'Mixing and Matching' Relationship Notations | p. 248 |
Association Classes | p. 250 |
Our 'Completed' Student Registration System Class Diagram | p. 252 |
Metadata | p. 258 |
Comparing UML and OMT Notations | p. 259 |
Summary | p. 260 |
Exercises | p. 261 |
Modeling the Dynamic/Behavioral Aspects of the System | p. 263 |
How Behavior Affects State | p. 264 |
Events | p. 266 |
Scenarios | p. 268 |
Sequence Diagrams | p. 272 |
Using Sequence Diagrams to Determine Methods | p. 277 |
Collaboration Diagrams | p. 279 |
Revised SRS Class Diagram | p. 280 |
Summary | p. 281 |
Exercises | p. 282 |
Wrapping Up Our Modeling Efforts | p. 285 |
Testing Your Model | p. 285 |
A Shortcoming in our Model | p. 286 |
Reusing Models: A Word About Design Patterns | p. 288 |
Summary | p. 290 |
Exercises | p. 291 |
Translating an Object 'Blueprint' into Java Code | p. 293 |
A Deeper Look At Java | p. 295 |
Setting Up a Java Programming Environment | p. 296 |
Anatomy of a Java Program, Revisited | p. 297 |
Anatomy of a Java Class | p. 305 |
Strings as Objects | p. 311 |
Java Expressions, Revisited | p. 314 |
Printing to the Screen, Revisited | p. 316 |
Arrays, Revisited | p. 316 |
Java Exception Handling | p. 320 |
Reading Data from the Command Line | p. 322 |
Accepting Keyboard Input | p. 324 |
Using constructors | p. 326 |
Using the 'this' Keyword for Object Self-Referencing | p. 330 |
Object Deletion and Garbage Collection | p. 333 |
Inheritance and Java | p. 335 |
Java's Collection Classes | p. 343 |
The 'final' Keyword | p. 353 |
Abstract Classes and Interfaces, Revisited | p. 356 |
Object Identities | p. 358 |
The toString() Method | p. 364 |
Inner Classes | p. 365 |
Summary | p. 368 |
Exercises | p. 370 |
Transforming Your Model into Java Code | p. 375 |
Suggestions for Getting the Maximum Value out of This and Subsequent Chapters | p. 376 |
The SRS Class Diagram, Revisited | p. 376 |
Debugging Tip | p. 421 |
Summary | p. 423 |
Exercises | p. 424 |
Rounding Out Your Application, Part 1 - Adding File Persistence | p. 427 |
What is File Persistence? | p. 428 |
CollectionWrapper (Encapsulating Collections; Reading from an ASCII File) | p. 436 |
Summary | p. 468 |
Exercises | p. 469 |
Rounding Out Your Application, Part 2 - Adding a Graphical User Interface | p. 471 |
Java GUIs: a Primer | p. 472 |
Java Event Handling | p. 522 |
Selecting an Item from a JList | p. 538 |
More Container Types: JDialog and JOptionPane | p. 545 |
One Step Dialogs with JOptionPane | p. 550 |
SRS, Take 3: Adding a GUI | p. 553 |
Summary | p. 597 |
Exercises | p. 598 |
Next Steps | p. 601 |
Jacquie's 'Tried and True' Method for Learning Java Properly | p. 602 |
Recommended Reading | p. 603 |
Your Comments, Please! | p. 604 |
Appendices | p. 607 |
Suggestions for Using This Book as a Textbook | p. 609 |
Alternative Case Studies | p. 613 |
Conference Room Reservation System | p. 613 |
Blue Skies Airline Reservation System | p. 615 |
Setting Up a Basic Object Modeling/Java Environment | p. 619 |
Object Modeling Tools | p. 619 |
The Java Software Developer's Kit | p. 619 |
'Odds and Ends' Tips for Getting Java Working | p. 620 |
Using the On-Line Java Documentation with Windows | p. 625 |
Special Tips for Using DOS Under Microsoft Windows | p. 626 |
SRS Source Code | p. 631 |
Downloading the Example Code | p. 631 |
Note to Experienced C++ Programmers | p. 635 |
How Polymorphism Works | p. 641 |
Index | p. 651 |
Table of Contents provided by Ingram. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.