Home > Store

Essence of Object-Oriented Programming with Java? and UML, The

Register your product to gain access to bonus material or receive a coupon.

Essence of Object-Oriented Programming with Java? and UML, The


  • Your Price: $35.99
  • List Price: $44.99
  • Usually ships in 24 hours.


  • Copyright 2002
  • Dimensions: 7-3/8" x 9-1/4"
  • Pages: 320
  • Edition: 1st
  • Book
  • ISBN-10: 0-201-73410-9
  • ISBN-13: 978-0-201-73410-2

This book can give any Java developer -- regardless of experience -- the firm foundation they need to achieve the full benefits of object-oriented programming. The book combines practical introductions to UML, object-oriented methodologies, design patterns, libraries, and frameworks -- giving developers all the skills they need to begin writing robust object-oriented programs -- and to tackle the entire field of object-oriented development. Leading developer Bruce Wampler begins with a brief introduction to objects and their benefits; then introduces the fundamental concepts of object orientation and shows how they can be implemented in Java -- starting with the basics, and moving on to advanced topics such as object lifetime and copies of objects. He moves on to Object-Oriented Analysis and Design, introducing the essential concepts at the heart of every methodology. Next, he presents the essence of today's leading techniques for building effective object-oriented Java systems -- including design patterns, refactoring, and more. Wampler concludes by drawing on his decades of development experience to share powerful personal guidelines for creating more effective software. For all application developers who know at least the basics of Java, and are seeking to strengthen their object-oriented programming skills.


CD Contents

Untitled Document Download the CD Contents related to this title.

Sample Content

Online Sample Chapter

Introduction to Objects, UML, and Java

Downloadable Sample Chapter

Click below for Sample Chapter related to this title:

Table of Contents

(NOTE: Most chapters conclude with a Summary.)



1. Objects, UML, and Java.

Object Orientation.

Object-Oriented Languages.

Object-Oriented Design and the UML.

The Payoff of Objects.

2. The Essence of Objects.

What Is an Object-Oriented System?

Fundamental Properties of an Object-Oriented System.

Abstraction with Objects.

Encapsulated Classes.

Communication via Messages.

Object Lifetime.

Class Hierarchies.


An Example—Putting it All Together.

Other OO Concepts.

Abstract Classes.

Visibility of Methods.

Class versus Instance.

Accessing Objects.

A Low-Level View of Objects.


3. Objects in Java.

Defining Classes in Java.



Association, Aggregation, and Composition.

Java Interfaces.

Object Lifetime in Java.


Garbage Collection.

Memory Leaks.

Class versus Instance Methods and Attributes.

Copies of Objects.



4. Object-Oriented Analysis and Design.

Software Methodologies.

The Elements of a Software Project 84

The Essence of Object-Oriented Analysis.

Object Discovery.

Evaluate Candidate Objects.

Determine Object Hierarchies.

Discover Object Attributes.

Discover Object Operations.

The Essence of Object-Oriented Design.

Some Design Guidelines.

Get the Big Picture.


Designing Classes.


General Guidelines.

The Build and Release Phases.

Building the Software.

Releasing the Software.

More on the UML.


5. Object-Oriented Graphical User Interfaces with Swing.

Graphical User Interfaces.

A Typical Application.

Dialog Boxes.


A Brief Introduction to Swing.

MVC: Model, View, Controller.

MVC with Java.

A Small Swing MVC GUI Framework.

A Simple Application Based on Wmvc.

UML Sequence Diagram for Thermometer.


6. A Case Study in Java.

Analysis of MovieCat.

Movie Class.

MovieModel Class. View Classes.

Putting It All Together.

Implementation of MovieCat.

Design of MovieCat.

MovieCat Class.

Movie Class.

MovieModel Class.

MainView Class.

MovieListView Class.

MovieItemView Class.

MovieEditor Class.

Movie Helper Classes.


7. Design Patterns.

What are Design Patterns?

using Design Patterns.

Designing Pattern Description Templates.

The Gang of Four Patterns.

Example Design Patterns Used by Wmvc and MovieCat.

Observer Pattern.

Observer Pattern in Wmvc.

Command Pattern in Wmvc.

Other Patterns Used in Wmvc and MovieCat.


8. Refactoring.

What Is Refactoring?

The Basic Refactoring Process.

When do You Refactor?

Code Smells.

When Not to Refactor.

Some Refactorings.

Refactoring Categories.

Some Refactorings.

Refactoring Categories.

Some Specific Refactorings.


9. Software Development Methodologies.

Methodologies for Large Scale Projects.

Overview of the Unified Process

Basic Concepts.

Agile Methodologies for Small Projects.

Agile Alliance.

Extreme Programming.


Crystal/Adaptive Software Development.

Source Development.

Open Source Development.

Open Source Is Distributed Development


10. Software Tools for Object-Oriented Development.

GUIs versus Consoles.

Characteristics of a Good Editor.

Three Types of Editors.


Integrated Development Environments.


Borland JBuilder.

Sun Forte.

Another IDE.

Source-Code Control.

CASE, Modeling, and UML Tools.



Rational Software.


Other UML Tools.

11. Programming—A Personal Perspective.


Your Code Never Dies.

Programming with Style.

Know What You are Doing.

Write Practice Programs.

Practical Incremental Programming.

The Tools Matter.

Objects Rally Help.



Don't Reinvent the Wheel.

Sometimes It Is Better to Do It Yourself.

You Can Get Ideas Any Time.

Get a Life.

A Plan Matters.

The Tools.

Your Editor Really Matters.

Know About the Time-Tested Tools.

Know About the Latest Tools.

Tools Go Away.

The Work Environment.

A Happy Programmer Is a Productive Programmer.

Physical Environment.


40 Hours.

The Team.

Marketing Matters.

Keep Up-to-Date.

Share the Struggle.

Let Programmers Help Make Policy.

Let Your Boss Know What You Need.

The Reference Software Story.

Programming Resources.

Use the Web.

Watch Out for the Web.

Use Open Source if You Can.

Other Programmers.

Web Sites.

12. What Next?

Object Orientation.


More Terms You Need to Know.

Distributed Computing Terms.

Java-Related Terms from Sun.

Other Terms.


Index. 0201734109T12052001


Why This Book?

The goal of this book is to cover what you need to know to develop object-oriented (OO) software using Java and the Unified Modeling Language (UML). When you are through with this book, you should understand object-oriented software development well enough to answer the following questions.

  • What is object orientation?
  • What is the UML?
  • What is object-oriented analysis and design (OOAD)?
  • How do you do OOAD?
  • What are object-oriented development methodologies?
  • How do you use Java to write truly object-oriented programs?
  • What is Swing, and how can you use it to write object-oriented graphical user interfaces?
  • What are design patterns?
  • What is refactoring?
  • What tools do you use to write object-oriented programs?
  • What are some guidelines for writing good code?
  • What do you need to read next to learn even more about object orientation?

Who Is This Book For?

This book is intended for programmers who know the basics of programming with Java and now want to understand the fundamentals of object-oriented software development. If you're fairly new to programming and have had a class or two in Java, you're probably starting to feel comfortable with Java. Now you're ready to reap the benefits of true object-oriented programming in Java, and this book will help you.

If you're an experienced programmer who wants to move from using an old-style procedural programming language to developing object-oriented systems in Java, this book is also for you. This book will take you well down the path to real object-oriented software development. If you have a Java manual available for quick reference, you will likely be able to learn the most important aspects of Java from the examples included in this book.

However, this book should not be the last one you read on object orientation, the UML, or Java. Instead, it should give you an essential understanding of objects so that you can read additional advanced and detailed books on the topic with greater purpose.

Overview of Chapters

Chapter 1 is a brief introduction to objects and the benefits of object-oriented software development.

Chapter 2 covers the fundamental concepts of object orientation. Object orientation has many important concepts, and of course, its own vocabulary. It is important for you to understand the main concepts and to be familiar with the specialized vocabulary. Even if you are familiar with some object-oriented concepts, you should review them in this chapter. Basic UML is also introduced.

Chapter 3 covers how to use Java to write object-oriented programs. It is not really a Java tutorial, but rather concentrates on using Java to implement object-oriented concepts. The first part of the chapter covers basic Java concepts. The later parts of the chapter cover more-advanced topics, such as object lifetime, copies of objects, and other concepts that are crucial when working with classes and objects.

Chapter 4 covers object-oriented analysis and design (OOAD). Rather than focus on any specific OOAD methodology, this chapter covers basics that are important for any methodology.

The first four chapters cover the essence of object orientation. Chapter 5 takes a look at graphical user interfaces (GUIs) and the Java Swing library, using the object-oriented perspective developed in the previous chapters. This object-oriented introduction to Swing is a somewhat different approach than is typically found in Swing tutorials.

Chapter 6 ties everything together with a case study of a small Java application. The fundamental OOAD concepts covered in Chapter 4 are used to design the application, and the Java and Swing concepts covered in Chapters 3 and 5 are used for the implementation.

The goal of the remainder of the book is to give you a good overview of the practical aspects of object-oriented programming. Chapter 7 introduces design patterns, a recent development that uses previously developed software design patterns to make designing new software easier. Chapter 8 covers refactoring, which is a disciplined object-oriented approach to revising and enhancing existing software. Chapter 9 gives brief overviews of some of the current software development methodologies for large- and small-scale object-oriented software projects. Chapter 10 covers some of the current software tools available for developing object-oriented software. Finally, Chapter 11 gives some of my personal guidelines for developing better software.

About the Author

I wrote my first program more than 30 years ago, and I have been developing software ever since. Most of that software has been for the PC marketplace, which means that my code has had to do a useful job, do it with as few bugs as possible, and be passed on to others for continued development. It has meant that I've had to be efficient and practical. For a long time, I've wanted to share my practical experience with other programmers.

So, what is all this experience I've had? Right after I finished my PhD in computer science at the University of Utah, in 1979, I worked on security software at the Sandia National Laboratory. However, I found the emerging personal computer world much more exciting. I left Sandia Labs, started a small software company, and wrote one of the first spelling checkers that ran on a PC. My next step was to write the first PC-based grammar and writing style checker.

I sold my company and began teaching computer science at the University of New Mexico, a relationship that lasted, at least on a part-time basis, until 1997. But I just couldn't stay out of the PC business. I continued my work on grammar checking, and in 1985 started a new PC software company with some partners in San Francisco. That company, Reference Software International, developed and marketed the Grammatik grammar checker. I was chief scientist there, and built a fairly large software development group to improve Grammatik and build other reference software products. WordPerfect bought Reference Software in 1992, and I went back to teaching at the University of New Mexico. It was there that I first thought of writing a book about object-oriented programming.

In the mean time, I designed and wrote an open source C++ GUI framework, called V. It is an easy-to-use framework for building simple GUI applications on Windows and X, and is in widespread use today. I also wrote the VIDE freeware editor and integrated development environment, which is also widely used.

Of all the advancements in software development I've witnessed over the years, object-oriented programming in Java and C++ has seemed the most significant in terms of how much easier it makes the programming task. While object orientation doesn't solve all the problems of software development, it makes development and long-term maintenance much easier. The result is a real gain in programming productivity. So it is well worth the effort to learn object-oriented software development.

The goal of this book is to introduce you to the essence of object orientation without overwhelming you with all the details of a specific object-oriented development methodology or every nuance of a programming language. After years of teaching programming and software engineering, I've found that learning to use Java or any other object-oriented programming language comes more easily if you first get a good understanding of objects and of designing systems using objects.

I have found that just because programmers are using an object-oriented programming language doesn't mean they are writing good object-oriented programs. Without a good understanding of object orientation, it is impossible to realize its full benefits, including the most important--software that is easier to write and maintain.


First, I must thank my family for putting up with me for the past year while I've been holed up in my office working on this book. I know they would have liked to have me around more, but writing this book has been something I've needed to do for many years. And special thanks to my son, Van, who created the great Kokopelli programmer drawing for the cover.

I also must thank Ross Venables, the editor at Addison-Wesley who discovered an early version of this book on my Web site and encouraged me to turn it into a complete book. And I want to thank Paul Becker, who took on this project and saw it to completion.

I want to thank all the other people who helped make this book better, from the reviewers and editors at Addison-Wesley to all those who sent me suggestions and feedback on the early drafts posted on my Web site.

Bruce E. Wampler
Glenwood Springs, Colorado




abstract classes
defined, 267
overview of, 29-30
Abstract Windowing Toolkit (AWT), 109, 110
defined, 11, 267
with objects, 13, 29
accessor, 267. See also getter
action events, Swing, 112
activity diagrams, UML, 102
actors, defined, 267
Ada, 3
Adaptive Software Development, 227
agents, defined, 267
defined, 21, 267
in Java, 54-57
in OO relationships, 27-29
in UML, 18
Agile Alliance
methodologies, small projects, 217-219
software development manifesto, 218-219
Web site resources, 217-219
anonymous listener, Swing, 118
application servers, 268
software tools, 241-242
Web site resources, 242
defined, 19, 268
in Java, 54-57
in OO relationships, 27-29
in UML, 17
class, 33
defined, 268
encapsulated classes, 14
instances, 33
of objects, 8
AWT (Abstract Windowing Toolkit), 109


base classes, defined, 268
Beck, Kent, 104, 219
default, 23
defined, 14, 268
expressed by methods, 16
black box, 2
Booch, Grady, 104, 214
borrowing association, 19
build and release phase, 98-100


compared with Java, 61-62, 271
debugging, 250
explicit description of objects in, 16
friend specifier, 32
inheritance in, 24, 48
as object oriented language, 1, 3-4, 9, 13, 245
support for, 236, 242, 243
call listeners, Java
anonymous, 118
defined, 273
inner class, 120
single class, 34
callback, defined, 34, 268
candidate objects, 84-87
change events, Swing, 112
versus instance, 32-33
versus methods and attributes, 62-63
class attributes
defined, 268
methods and, 30-32
class hierarchies, as principles, 29
class method, defined, 269
class notation, UML, 17-18
class-responsibility-collaborator (CRC) cards, 85-87
abstract, 29-30
concrete, 30
defined, 8, 268
defining in Java, 40-44
designing in OOAD, 95-96
encapsulated, 11-14
hierarchies, 12, 18
naming conventions for, 45
simple view, in UML,, 18
view, in MovieCat, 155-158
code listings. See program listings
code review, and ownership, 99
cohesion, defined, 269
COM, defined, 269
command design, 200
command events, Swing, 112-121
command patterns, Java, 199-201
communication, via messages, 14-15
defined, 21, 269
in Java, 54-57
in OO relationships, 27-29
concrete class, 269
constants, 46
defined, 16, 269
in Java, 60-61
containers, 33, 269
copies, of objects, 63-70
core class, 269
COS naming, 269
coupling, defined, 269
CRC (class-responsibility-collaborator cards), 85-87
Crystal/Adaptive Software Development, 223
Crystal, Web site resources, 227
Cunningham, Ward, 104, 219
customers, defined, 78, 269
CVS, 241
Cygwin, 231


DAP (directory access protocol), 270
DCE (distributed computing environment), 270
DCOM (distributed component object model), 270
debugging, 250
deep copy, defined, 64, 270
default behaviors, defined, 270
deployment diagrams, in UML, 103
derived subclasses, 23, 270
description templates, in design patterns, 190-191
design patterns
command pattern in Wmvc framework, 199-201
description templates, 190-191
Gang of Four, behavioral, 193-195
Gang of Four, creational, 192
Gang of Four, observer, 195-199
Gang of Four, structural, 192-193
overview of, 189-190
resources, 201
summary, 201
used by Wmvc and MovieCat, 195-198, 201
using, 190
destructors, defined, 270
developer organizations, defined, 78, 270
diagrams, class, 18
dialog boxes, in GUIs, 108
directory access protocol (DAP), 270
distributed component object model (DCOM), 270
distributed computing, defined, 270
distributed computing environment (DCE), 270
DSDM (Dynamic Systems Development Method), 222-223
dynamic binding
defined, 270
in polymorphism, 27
Dynamic Systems Development Method (DSDM), 222-223


desirable characteristics of, 231-232
Emacs, 233-234
GUI, 29, 233
modeless, 232
types of, 232-233
vi, 234-235
VIM, 235
Eiffel, 3
EJB (Enterprise JavaBeans), 270
Emacs, 233-234
encapsulated classes, 29
of classes, 13-14
defined, 11, 270
Enterprise JavaBeans (EJB), 270
command , in Swing, 112-121
defined, 270
Extreme Programming (XP)
overview of, 219-220
practices of, 220-221
rising interest in, 221-222
values of, 219-220
Web site resources, 227


feasibility, risk assessment, 78, 270
finalizer methods, Java, 271
Forte, 239-240
Fowler, Martin, 37
frameworks, of classes, 106, 271
friend class, 271
friend specifier, C++, 32
function. See method


Gang of Four
behavioral patterns, 193-195
creational patterns, 192
pattern templates, 191
patterns, using, 191-195
structural patterns, 192-193
garbage collection
defined, 17, 271
in Java, 60-61
in animals, 22
defined, 21, 271
generic/parameterized classes, defined, 271
getter methods
defined, 271
visibility and, 32
GNU project
in open source development, 224
Web site resources, 227, 234
graphical user interfaces (GUI)
dialog boxes, 107-108
events in, 108-109
overview of, 106-108
Swing as, 109-112
typical application, 106-107
vs. consoles, 230


has-a, whole/part relationships, 20, 271
class, 12, 18
defined, 19, 271
generalization/specialization in animals and, 22
whole/part relationships, 20
Hypertext Transfer Protocol (HTTP), 271


IBM Visual Age for Java. See Visual Age for Java
IDE. See integrated development environment (IDE)
identity, of objects, 17, 271
IDL (interface description language), 271
IIOP (Internet Inter-ORB Protocol), 272
implements, specification, 24, 272
in C++, 24, 48
defined, 23, 272
designing, OOAD, 96-97
in Java, 24, 48-54
multiple, 24
in OO relationships, 27-29
polymorphism and, 24
single, 24
in UML, 18, 22
initial specification, software, 78, 272
instance attributes, 33, 62-63, 272
instance methods, 33, 62-63, 272
instances, 16, 272
instantiation, of objects, 16, 272
integrated development environment (IDE)
software tools, 231, 235-236
VIDE, free IDE, 236-237
interaction, via messages, 11
interface description language (IDL), 272
defined, 273
Java, 57-60
Internet Inter-ORB Protocol (IIOP), 272
is-a, inheritance relationships, 21, 272
is-a tests, 25, 272
iterator method(s), 34, 273


J2EE (Java 2 Enterprise Edition), 273
Jacobson, Ivar, 214
Java. See also Java, support for object orientation
classes, 40-44
compared with C++, 61-62, 271
constructors, 60-61
creating new objects in, 35
garbage collection in, 16, 60-61
IDEs, Forte, 239-240
IDEs, JBuilder, 237-239
IDEs, Visual Age, 240
implements, defined, 24
inheritance, 24, 48-54
interfaces, 57-60
memory leaks in, 61-62
memory use in, 35
naming conventions, 45-46
object lifetime, 60
as object-oriented language, 3-4
references for tracking objects, 16
temporary storage, 35
visibility, 44-47
Java 2 Enterprise Edition (J2EE), 273
Java case study (MovieCat)
analysis of, objects, attributes and operation discovery, 148-151
analysis of, situation evaluation, 151
analysis of, use cases, 146-148
design of, Movie class, 152-153
design of, MovieModel class, 153-155
design of, view classes, 155-158
implementation of, MainView class, 168-172
implementation of, Movie class, 160-163
implementation of, Movie helper classes, 183-185
implementation of, MovieCat class, 159-160
implementation of, MovieEditor class, 179-183
implementation of, MovieItemView class, 175-179
implementation of, MovieListView class, 173-175
implementation of, MovieModel class, 163-168
other aspects, 262
overview of, 145-146
review and summary, 185-187
Java database connectivity technology (JDBC), 273
Java naming and directory interface (JNDI), 273
Java native interface (JNI), 273
Java, support for object orientation, 39-72. See also Java
association, aggregation and composition, 54-57
class vs. instance methods and attributes, 62-63
copies of objects, 63-70
defining classes, 40-44
inheritance, 48-54
interfaces, 57-60
messages, 70-71
object lifetime, 60-62
resources, 71
summary, 71
visibility, 44-47
Java Swing Library. See Swing
Java transaction API (JTA), 273
Java transaction service (JTS), 273
Java virtual machine (JVM), 273
JavaServer pages (JSP), 273
as Java IDE, 237-239
screen layout, 237
Web site resources, 238
JDBC (Java database connectivity technology), 273
JFrame, practical structure of, 111
software tools, 244
Web site resources, 244
JNDI (Java naming and directory interface), 273
JNI (Java native interface), 273
JSP (JavaServer pages), 273
JTA (Java transaction API), 273
JTS (Java transaction service), 273
JUnit, 244
JVM (Java virtual machine), 273


large-scale projects, 214-215
links, to classes, 34, 273
Lisp, 3
listeners. See call listeners, Java
listings, code. See program listings
listings, program. See program listings
low-level view, of objects, 34-36


software tools, 242
Web site resources, 242
MainView class, in Java case study, 168-172
member, defined, 273
memory, Java
leaks, 61-62
use, 35
message-oriented middleware (MOM), 274
communication via, 14-15
interaction via, 11
overview of, 70-71
methodologies, software, 76-77
class, 33
constructor, 16
defined, 14, 274
instance, 33
naming conventions for, 45
middleware, defined, 274
mix-in class/interface, 34, 274
Model/View/Controller (MVC)
diagram of, 122
with Java, 123-125
overview of, 122-123
sample application, MainView.java, 140-141
sample application, TemperatureView.java, 141-142
sample application, Thermometer app, 137-139
sample application, ThermometerModel.java, 139-140
UML sequence diagram for Thermometer, 142-143
Wmvc framework, controller subclasses, 133-136
Wmvc framework, WmvcApp class, 125-129
Wmvc framework, WmvcController class, 131-132
Wmvc framework, WmvcExecutor class, 136-137
Wmvc framework, WmvcModel class, 130
Wmvc framework, WmvcView class, 130-131
modifier, of objects, 274
modules, program, 274
MOM (message-oriented middleware), 274
Movie classes
in Java case study, 154
planning, 152-153
using, 160-163
Movie helper classes, 155, 183-185
MovieCat application. See Java case study (MovieCat)
MovieEditor class, 179-183
MovieItemView class, 175-179
MovieListView class, 173-175
MovieModel, 153-155, 156, 163-168
multiple inheritance
defined, 272
of subclasses, 24
multiplicity attribute, 19, 274
software tools, 243
Web site resources, 243
MVC. See Model/View/Controller (MVC)


choosing names, 88-89
COS naming standards, 269
Java conventions, 45-46
Netscape C language API (NSAPI), 274
nouns, in Java case study, 148-150
NSAPI (Netscape C language API), 275


Object Data Management Group (ODMG), 275
object database management system (ODMS), 275
Object Management Group (OMG), 4-5, 275
object orientation, 7-37. See also Java, support for object orientation
class defined, 8
concepts, abstract classes, 29-30
concepts, accessing objects, 33-34
concepts, class vs. inheritance, 32-33
concepts, low-level view, 34-36
concepts, visibility of methods, 30-32
defined, 10, 275
example, 27-29
fundamental properties, 10-18
fundamental properties, abstraction with objects, 10, 13
fundamental properties, class hierarchies, 12, 18-25
fundamental properties, communication via messages, 11, 14-15
fundamental properties, encapsulated classes, 11, 13-14
fundamental properties, object lifetime, 12, 15-18
fundamental properties, polymorphism, 12-13, 25-27
object defined, 7
object-oriented systems, 9-10
resources, 37
summary, 36
value of, 5
object-oriented-analysis and design (OOAD)
build and release phase, building the software, 98-100
build and release phase, releasing the software, 100-101
design guidelines, class design, 95-96
design guidelines, encapsulation, 95
design guidelines, general guidelines, 97-98
design guidelines, getting the big picture, 94-95
design guidelines, inheritance, 96-97
determining object hierarchies, 87
discovering object attributes, 88-89
discovering object operations, 89-91
elements of software projects, 77-79
essence of object-oriented design, 92-94
evaluating candidate objects, 84-85
introduction, 2-3
object discovery, 82-84
resources, 103
software methodologies, 76-77
summary, 103
UML diagrams, 101-103
object-oriented database management system (OODBMS), defined, 275
object-oriented database (OODB), 275
object-oriented-design and UML, 4-5
object-oriented graphical interfaces, Swing, 142-144
object-oriented languages
C++ as widely used example, 3-4
Java as language of choice, 3-4
list of, 3
overview of, 3-4
object-oriented relationships, 27-29
object request broker (ORB), 275
software tools, 243
Web site resources, 243
Objective C, 3
Objective Pascal, 3
abstraction with, 10, 13
accessing, in object-oriented languages, 33-34
attributes, 8, 148-151
copies of, 63-70
defined, 7, 274
discovery, in OOAD, 82-84
essence of, 36
evaluating candidate, 84-87
hierarchies, 87
identity, 16
instances, 16
instantiated, 16
Java, 35, 71-72
lifetime of, 15-18, 29, 60
low-level view of, 34-36
methods, 14
operations, 89-91, 148-151
overview of, 7-9
state of, 14
observer patterns
structure, 197
using, 195-198
in Wmvc, 198-199, 200
ODBC (open database connectivity), 275
ODMG (Object Data Management Group), 275
ODMS (object database management system), 275
OMG (Object Management Group), 4-5, 275
OOAD. See object-oriented-analysis and design (OOAD)
OODB (object-oriented database), 275
OODBMS (object-oriented database management system), 275
Open database connectivity (ODBC), 275
Open source
development, 223-226
Web site resources, 227
operations, 275. See also methods
ORB (object request broker), 275
overriding attributes or methods, 23, 275


package symbol diagrams, UML, 103
packages, naming conventions, 45
Page-Jones, Meilir, 37
part-of, whole/part relationships, 20, 275
pattern description templates, Gang of Four, 191
behavioral, 193-195
creational, 192
observer, 195-198
structural, 192-193, 200
using, 191-195
persistence, of objects, 275
POA (portable object adapter), 276
animal hierarchy, 26
as basic principle of object orientation, 29
in class hierarchies, 25-27
defined, 25, 276
dynamic binding, 27
overview of, 12-13
portable object adapter (POA), 276
private access, classes, 31, 276
problem domain, defined, 78, 276
problem statement, defined, 276
program listings
abstract base class for shapes (Shape.java), 51-52
anonymous inner classes for listeners (Simple2.java), 116-118
borrowing borrowed implements association (LibraryBook.java), 56-57
controller subclass for JButton (WmvcTBButton.java), 135-136
controller subclass JCheckBoxMenuItem (WmvcChkMenuItemCt1.java), 134-135
controller subclass JMenuItem (WmvcMenuItemCt1.java), 133-134
the controller (WmvcController.java), 131-132
default package visibility (PackageVisibility.java.Foo.java), 47
demonstrates reference, shallow, deep copy (CardHand.java), 65-66
to distinguish shallow and deep copy (Card.java), 67
the executor (Command pattern) (WmvcExecutor.java), 136
extends person, vector borrowing (Reader.java), 57
first version of circle (Circle.java), 43-44
helper class for evaluation attribute (MovieEvaluation.java), 183-185
links to parts (Library.java), 56
main view subclass (MainView.java), 140-141
MainView for menu and tool bars (MainView.java), 168-172
model subclass (ThermometerModel.java), 139-140
movie class (Movie.java), 161-163
MovieCat main app class (MovieCat.java), 159-160
MovieEditor edit a movie (MovieEditor.java), 179-183
MovieItemView detail each movie (MovieItemView.java), 175-179
MovieListView implements browser (MovieListView.java), 173-175
MovieModel class (MovieModel.java), 163-168
named inner classes for listeners (Simple2.java), 119-120
no links (Page.java), 56
point class (Point.java), 41
reader reader and LibraryBook (Borrowing.java), 57
rectangle derived from Shape (Rectangle.java), 53-54
RGB color class (Color.java), 49
root class (Person.java), 57
to set up JFrame (code excerpt), 110-111
single listener (Simple1.java), 114-115
thermometer subclass (thermometer.java), 138-139
top level base class, Wmvc (WmvcApp.java), 127-129
vector page composition links (Book.java), 56
view subclass fahrenheit and celsius (TemperatureView.java), 141-142
Wmvc model base class (WmvcMode1.java), 130
WmvcView base class (WmvcView.java), 130-131
programming languages, list of, 3
programming resources, 259
programming tips
code never dies, 246-247
debugging, 250-251
do it yourself, 251
don't reinvent the wheel, 251
getting ideas, 251-252
importance of practice, 249
importance of style, 247-248
incremental approach, 249
knowing what you are doing, 248
testing, 249-250
use of objects, 249-250
use of tools, 249-250
value of a balanced life, 252
value of planning, 252
programming tools
editors, 253
importance of, 249-250
tested and latest, 253-254
programming work environment
40-hour week, 256
communicating with management, 258
cooperating with marketing, 256-257
flexibility, 255-256
keeping up to date, 257
physical environment, 255
policy making, 257
team approach, 256
team building at Reference Software, 258
protected access, classes, 32, 276
public access, classes, 31, 276


Rational Rose, 242-243
Rational Unified Process (RUP)
basic concepts, 215-217
defined, 276
large-scale projects, 214-215
overview of, 216
categories of, 208-209
defined, 204
illustrations of, 209-210
overview of, 203-204
resources, 211
summary of, 205, 211
using, 204-205
Web site resources, 204
when indicated, 206
when not indicated, 207
reference copy, 64
reference, data elements, 17, 276
remote method invocation (RMI), 276
risk assessment, 78, 271
RMI (remote method invocation), 276
root classes, 23, 276
Rumbaugh, James, 214
RUP. See Rational Unified Process (RUP)


Scott, Kendall, 37
SCRUM, 227
selector, object state, 276
service. See method
servlet, Java modules, 277
setter method, 32, 277
shallow copy, 64
single inheritance, 24, 272
small-scale projects, 217-219
Smalltalk, 3
SoftModeler, 243
building, 98-100
code reviews and ownership, 99
project elements, 77-81
releasing, 100-101
software development methodologies
DSDM, 222-223
history of, 213-214
large-scale projects, basic concepts, 215-217
large-scale projects, overview, 214-215
large-scale projects, unified process (RUP), 215
open-source development, 223-226
resources, 226-227
small-scale projects, Agile Alliance, 217-219
small-scale projects, extreme programming, 219-222
summary, 226
software tools
ArgoUML, 241-242
CASE, 241-243
Concurrent Versions System (CVS), 240-241
editors, Emacs, 233-234
editors, overview, 231-232
editors, Vi, 234-235
GUIs vs. consoles, 230-231
IDEs, Forte, 239-240
IDEs, JBuilder,, 237-239
IDEs, VIDE, 236-237
IDEs, Visual Age, 240
Jikes, 244
JUnit, 244
MagicDraw, 242
mUML, 243
ObjectDomain, 243
overview of, 229
Rational Rose, 242-243
SoftModeler, 243
TogetherSoft, 243
specialization/generalization, 21, 22, 271
SQL (structured query language), 277
SQLJ (structured query language Java), 277
defined, 14, 277
diagrams, in UML, 102
expressed by attributes, 16
structured query language Java (SQLJ), 277
structured query language (SQL), 277
subclass, defined, 23, 277
superclass, defined, 23, 277
anonymous listener, 118
AWT and, 110
command events, 112-121
dialog window, 113
inner class listener, 120
introduction to, 109-112
MVC GUI framework (Wmvc), 125-137
options, 121
sequence in, 116
simple application (Thermometer), 137-142


temporary storage, in Java, 35
distributed computing, 263-264
Java-related, 264-265
other technical, 265-266
this (current object), 34, 277
TogetherSoft, 243


UML. See Unified Modeling Language (UML)
Unified Modeling Language (UML)
activity diagram, 102
aggregation, 18
associations, 17
class diagrams, 151
class notation, 17-18
collaboration, 101
deployment, 103
detail, 22, 92-93
diagrams, 80-81, 90-92, 101-103, 127, 142-143, 151
functions, 1
inheritance, 18
MovieCat design and, 158
MVC and, 138, 142-143
package symbol, 103
sequence diagrams, 90-91
standard specification of, 4-5
state, 101
use cases, 80
use cases
diagram, 81
Java, 146-148
UML, 80


variables, naming conventions, 46
in Java case study, 150-151
in object discovery, 83
Vi editor, 234-235
VIDE, 236-237
class, in MovieCat, 155-158
class, in UML, 18
VIM editor, 235
class attributes and methods, 30-32
defined, 31, 277
friend, 32
Java, 44-47
private, 31
protected, 32
public, 31
Visual Age for Java, 240


Web site resources
Adaptive Software Development, 227
Agile Alliance, 217-219
ArgoUML, 242
book, this, 229
Crystal, 227
CVS, 241
Cygwin, 231
Dynamic Systems Development Method, 222
Extreme Programming, 227
GNU Emacs, 234
GNU project, 227
JBuilder, 238
Jikes, 244
MagicDraw, 242
mUML, 243
Object Management Group, 4-5
ObjectDomain, 243
Open source, 227
Rational Rose, 242
refactoring, 204
SCRUM, 227
SoftModeler, 243
TogetherSoft, 243
VIM, 235
Visual Age for Java, 240
whole/part relationships, 20, 277
command patterns, 199-201
observer patterns, 198-199


XMI (XML metadata interchange), 277
XML, defined, 277
XML metadata interchange (XMI), 277
XP. See Extreme Programming (XP)


Submit Errata

More Information

Unlimited one-month access with your purchase
Free Safari Membership