C++ in Action: Industrial-strength Programming Techniques (Paperback)

Bartosz Milewski

  • 出版商: Addison Wesley
  • 出版日期: 2001-06-01
  • 售價: $1,560
  • 貴賓價: 9.5$1,482
  • 語言: 英文
  • 頁數: 485
  • 裝訂: Paperback
  • ISBN: 0201699486
  • ISBN-13: 9780201699487
  • 相關分類: C++ 程式語言
  • 立即出貨(限量)

買這商品的人也買了...

商品描述


Description

C++: Proven techniques for building -- and maintaining -- industrial-strength Windows software.

  • Extensive coverage of resource management -- a crucial technique for building robust, maintainable systems.
  • Detailed coverage of large-scale software projects: strategies, techniques, management, planning, and project dynamics.
  • CD-ROM includes extensive C++ source code library.
C++ in Action introduces state-of-the-art C++ programming and problem-solving techniques for developing efficient, powerful, scalable software systems. Renowned software architect Bartosz Milewski starts from two key premises. First, programs aren't written for computers: they're written for other programmers who will have to integrate and maintain them. Second, software development languages aren't ends in themselves: they're tools to solve problems. Starting from these principles, Milewski presents a comprehensive guide to C++ software engineering for maximum performance, reliability, and maintainability. He shows how to use resource management and exception management together to build more reliable code. Next, he introduces new techniques that simplify Windows development despite the complexity of the Windows API and libraries. The book also includes detailed coverage of large-scale software and scalability, encompassing development strategies and tactics as well as management, planning, and project dynamics. An accompanying CD-ROM and a companion web site contain an extensive source code library.

Bartosz Milewski has been programming since 1986, and teaching C++ since 1994. He is President of Reliable Software, a firm specializing in creating high-quality productivity tools for programmers. Previously, he was architect and programming lead for Microsoft Index Server, a successful commercial application now integrated in Windows 2000. Milewski holds a Ph.D in theoretical physics.

Back to Top


Table Of Contents

Introduction.
Language.
Techniques.
Windows.
Scaling Up.
How to Use this Book.
Language.

Objects and Scopes.
Global scope.
Local Scope.
Embedded objects.
Inheritance.
Member functions and Interfaces.
Member function scope.
Types.
Summary.
Exercises.
Abstract Data Types.
Exercises.

Arrays and references.
References.
Operators.
Arithmetic.
Logic.
Bitwise Logic.
Stack-based calculator.
Functional Specification.
Design.
Stubbed Implementation.
Implementation.
Exercises.

Pointers.
Pointers.
Pointers vs. References.
Pointers vs. Arrays.
Assembly Digression.
Exercises.
Pointers and Dynamic Memory Allocation.
Dynamic Data Structures.
Dynamic Stack.
Linked List.
String Table.
String Buffer.
Table Lookup.
Hash Table.
Test Program.
Exercises.

Polymorphism.
The Meaning of is-a.
Implementation Digression.
The Overhead.
Parse Tree.
C Digression.
Exercises.

Small Software Project.
Software Project.
Specification.
Stubbed Implementation.
Expanding Stubs.
Scanner.
Symbol Table.
Store.
Function Table.
Nodes.
Parser.
Main.
Initialization of Aggregates.
Exercises.
Procedural Programming.
Operator Overloading.
Passing by Value.
Value Semantics.
Techniques.

The Cleanup.
Decoupling the Output.
Fighting Defensive Programming.
A Case of Paranoid Programming.
Fringes.
Improving Communication Between Classes.
Correcting Design Flaws.
Hiding Implementation Details.
Using Embedded Classes.
Combining Classes.
Combining Things using Namespaces.
Hiding Constants in Enumerations.
Hiding Constants in Local Variables.

Sharing.
Isolating Global Program Parameters.
Pushing the Envelope.
Templates.
Exercises.

Removing Limitations.
Dynamic Array.
Dynamic MultiNode.
Dynamic StringBuffer.
Dynamic SymbolTable.
Dynamic Store.
Standard Vector.

Resource Management.
Exceptions.
Stack Unwinding.
Resources.
Ownership of Resources.
Access to Resources.
Smart Pointers.
Ownership Transfer: First Attempt.
Ownership Transfer: Second Attempt.
Safe Containers.
Iterators.
Error Propagation.
Conversion to Resource Management.
Conclusion.

Making Use of the STL.
Reference Counting and Copy-On-Write.
End of Restrictions.
Getting Rid of C-Strings.
Exploring Streams.

Serialization and Deserialization.
The Calculator Object.
Command Parser.
Serialization and Deserialization.
In-Memory (De-) Serialization.
Multiple Inheritance.
Conclusion.

Overloading Operator new.
Class-specific new.
Caching.
Bulk Allocation.
Array new.
Global new.
Macros.
Tracing Memory Leaks.
Debug Output.
Placement new.
Windows.

Libraries.
Of Macros and Wizards.

Programming Paradigm.
Hello Windows!
Encapsulation.

Controlling Windows through C++.
Model-View-Controller.
Exception Specification.
Cleanup.

Painting.
Application Icon.
Window Painting and the View Object.
The Canvas.
The WM_PAINT Message.
The Model.
Capturing the Mouse.
Adding Colors and Frills.

Windows Application.
Porting the Calculator to Windows.
User Interface.
Child Windows.
Windows Controls.
Static Text.
Edit Control.
Window Subclassing.
Plugging in the Calculator.
List Box Control.
Model-View Feedback Loop.
Commands and Menus.
Dynamic Menus.
Dialogs.
Exercises.

Scaling Up.
About Software.
Complexity.
The Fractal Nature of Software.
The Living Project.
The Living Programmer.

Design Strategies.
Top-Down Object Oriented Design.
Model-View-Controller.
Documentation.
Requirement Specification.
Architecture Specification.

Team Work.
Productivity.
Team Strategies.

Implementation Strategies.
Global Decisions.
Top-Down Object Oriented Implementation.
Program Modifications.
Inheriting Legacy Code.
Multi-platform development.

Porting.
Creating an Abstraction Layer.
Porting the Calculator.
Eliminating Simple Windows Dependencies.
Non-trivial Windows Dependencies.
The Advantages of Porting.

Bibliography.
Appendices.
Exercise Solutions.
Transactions.
Transient Transactions.
Persistent Transactions.
The Three-File Scheme.
The Mapping-File Scheme. 0201699486T04062001



Back to Top