You are previewing Core C++ A Software Engineering Approach.
O'Reilly logo
Core C++ A Software Engineering Approach

Book Description

Master C++ the right way: From the software engineering perspective!

  • Master C++ the right way!

  • Object-oriented approach to coding throughout

  • Harness C++'s strengths; avoid its dangers

  • Build more easily maintainable code

  • Build more powerful, robust, maintainable C++ software!

    For developers with experience in any language, Victor Shtern's Core C++ teaches C++ the right way: by applying the best software engineering practices and methodologies to programming in C++. Even if you've already worked with C++, this comprehensive book will show you how to build code that is more robust, far easier to maintain and modify, and far more valuable.

    Shtern's book teaches object-oriented principles before teaching the language, helping you derive all the power of object-oriented development to build superior software. Learn how to make design decisions based on key criteria such as information hiding and pushing responsibilities from clients down to server classes. Then, master every key feature of ANSI/ISO C++ from a software engineer's perspective: classes, methods, const modifiers, dynamic memory management, class composition, inheritance, polymorphism, I/O, and much more.

    If you want to build outstanding C++ software, coding skill isn't enough. Objects aren't enough. You must design, think, and program using today's best software engineering practices — and with Core C++, you will.

    So, Core C++ delivers:

  • The application of software engineering principles to C++ programming

  • A strong emphasis on writing code for easier future maintainance and modification

  • A practical understanding of object-oriented principles before teaching the language

  • Insight into the latest ANSI/ISO C++ features

  • Thorough explanations that respect your intelligence

  • Hundreds of realistic, to-the-point code examples

  • Levity Breaks: Stories and vignettes that illustrate key topics, concepts, and ideas through humor

  • Every core series book:

  • Demonstrates practical techniques used by professional developers.

  • Features robust, thoroughly tested sample code and realistic examples.

  • Focuses on the cutting-edge technologies you need to master today.

  • Provides expert advice that will help you build superior software.

  • Table of Contents

    1. Copyright
    2. Preface
    3. Acknowledgments
    4. Introduction to Programming with C++
      1. Object-oriented approach: What's So Good About It?
        1. The Origins of the Software Crisis
        2. Remedy 1: Eliminating Programmers
        3. Remedy 2: Improved Management Techniques
        4. Remedy 3: Designing a Complex and Verbose Language
        5. The Object-Oriented Approach: Are We Getting Something for Nothing?
        6. Characteristics of the C++ Programming Language
        7. Summary
      2. Getting Started Quickly: A Brief Overview of C++
        1. The Basic Program Structure
        2. Preprocessor Directives
        4. Declarations and Definitions
        5. Statements and Expressions
        6. Functions and Function Calls
        7. Classes
        8. Dealing with Program Development Tools
        9. Summary
      3. Working with C++ Data and Expressions
        1. Values and Their Types
        2. Integral Types
        3. Floating Point Types
        4. Working with C++ Expressions
        5. Mixed Expressions: Hidden Dangers
        6. Summary
      4. C++ Control Flow
        1. Statements and Expressions
        2. Conditional Statements
        3. Iteration
        4. C++ Jump Statements
        5. Summary
      5. Aggregation with Programmer-Defined Data Types
        1. Arrays as Homogeneous Aggregates
        2. Structures as Heterogeneous Aggregates
        3. Unions, Enumerations, and Bit Fields
        4. Summary
      6. Memory Management: the Stack and the Heap
        1. Name Scope as a Tool for Cooperation
        2. Memory Management: Storage Classes
        3. Memory Management: Using Heap
        4. Input and Output with Disk Files
        5. Summary
    5. Object-oriented programing with C++
      1. Programming With C++ Functions
        1. C++ Functions as Modularization Tools
        2. Argument Promotions and Conversions
        3. Parameter Passing in C++
        4. Inline Functions
        5. Parameters with Default Values
        6. Function Name Overloading
        7. Summary
      2. Object-Oriented Programming with Functions
        1. Cohesion
        2. Coupling
        3. Data Encapsulation
        4. Information Hiding
        5. A Larger Example of Encapsulation
        6. Shortcomings of Encapsulation with Functions
        7. Summary
      3. C++ Class as a Unit of Modularization
        1. Basic Class Syntax
        2. Binding Together Data and Operations
        3. Elimination of Name Conflicts
        4. Implementing Member Functions Outside of Class
        5. Defining Class Objects of Different Storage Classes
        6. Controlling Access to Class Members
        7. Initialization of Object Instances
        8. Constructors as Member Functions
        9. Default Constructors
        10. Copy Constructors
        11. Conversion Constructors
        12. Destructors
        13. Timing of Constructor and Destructor Invocations
        14. Class Scope and the Overriding of Names in Nested Scopes
        15. Memory Management with Operators and Function Calls
        16. Using Returned Objects in Client Code
        17. More on the const Keyword
        18. Static Class Members
        19. Summary
      4. Operator Functions: Another Good idea
        1. Overloading of Operators
        2. Limitations on Operator Overloading
        3. Overloaded Operators as Class Members
        4. Case Study: Rational Numbers
        5. Mixed Types as Parameters
        6. Friend Functions
        7. Summary
      5. Constructors and Destructors: Potential Trouble
        1. More on Passing Objects by Value
        2. Operator Overloading for Nonnumeric Classes
        3. More on the Copy Constructor
        4. Overloading the Assignment Operator
        5. Practical Considerations: What to Implement
        6. Summary
    6. Object-Oriented Programming with Aggregation and Inheritance
      1. Composite Classes: Pitfalls and Advantages
        1. Using Class Objects as Data Members
        2. Initialization of Composite Objects
        3. Data Members with Special Properties
        4. Container Classes
        5. Summary
      2. Similar Classes: How to Treat Them
        1. Treating Similar Classes
        2. Syntax of C++ Inheritance
        3. Accessing Base and Derived Class Services
        4. Accessing Base Components of a Derived Class Object
        5. Scope Rules and Name Resolution Under Inheritance
        6. Constructors and Destructors for Derived Classes
        7. Summary
      3. Choosing between Inheritance and Composition
        1. Choosing a Technique for Code Reuse
        2. Unified Modeling Language
        3. Case Study: A Rental Store
        4. On Class Visibility and Division of Responsibilities
        5. Summary
    7. Advanced uses of C++
      1. Virtual Functions and other Advanced Uses of Inheritance
        1. Conversions Between Nonrelated Classes
        2. Conversions Between Classes Related Through Inheritance
        3. Virtual Functions: Yet Another New Idea
        4. Multiple Inheritance: Several Base Classes
        5. Summary
      2. Advanced Uses of Operator Overloading
        1. Operator Overloading: A Brief Overview
        2. Unary Operators
        3. Subscript and Function Call Operators
        4. Input/Output Operators
        5. Summary
      3. Templates: Yet Another Design Tool
        1. A Simple Example of a Class Design Reuse
        2. Syntax of Template Class Definition
        3. Template Classes with Several Parameters
        4. Relations Between Instantiations of Template Classes
        5. Template Specializations
        6. Template Functions
        7. Summary
      4. Programming with Exceptions
        1. A Simple Example of Exception Processing
        2. Syntax of C++ Exceptions
        3. Exceptions with Class Objects
        4. Type Cast Operators
        5. Summary
      5. What We Have Learned
        1. C++ as a Traditional Programming Language
        2. C++ as a Modular Language
        3. C++ as an Object-Oriented Language
        4. C++ and Competition
        5. Summary