From C to C++.Using C++ to Develop Large Projects.Reuse.Quality.Software Development Tools.Summary.I. BASICS. 1. Preliminaries.
Multi-File C++ Programs.typedef Declarations.Assert Statements.A Few Matters of Style.Iterators.Logical Design Notation.Inheritance versus Layering.Minimality.Summary.2. Ground Rules.
Overview.Member Data Access.The Global Name Space.Include Guards.Redundant Include Guards.Documentation.Identifier-Naming Conventions.Summary.II. PHYSICAL DESIGN CONCEPTS. 3. Components.
Components versus Classes.Physical Design Rules.The DependsOn Relation.Implied Dependency.Extracting Actual Dependencies.Friendship.Summary.4. Physical Hierarchy.
A Metaphor for Software Testing.A Complex Subsystem.The Difficulty in Testing "Good" Interfaces.Design for Testability.Testing in Isolation.Acyclic Physical Dependencies.Level Numbers.Hierarchical and Incremental Testing.Testing a Complex Subsystem.Testing versus Tested.Cyclic Physical Dependencies.Cumulative Component Dependency (CCD).Physical Design Quality.Summary.5. Levelization.
Some Causes of Cyclic Physical Dependencies.Escalation.Demotion.Opaque Pointers.Dumb Data.Redundancy.Callbacks.Manager Class.Factoring.Escalating Encapsulation.Summary.6. Insulation.
From Encapsulation to Insulation.C++ Constructs and Compile-Time Coupling.Partial Insulation Techniques.Total Insulation Techniques.The Procedural Interface.To Insulate or Not to Insulate.Summary.7. Packages.
From Components to Packages.Registered Package Prefixes.Package Levelization.Package Insulation.Package Groups.The Release Process.The main Program.Start-Up Time.Summary.III. LOGICAL DESIGN ISSUES. 8. Architecting a Component.
Abstractions and Components.Component Interface Design.Degrees of Encapsulation.Auxiliary Implementation Classes.Summary.9. Designing a Function.
Function Specification.Fundamental Types Used in the Interface.Special Case Functions.Summary.10. Implementing an Object.
Member Data.Function Definitions.Memory Management.Using C++ Templates in Large Projects.Summary.Appendix A. Protocol Hierarchy.
Appendix B. Implementing an ANSI C-Compatible C++ Interface.
Appendix C. A Dependency Extractor/Analyzer Package.
Appendix D. Quick Reference.
John Lakos works at Mentor Graphics, a company that has written more large scale C++ programs than most other software companies and was among the first companies to attempt truly large-scale C++ projects. Lakos has been programming professionally in C++ since 1987, and in 1990 developed Columbia University's graduate course in object-oriented programming which he continues to teach.