Home > Store > Software Development & Management > Object Technology

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/8x9-1/4
  • Pages: 320
  • Edition: 1st
  • Book
  • ISBN-10: 0-201-73410-9
  • ISBN-13: 978-0-201-73410-2

You've written some lines of Java code and created a few objects, yet you understand that this doesn't constitute true object-oriented programming. As a Java programmer, you want to get more out of your efforts. This introduction to the basics of object-oriented programming and the Unified Modeling Language (UML) will give you a firm foundation on which to build high-quality software systems that reap the full benefit of an object-oriented approach. This book not only explains the essence of the object-oriented paradigm, but also places it in the context of real-world application development, so you can reap the concrete benefits of programming with objects.

The Essence of Object-Oriented Programming with Java™ and UML, comprehensive in scope, addresses a broad range of essential topics, from initial design through implementation. Familiarize yourself with the basics of objects and how they are manifested in Java, the process of object-oriented analysis and design, and building the user interface. Then explore a variety of recent developments in the field, including design patterns, refactoring, development methodologies, and helpful tools.

Specific topics covered include:

  • Introduction to object orientation and object-oriented terminology
  • The fundamentals of UML
  • Defining classes in Java
  • Inheritance, association, aggregation, composition, and encapsulation
  • Evaluating candidate objects
  • Building the graphical user interface with Swing
  • MVC (Model, View, Controller) with Java
  • Development methodologies, including Extreme Programming and the Unified Process
  • To provide a real-world focus, the book offers numerous examples as well as a small case study illustrating how an object-oriented approach leads to effective, robust, and efficient software solutions. The author's best practices, based on his extensive professional experience, reveal valuable techniques and approaches for successful object-oriented projects.



    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