Chapter 1 presents an introduction to the object-oriented world consisting of objects and object communication via the exchange of messages. Object-oriented concepts and terminology used in object-oriented methodology are discussed in chapter 2.
Chapter 3 shows how these concepts materialize in the form of Java code and
representations. It discusses the basic features and syntax of Java and builds upon the concepts using an incremental Counter example.
Following on from language syntax, chapter 4 demonstrates the standard pro-
gramming environment using the Java Development Kit (JDK), and how a class
definition may be compiled and executed, integrated and reused within other code
fragments. The chapter also delves into using the Java Application Programming
Interface (API) to demonstrate the ease and productivity gains of code libraries.
Chapter 5 returns to the discussion of objects, in particular, the organization of objects into manageable classes. The concept of class enables a developer to organize a complex problem domain into more manageable components. Grouping objects into classes is an act known as classification in object-oriented modeling. When classes are formed, they can be further distinguished into superclasses or subclasses, according to their similarities or differences in properties. Class hierarchies can then be formed. The creation of superclasses and subclasses is achieved through abstracttion mechanisms known as generalization and specialization respectively. Classification, generalization and specialization are thus important abstraction mechanisms for organizing objects and managing complexities.
Inheritance is discussed in chapter 6. Common properties of classes can be shared with other classes of objects via the inheritance mechanism. It is through inheritance that software component reuse is possible in object-oriented programming. Software reusability is important because code need notbe produced from scratch, thereby increasing the productivity of developers.
Another topic close to the heart of object-oriented programming is polymorphism.
This topic is concerned with object messaging and how objects of different classes
respond to the same message. With polymorphism, objects of different class definition
can respond to the same message with the appropriate method. In this way, generic
software code can be produced, thus enhancing the maintainability of software systems.
Polymorphism is supported by dynamic binding and operation overloading, topics
that are central to the discussion in chapter 7.
Enhancing software maintainability is a significant software development
objective. A programming technique known as Structured Programming was intro-
for achieving maintainable software. Modularity is emphasized in object-oriented
duced in the 1980s, promoting modularity as a Software Engineering principle