This book, meant to serve as a textbook on the subject, provides a comprehensive introduction to OOAD. The salient points of its coverage are:
The book stresses on implementation aspects, without which learning is incomplete. This is achieved through case studies. The case study of a library system is carried through most of the book, and it is using this that the various concepts of analysis and design are introduced. Thus, the theory is never separate from the implementation aspect and hence the learning is more meaningful. All the main case studies used in this book have been implemented by the authors using Java. The text is liberally peppered with snippets of code, which are short, fairly self-explanatory and easy to read. The appendix on Java has a short tutorial on the language, which is a quick guide to understanding the implementation aspects of the code in the book.
Part I BASIC OBJECT-ORIENTED CONCEPTS 1 Introduction 1.1 What is Object-Oriented Development? 1.2 Key Concepts of Object-Oriented Design 1.3 Other Related Concepts 1.4 Benefits and Drawbacks of the Paradigm 1.5 History 1.6 Discussion and Further Reading Exercises 2 Basics of Object-Oriented Programming 2.1 The Basics 2.2 Implementing Classes 2.3 Programming with Multiple Classes 2.4 Interfaces 2.5 Abstract Classes 2.6 Comparing Objects for Equality 2.7 A Notation for Describing Object-Oriented Systems 2.8 Discussion and Further Reading Projects Exercises 3 Relationships between Classes 3.1 Association 3.2 Inheritance 3.3 Genericity 3.4 Discussion and Further Reading Projects Exercises 4 Language Features for Object-Oriented Implementation 4.1 Organising the Classes 4.2 Collection Classes 4.3 Exceptions 4.4 Run-Time Type Identification 4.5 Graphical User Interfaces Programming Support 4.6 Long-Term Storage of Objects 4.7 Discussion and Further Reading Projects Exercises Part II INTRODUCTION TO OBJECT-ORIENTED ANALYSIS, DESIGN, IMPLEMENTATION AND REFACTORING 5 Elementary Design Patterns 5.1 Iterator 5.2 Singleton 5.3 Adapter 5.4 Discussion and Further Reading Projects Exercises 6 Analysing a System 6.1 Overview of the Analysis Phase 6.2 Stage 1: Gathering the Requirements 6.2.1 Case study introduction 6.3 Functional Requirements Specification 6.4 Defining Conceptual Classes and Relationships 6.5 Using the Knowledge of the Domain 6.6 Discussion and Further Reading Projects Exercises 7 Design and Implementation 7.1 Design 7.2 Implementing Our Design 7.3 Discussion and Further Reading Projects Exercises 8 How ‘Object-Oriented’ is Our Design? 8.1 Introduction 8.2 A First Example of Refactoring 8.3 A Second Look at Remove Books 8.4 Using Generics to Refactor Duplicated Code 8.5 Discussion and Further Reading Exercises Part III ADVANCED CONCEPTS IN OBJECT-ORIENTED DESIGN 9 Exploring Inheritance 9.1 Introduction 9.2 Applications of Inheritance 9.3 Inheritance: Some Limitations and Caveats 9.4 Type Inheritance 9.5 Making Enhancements to the Library Class 9.6 Improving the Design 9.7 Consequences of Introducing Inheritance 9.8 Multiple Inheritance 9.9 Discussion and Further Reading Projects Exercises 10 Modelling with Finite State Machines 10.1 Introduction 10.2 A Simple Example 10.3 Finite State Modelling 10.4 A First Solution to theMicrowave Problem 10.5 Using the State Pattern 10.6 Improving Communication between Objects 10.7 Redesign Using the Observer Pattern 10.8 Eliminating the Conditionals 10.9 Designing GUI Programs Using the State Pattern 10.10 Discussion and Further Reading Projects Exercises 11 Interactive Systems and the MVC Architecture 11.1 Introduction 11.2 The MVC Architectural Pattern 11.3 Analysing a Simple Drawing Program 11.4 Designing the System 11.5 Design of the Subsystems 11.6 Getting into the Implementation 11.7 Implementing the Undo Operation 11.8 Drawing Incomplete Items 11.9 Adding a New Feature 11.10 Pattern-Based Solutions 11.11 Discussion and Further Reading Projects Exercises 12 Designing with Distributed Objects 12.1 Client/Server Systems 12.2 Java Remote Method Invocation 12.3 Implementing a An Object-Oriented System on the Web 12.4 Discussion and Further Reading Exercises Appendix A: Java Essentials A.1 Language Basics A.2 A Simple Java Program A.3 Primitive Data Types A.4 Relational Operators A.5 A Note on Input and Output A.6 Selection Statements A.7 Loops A.8 Methods A.9 Arrays Bibliography Index