|
|
|
|
|
|
|
Even if the waterfall method worked, it would probably be a poor method for writing good programs. As the programmer proceeds, there is a necessary and natural feedback between what has been written so far and what remains to be done. While it is true that good C++ programs are designed in great detail before a line of code is written, it is not true that that design remains unchanged throughout the cycle. |
|
|
|
|
|
|
|
|
The amount of design that must be finished up front, before programming begins, is a function of the size of the program. A highly complex effort, involving dozens of programmers working for many months, will require a more fully articulated architecture than a quick-and-dirty utility written in one day by a single programmer. |
|
|
|
|
|
|
|
|
This chapter focuses on the design of large, complex programs that will be expanded and enhanced over many years. Many programmers enjoy working at the bleeding edge of technology; they tend to write programs whose complexity pushes at the limits of their tools and understanding. In many ways, C++ was designed to extend the complexity that a programmer or team of programmers can manage. |
|
|
|
|
|
|
|
|
This chapter examines a number of design problems from an object-oriented perspective. The goal is to review the analysis process, and then to understand how you apply the syntax of C++ to implement these design objectives. |
|
|
|
|
|
|
|
|
Simulating an Alarm System |
|
|
|
|
|
|
|
|
New Term: A simulation is a computer model of a part of a real-world system. There are many reasons to build a simulation, but a good design must start with an understanding of what questions you hope the simulation will answer. |
|
|
|
|
|
|
|
|
As a starting point, examine this problem: You have been asked to simulate the alarm system for a house. The house is a center-hall colonial with four bedrooms, a finished basement, and an under-the-house garage. |
|
|
|
|
|
|
|
|
The downstairs has the following windows: three in the kitchen, four in the dining room, one in the half-bathroom, two each in the living room and the family room, and two small windows next to the door. All four bedrooms are upstairs; each bedroom has two windows except for the master bedroom, which has four. There are two baths, each with one window. Finally, there are four half-windows in the basement and one window in the garage. |
|
|
|
|
|
|
|
|
Normal access to the house is through the front door. Additionally, the kitchen has a sliding glass door, and the garage has two doors for the cars and one door for easy access to the basement. There is also a cellar door in the backyard. |
|
|
|
|
|