c++ programming for non-c programmers

The C++ Programming for Non-C Programmers training course is a comprehensive hands-on introduction to object oriented programming in C++ for non-C programmers. Emphasis is placed on the features of C++ that support effective modeling of the problem domain and reuse of code.

The course consists of two modules. The first module introduces the core C features of C++, with simplified input/output through iostreams. The module begins with simple hands-on programming using C++ to do input, computation and output. The C++ data types are covered, and simple if tests and loops are covered. C++ program structure is introduced. Pointers, addressing, and arrays are discussed. Structures and unions are covered. In the second module, object-oriented concepts are introduced.

The C++ class construct is introduced and its key features elaborated step-by-step, providing full implementation of abstract data types. C++ memory management is discussed. Function and operator overloading and the use of references are covered. The scope and access control mechanisms of C++ are described. Inheritance is introduced. The use of virtual functions to implement polymorphism is discussed. Extensive programming examples and exercises are provided. The course is current to ANSI standard C++ and is designed so that it can be taught in any environment with an ANSI C++ compiler.

  • Knowledge of any programming language

COURSE AGENDA

  • Data Types
  • Strong Typing
  • Typing in C++
  • Conversions in C++
  • Typing in Visual Basic
  • Primitive C++ Data Types
  • Signed and Unsigned
  • Twos Complement
  • C++ Integer Type Ranges
  • IntegerRange.cpp
  • Integer Constants
  • Variables in C++
  • Const Variables
  • Preprocessor Macros
  • Identifiers
  • Floating Point Numbers
  • Floating Point Data Types
  • Calculations
  • Integer Operations
  • Increment and Decrement
  • Precedence of Integer Operations
  • Floating Point Operations
  • op=
  • Mixed Data Types
  • Automatic Conversion
  • Cast
  • Math Library
  • Hello, World
  • Compiling and Running
  • C++ Program Components
  • Another C++ Program (Preview)
  • I/O in C++
  • Variables
  • Expressions
  • Assignment
  • Using C++ as a Calculator
  • Input in C++
  • Echo Program
  • Bool Variables
  • Bool Operations and Truth Tables
  • Relational Operators
  • If Tests
  • Flow Chart
  • A Pitfall
  • Bitwise Operators
  • Bitwise Operator Truth Tables
  • Short Circuit Evaluation
  • Shifting
  • Masking
  • Loops
  • While Loops
  • Infinite Loops
  • Flowcharting a While Loop
  • Indenting and Curly Braces
  • Accumulating a Total
  • Total Using a Sentinel
  • Counted Loops
  • Total Using a Counter
  • For Loops
  • Total Using a For Loop (Up)
  • Total Using a For Loop (Down)
  • Comparing For and While Loops
  • Variable Scope
  • Loops and If Tests Together
  • Nested If Statements
  • Review of Statements
  • Compound Statements
  • Structured Programming
  • Object-Oriented Programming
  • Basics of Functions
  • Function Prototypes and Type Checking
  • Returning Value
  • Argument Passing
  • Pass-by-Reference
  • Alternative to Pass-by-Reference
  • External Variables
  • Block Structure
  • Scope Rules
  • Header Files
  • Preprocessor Directives
  • Conditional Compilation
  • Recursion
  • Pointers and Addresses
  • Pointers and Function Arguments
  • Pointers and Arrays
  • Address Arithmetic
  • Dynamic Memory Management
  • Using malloc and free
  • Array of Pointers
  • Strings
  • String Functions
  • Array of Strings
  • Command Ling Arguments
  • Pointers to Functions
  • Fundamentals of Structures
  • Structure Declaration
  • Structures and Functions
  • Typedef
  • Arrays of Structures
  • Array of Structures Initialization
  • Unions
  • Object
  • State and Behavior
  • Abstraction
  • Encapsulation
  • Class and Instantiation
  • Abstract Data Types
  • Methods
  • Invoking Methods
  • Messages
  • Class Inheritance
  • Polymorphism
  • Classes in C++
  • Data Encapsulation in C
  • The C++ Class
  • Structures and Class in C++
  • Implementation of a C++ Class
  • this Pointer
  • Code Organization
  • Scope Resolution Operator
  • Abstract Data Types
  • Test Programs for C++ Classes
  • Function Prototypes in C++
  • Strong Type Checking
  • Conversion of Parameters
  • Inline Functions
  • Inline Functions in Header Files
  • Default Arguments
  • Function Overloading
  • Argument Matching
  • Argument Matching through Promotion
  • Match through Type Conversion
  • Call by Value
  • The Problem of Initialization
  • Constructors and Initialization
  • Constructor in Stack Class
  • Object Creation and Destruction
  • Destructors
  • Multiple Constructors
  • String Class Implementation
  • Hidden Constructors
  • Using a Default Argument
  • Why is Memory Management Important in C++?
  • Choices for an Object’s Memory
  • Typical Memory Layout
  • Free Store Allocation
  • new Operator
  • Memory Allocation Errors
  • new vs. malloc
  • delete Operator
  • Destructor (Review)
  • Hiding Memory Management
  • String Class Specification (Version 2)
  • String Class Implementation
  • String Class Bug
  • Variables
  • Argument Passing
  • Call-by-Value
  • Reference Declarations
  • Call-by-Reference
  • Copy Constructor
  • Default Copy Constructor
  • Bug in String Class
  • Specification of String Class
  • Implementation of String Class
  • Test Program
  • Output of Test Program
  • Review of Constant Types
  • Constants and Arguments
  • Chains of Functions Calls
  • const Objects and Member Functions
  • Operator Overloading
  • Operator Functions
  • Semantics of return
  • Returning a Temporary Object
  • Returning a Reference
  • Initialization vs. Assignment
  • Semantics of Assignment
  • Assignment
  • Assignment Bug
  • Overloading =
  • Review of this Pointer
  • Type Conversions
  • Conversion by Construction
  • Overloading Cast Operator
  • Test Program
  • Scoping in C++
  • Block and Function Scope
  • File and Global Scope
  • Class Scope
  • Constant Types and Scope
  • Enumeration Types
  • Enumeration Types and Class Scope
  • :: for Global Data
  • Static Class Members
  • Initialization of Static Member
  • Static Function Class Members
  • Access Control
  • Friend Functions
  • Invoking Member and Friend Functions
  • Implementing a Friend Function
  • Efficiency and Friend Functions
  • Inheritance Concept
  • Inheritance in C++
  • Employee Test Program
  • Protected Members
  • Best Class Initializer List
  • Composition
  • Member Initializer List
  • Order of Initialization
  • Inheritance vs. Composition
  • A Case for Polymorphism
  • Dynamic Binding
  • Pointer Conversion in Inheritance
  • Polymorphism Using Dynamic Binding
  • Virtual Function Specification
  • Invoking Virtual Functions
  • Vtable
  • Virtual Destructors
  • Abstract Class Using Pure Virtual Function
  • Employee as an Abstract Class
  • Heterogeneous Collections