Chapter 12. Object-Oriented Design


  • To learn about the software life cycle

  • To learn how to discover new classes and methods

  • To understand the use of CRC cards for class discovery

  • To be able to identify inheritance, aggregation, and dependency relationships between classes

  • To master the use of UML class diagrams to describe class relationships

  • To learn how to use object-oriented design to build complex programs

To implement a software system successfully, be it as simple as your next homework project or as complex as the next air traffic monitoring system, some amount of planning, design, and testing is required. In fact, for larger projects, the amount of time spent on planning is much higher than the amount of time spent on programming and testing.

If you find that most of your homework time is spent in front of the computer, keying in code and fixing bugs, you are probably spending more time on your homework than you should. You could cut down your total time by spending more on the planning and design phase. This chapter tells you how to approach these tasks in a systematic manner, using the object-oriented design methodology.

The Software Life Cycle

In this section we will discuss the software life cycle: the activities that take place between the time a software program is first conceived and the time it is finally retired.


The software life cycle encompasses all activities from initial analysis until obsolescence.

A software project usually starts because a customer has ...

Get Big Java, 4th Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.