Skip to main content
main-content
Top

About this book

The second edition of this textbook includes revisions based on the feedback on the first edition. In a new chapter the authors provide a concise introduction to the remainder of UML diagrams, adopting the same holistic approach as the first edition.

Using a case-study-based approach for providing a comprehensive introduction to the principles of object-oriented design, it includes:

A sound footing on object-oriented concepts such as classes, objects, interfaces, inheritance, polymorphism, dynamic linking, etc.A good introduction to the stage of requirements analysisUse of UML to document user requirements and designAn extensive treatment of the design processCoverage of implementation issuesAppropriate use of design and architectural patternsIntroduction to the art and craft of refactoringPointers to resources that further the reader's knowledge

The focus of the book is on implementation aspects, without which the learning is incomplete. This is achieved through the use of case studies for introducing the various concepts of analysis and design, ensuring that the theory is never separate from the implementation aspects.

All the main case studies used in this book have been implemented by the authors using Java. An appendix on Java provides a useful short tutorial on the language.

Table of Contents

Basic Object-Oriented Concepts

Frontmatter

Chapter 1. Introduction

Abstract
The object-oriented paradigm is currently the most popular way of analysing, designing, and developing application systems, especially large ones. To obtain an understanding of this paradigm, we could begin by asking: What exactly does the phrase ‘object-oriented’ mean? Looking at it quite literally, labelling something as ‘object-oriented’ implies that objects play a central role, and we elaborate this further as a perspective that views the elements of a given situation by decomposing them into objects and object relationships.
Brahma Dathan, Sarnath Ramnath

Chapter 2. Basics of Object-Oriented Programming

Abstract
In the last chapter, we saw that the fundamental program structure in an object-oriented program is the object. We also outlined the concept of a class, which is similar to ADTs in that it can be used to create objects of types that are not directly supported by language.
Brahma Dathan, Sarnath Ramnath

Chapter 3. Relationships Between Classes

Abstract
In the previous chapter we studied classes and objects as the two building blocks of object-oriented systems. The structure of a software system is defined by the way in which these building blocks relate with one another and the behaviour of the system is defined by the manner in which the objects interact with one another.
Brahma Dathan, Sarnath Ramnath

Chapter 4. Language Features for Object-Oriented Implementation

Abstract
Many modern programming language features can be divided into two parts: basic features that are essential to use the programming paradigm and supporting concepts that are needed to facilitate the construction of more complex systems. So far, we have covered core language issues for the object-oriented paradigm, such as classes, inheritance, interfaces, and so on.
Brahma Dathan, Sarnath Ramnath

Introduction to Object-Oriented Analysis, Design, Implementation and Refactoring

Frontmatter

Chapter 5. Elementary Design Patterns

Abstract
As one may expect, a software engineer who has had experience developing a number of application systems is able to utilise the expertise gained in future projects. Although two applications may not be alike and may exhibit relatively little similarity at the outset, delving deeper into the design may reveal a number of similar issues. Working on a variety of projects, a software engineer gets exposure to problems that are common to multiple scenarios, which hones his/her ability to identify repeated instances of problems and spell out solutions for them fairly quickly.
Brahma Dathan, Sarnath Ramnath

Chapter 6. Analysing a System

Abstract
In Chaps. 68, we examine the essential steps in object-oriented software development: analysis, design, and implementation. To illustrate the process, we study a relatively simple example—a piece of software to manage a small library—whose function is limited to that of lending books to its members, receiving them back, doing the associated operations such as querying, registering members, etc., and keeping track of these transactions.
Brahma Dathan, Sarnath Ramnath

Chapter 7. Design and Implementation

Abstract
Having done an analysis of the requirements, we proceed to the design stage. In this step, we use the class structure produced by the analysis to design a system that behaves in the manner specified by the model. The main UML tool that we employ here is the sequence diagram. In a sequence diagram, the designer specifies the details of how the behaviour specified in the model will be realised. This process requires the system’s actions to be broken down into specific tasks, and the responsibility for these tasks to be assigned to the various players in the system.
Brahma Dathan, Sarnath Ramnath

Chapter 8. How ‘Object-Oriented’ Is Our Design?

Abstract
In the course of the last two chapters, we have seen that the design process involves making several choices.
Brahma Dathan, Sarnath Ramnath

Advanced Concepts in Object-Oriented Design

Frontmatter

Chapter 9. Exploring Inheritance

Abstract
In this chapter we look more deeply at the topic of inheritance, the basic concepts of which were covered in Chap. 3. Inheritance can be done in two ways: by subclassing existing classes and by implementing interfaces. The major goal of inheritance is reuse, but the two approaches achieve this goal in different ways.
Brahma Dathan, Sarnath Ramnath

Chapter 10. Modelling with Finite State Machines

Abstract
Our discussion thus far of the object-oriented software construction process has focused on the use case model. While this is a comprehensive technique that finds widespread application, it is inadequate for handling situations where the operations cannot be modeled by end-to-end use cases.
Brahma Dathan, Sarnath Ramnath

Chapter 11. Interactive Systems and the MVC Architecture

Abstract
So far we have seen examples and case-studies involving relatively simple software systems. This simplicity enabled us to use a fairly general step-by-step approach, viz., specify the requirements, model the behaviour, find the classes, assign responsibilities, capture class interactions, and so on.
Brahma Dathan, Sarnath Ramnath

Chapter 12. Designing with Distributed Objects

Abstract
As businesses grow, they often set up operations over large geographic areas that may span multiple states or even countries and often find it desirable to process data at their point of origin or create results at the location where they are needed.
Brahma Dathan, Sarnath Ramnath

Chapter 13. The Unified Modelling Language

Abstract
Throughout this book we have used several kinds of UML diagrams to describe various aspects of the system under consideration. UML is a complex language and it is hard to grasp all the details at the beginning.
Brahma Dathan, Sarnath Ramnath
Additional information