Advance Your Skills in Legacy C++

C++ and Object-Oriented Programming

Course Details
Presented by Leor Zolman

A 5-Day Course of Lectures and Lab Exercises

Who Should Attend:

  • Experienced software developers who want to "move up" to C++ and object oriented programming.
  • Project managers who need to understand how C++ and object oriented programming differ from traditional C programming.


Participants need not have any prior C++ experience, but should be experienced with C. (A reading knowledge is rarely sufficient.) In particular, qualified participants should be able to:

  • read and write data declarations and function prototype declarations
  • understand the interchangeability of pointer and subscripting notation
  • work with structs and pointers to structs
  • build programs from more than one source (.c) file

If you are uncertain about whether you should take this course, we suggest you contact us.

Course Outline

1. Introduction

  • Fundamental Design Concepts
  • Abstract Data Types
  • The "Spirit" of C++

2. Translating Object-Oriented Concepts into Practice

  • Compiling and Running C++ programs
  • "Programming in the Large"
  • Case study: Critiquing a "Large" C program
  • Encapsulation using Separate Compilation

3. Classes and Objects

  • Member Functions
  • Declaring and Using Objects
  • Partitioning Design Decisions
  • C++ Notation and Terminology
  • Access Control

4. Storage Allocation

  • Static, Automatic and Dynamic Memory
  • new and delete operators
  • Case study: Dynamic Arrays
  • Constructors and Destructors
  • Member Initializers
  • Static Data and Function Members

5. Building More Powerful Abstractions

  • Inline Functions
  • Function Name Overloading
  • const and volatile Qualifiers
  • const Member Functions
  • References as Arguments and Return Types
  • Copy Constructors

6. Language Extensibility

  • Operator Overloading
  • Case Study: Rational Numbers
  • Default Assignment Operator
  • Default Function Arguments
  • Friend Functions
  • Stream Input and Output
  • Conversion Operators

7. Inheritance

  • Reusing Classes via Membership (Aggregation or Composition)
  • Reusing Classes via Inheritance (Derivation)
  • Inheritance vs. Aggregation (Is-A vs. Has-A Relationships)

8. Scope and Access Control

  • Scope Rules
  • Nested Classes
  • Friend Classes
  • More on Access Control

9. Object-Oriented Programming Techniques

  • Static vs. Dynamic Binding
  • Polymorphism
  • Case Study: a Unix-like File System
  • Type Fields and Discriminated Unions
  • Common Interfaces Using Inheritance
  • Virtual Functions
  • Abstract Base Classes and Pure Virtual Functions
  • Pointer and Reference Conversions
  • Case Study: a Hierarchy of Geometric Shapes


This course is normally taught in five full days. Excluding breaks, each day usually lasts about 6 hours. About 1/4 to 1/3 of the time is spent doing exercises.


5 full days

Contact Us | Pricing | Copyright © 2024 by Leor Zolman | Links