Home Courseware Course Listing Instruction Philosophy Clients Publications Résumé |
C++ for Non-C ProgrammersSummary:
Who Should Take This Class? This course is designed for system analysts, software developers and engineers. Knowledge of a modern structured-programming language such as C or Pascal is helpful but not necessary. Course Outline: Overview of Object-Oriented Programming: The Client-Server Model Encapsulation and Data Abstraction User Defined Types and Classes Composition, Parameterized Types and Inheritance Polymorphism and Dynamic Binding Client Synthesis Object: Instances of Types Separating Interface and Implementation Features for Data Abstraction and User Defined Types Sample Class Library The Class Library: String, Linked List, Ordered Collection, Array, Set and Map The Class Library's Syntactic and Semantic Interface Examples: Using the Class Library Enforcement of the Interface Data Members and Member Functions Data Visibility Object Constructors and Destructors Simulating Features of Built-in Types Changing Implementations without Changing Interfaces Examples: Implementations of General-Purpose Classes Techniques for creating a new class with member classes Member object initialization Copy constructors Implementation of general-purpose classes that use composition Creating User-Defined Parameterized Types Notation for parameterized types Simulating parameterized types Implementation of general-purpose classesthat use parameterized types Creating User-Defined Types with Inheritance Type hiererarchy and class hierarchy Information hiding Default object copying language mechanisms Implementation of some of the general-purpose classes that use inheritance Extending Existing Types with Dynamic Binding Status versus dynamic binding Dynamic binding and inheritance Virtual functions and the dynamic binding. Introduction and Overview of C++ Object-Oriented Programming Goals of the C++ Language Optimization Portability Promotion: A Discipline for Reuse Encapsulation and Data Hiding Restaurant Programming Semantically Consistent Polymorphism Semantically Disparate Polymorphism Complexity Software Architecture Problem domain -> Software Domain Encapsulating human expertise Portability, Maintainability, Testability Organizing Software Package Data and Operations Statements Expressions Memory Management Value Semantics User-defined types and classes The concept of reusable software components Demonstrate reusable software components Examples that use user-defined types Middle Ground Class Synthesis Using Built-In Data Types C++ Support for OOAD (Object-Oriented Analysis and Design) Aggregation and class synthesis Inheritance, mix-ins and class synthesis Collaboration Delegation Multiply dimensioned arrays Strings Subscripting Returning References Constant arguments Defining I/O for Containers Members, Friends & C-Style Function Hughes Class Library (HCL) Class Synthesis Conversion constructors Copy constructors Assignment operators Destructors Friend, Member & C-Style Functions Memory Allocation Automatic (Local) Dynamic Class String Classes for User Defined Types Data Members and Member Functions Data Visibility Object Constructors and Destructors Implementing Value Semantics with the Five Special Member Functions Overloading Operators for User Defined Classes Defining I/O for User Defined Classes Avoiding name Collisions with Nested Classes Simulating Features of Built-In Types Changing Implementations without Changing Interfaces Examples: Implementations of General-Purpose Classes Techniques for creating a new class with member classes Member object initialization Copy Constructors Implementation of general-purpose classes that use composition Template Oddities Template Functions Implementing Multi-dimensional Arrays Passing Objects to Parameterized Types Interface between the parameterized type and its type arguments Notation for parameterized types Template Class Specialization Comparing Different Implementations of the Template Feature Perils and Merits of Nesting Classes Implementation of general-purpose classes that use parameterized types Using Inheritance with Parameterized Types Type hierarchy and class hierarchy Information hiding Default object copying language mechanisms Implementation of some of the general-purpose classes that use inheritance Static versus dynamic binding Virtual functions and the dynamic binding User Defined Conversion The Prposed Exception Handling Features Simulating Exceptions Problems with Operator Overloading Implementing Dynamic Arrays Reference Count Objects Please contact Sieg to arrange for rapid, custom courseware development, or to inquire about his availability to deliver training to your organization: Phone 303-494-5509, Email siegfried@heintze.com. Siegfried Heintze (303) 494-5509 www.heintze.com siegfried@heintze.com |