| |
 |
|
|
|
|
The Preprocessor and the Compiler |
|
|
|
| |
 |
|
|
|
|
Seeing the Intermediate Form |
|
|
|
| |
 |
|
|
|
|
Using #define |
|
|
|
| |
 |
|
|
|
|
Using #define for Constants |
|
|
|
| |
 |
|
|
|
|
Using #define for Tests |
|
|
|
| |
 |
|
|
|
|
The #else Precompiler Command |
|
|
|
| |
 |
|
|
|
|
Inclusion and Inclusion Guards |
|
|
|
| |
 |
|
|
|
|
Defining on the Command Line |
|
|
|
| |
 |
|
|
|
|
Undefining |
|
|
|
| |
 |
|
|
|
|
Conditional Compilation |
|
|
|
| |
 |
|
|
|
|
Macro Functions |
|
|
|
| |
 |
|
|
|
|
Why All the Parentheses? |
|
|
|
| |
 |
|
|
|
|
Macros Versus Functions and Templates |
|
|
|
| |
 |
|
|
|
|
String Manipulation |
|
|
|
| |
 |
|
|
|
|
Stringizing |
|
|
|
| |
 |
|
|
|
|
Concatenation |
|
|
|
| |
 |
|
|
|
|
Predefined Macros |
|
|
|
| |
 |
|
|
|
|
assert() |
|
|
|
| |
 |
|
|
|
|
Summary |
|
|
|
| |
 |
|
|
|
|
Q&A |
|
|
|
| |
| |
|
|
|
|
|
Hour 22
Object-Oriented Analysis and Design |
|
|
|
| |
 |
|
|
|
|
The Development Cycle |
|
|
|
| |
 |
|
|
|
|
Simulating an Alarm System |
|
|
|
| |
 |
|
|
|
|
Conceptualization |
|
|
|
| |
 |
|
|
|
|
Analysis and Requirements |
|
|
|
| |
 |
|
|
|
|
High-Level and Low-Level Design |
|
|
|
| |
 |
|
|
|
|
Other Objects |
|
|
|
| |
 |
|
|
|
|
What Are the Classes? |
|
|
|
| |
 |
|
|
|
|
How Are Alarms Reported? |
|
|
|
| |
 |
|
|
|
|
Event Loops |
|
|
|
| |
 |
|
|
|
|
PostMaster: A Case Study |
|
|
|
| |
 |
|
|
|
|
Measure Twice, Cut Once |
|
|
|
| |
 |
|
|
|
|
Divide and Conquer |
|
|
|
| |
 |
|
|
|
|
Message Format |
|
|
|
| |
 |
|
|
|
|
Initial Class Design |
|
|
|
| |
 |
|
|
|
|
Rooted Hierarchies Versus Non-Rooted |
|
|
|
| |
 |
|
|
|
|
Designing the Interfaces |
|
|
|
| |
 |
|
|
|
|
Building a Prototype |
|
|
|
| |