TOC PREV NEXT INDEX

Put your logo here!

The Essence of Object Oriented Programming with Java and UML


Preface

 

Why This Book?

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

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 using Java. So now, you're ready to really reap the benefits of true object-orientated 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 get you well down the path to real object-oriented software development. You will likely be able to learn the most important aspects of Java from the examples included in this book if you have a Java manual available for quick reference.

However, this book should not be the last one you read on object orientation, the UML, or Java. Instead, it should give you the essential understanding of objects so you can read more 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 very important for you to understand the main concepts, and to be familiar with the specialized vocabulary. Even if you already are familiar with some object-oriented concepts, you should review them in this chapter.

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 very basic Java concepts. However, the later parts of the chapter cover more advanced topics such as object lifetime, copies of objects, and other concepts that are very important when working with classes and objects.

Chapter 4 covers Object-Oriented Analysis and Design (OOAD). Rather than focusing on any specific OOAD methodology, Chapter 4 covers the basic concepts 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 Chapter 3 and 5 are used for the implementation.

The remainder of the book is less comprehensive in its treatment. The goal 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 help 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 both 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. That 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 some of my practical experience with other programmers.

So, what is all this experience I've had? Right after I finished my Ph.D. in Computer Science at the University of Utah in 1979, I started work at the Sandia National Laboratory working on security software. However, I found the newly emerging Personal Computers 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 went to work 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 decided to continue 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 started thinking about 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 widely used.

Of all the advancements in software development I've witnessed over the years, object-oriented programming has seemed to me the most significant in terms of how much easier it makes the programming task. Object-oriented programming in Java or C++ can really make a difference when developing programs. While it doesn't solve all the problems of software development, it makes the development easier, and the long-term maintenance much easier. The result is a real gain in programming productivity. 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 effectively comes much more easily if you first get a good understanding of objects and designing systems using objects.

I have found that just because programmers are using an object-oriented programming language, it 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.

Acknowledgements

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'd like to have me around more, but writing this book has been something I've needed to do for many years.

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. I also want to thank Paul Becker who took on this project and saw it to completion after Ross got married and left Addison-Wesley for new opportunities.

And I want to thank all the other people who have 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


TOC PREV NEXT INDEX

The Essence of Object-Oriented Programming with Java and UML (DRAFT)

Copyright © 2001 by Addison-Wesley

All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior consent of the publisher. You may view this document on a web browser, but you must not mirror or make local copies.