Preface.Introduction to object-oriented software.Chapter 1. Data abstraction: introductory concepts.Chapter 2. Defining a simple class.Chapter 3. Designing interacting classes.Chapter 4. Conditions.Chapter 5. Programming by contract.Chapter 6. Testing.Chapter 7. Building a text-based user interface: iteration and composition.Chapter 8. Putting a system together.Chapter 9. Interfaces.Chapter 10. Inheritance.Chapter 11. Modeling with abstraction.Chapter 12. Lists.Chapter 13. Implementing lists: array implementations.Chapter 14. Sorting and searching.Chapter 15. Failures and exceptions.Chapter 16. Stream i/o.Chapter 17. Building a graphical user interface.Chapter 18. Integrating user interface and model: the Model-View-Controller pattern.Chapter 19. Recursion.Chapter 20. Implementing lists: Linked implmentations.Chapter 21. Iterators.Supplement A: Systems and software.Supplement B: Programming errors.Supplement C: Applets.Supplement D: Additional Java 1.5 features.Appendix I: Compiling, executing, and documenting. Appendix II: DrJava.Appendix III: Control and basic latin: The first 128 Unicode characters.References.Index.