Real-Time C++

This course introduces the C++ language for use on real-time applications. The first part of the course focuses on the language itself, highlighting the areas of concern for real-time development. The latter part covers the application of C++ to real-time systems focusing on concurrency/threading issues. These are fundamental issues that are core to any C++ course.  

C++-502
5 days
Contact Feabhas (available for on-site delivery only)
pdf download

Course Outline

 

Introduction to Real-Time Systems:

  • What is a real-time computer system
  • The need for a rigorous development procedure

From C to C++:

  • Non object-oriented C++ enhancements to basic C
  • Conveniences of C++ over and above C

Introduction to Object Oriented (OO) Principles:

  • Key characteristics of OO development
  • OO techniques and the real-time software development process

Introduction to Classes:

  • Classes & class instances
  • Methods
  • Constructors & destructors

More on Classes:

  • Inlining member functions
  • Const member functions
  • Static class members and functions
  • Arrays of classes
  • Implementing object relationships

Inheritance:

  • Building class hierarchies
  • Dynamic binding for class methods, virtual functions
  • Polymorphism

Multiple inheritance (MI):

  • MI and interfaces

Functions and Operators:

  • Class defined conversions
  • Overloading and function selection
  • Friend functions
  • Overloading operators
  • Dynamic memory allocation revisited

Exception Handling:

  • What are exceptions?
  • Throwing and Catching exceptions
  • Rethrowing exceptions
  • Catch all handlers
  • Exception specifications

Templates:

  • Introduce parameterised types and functions
  • Function templates
  • Class templates

The Standard Library:

  • Introducing the Standard Template Library

 Software Structuring:

  • Structuring large scale software systems
  • Separate implementation from interface header files
  • Dealing with name conflicts
  • Linking with other languages

Patterns:

  • Pattern origins and history
  • Singleton
  • Proxy
  • Command

Implementing Associations:

  • Associations
  • Uni- and Bidirectional 1:1, 1:N, 1:*
  • Aggregation & Composition aggregate

 Threading Basics:

  • Concurrency;
  • CreateThread API.

C++ Threading:

  • Thread-Runs-Function
  • Thread-Is-Polymorphic object;
  • Thread-Runs-Polymorphic object.

Mutual Exclusion:

  • Resource access in multitasking systems
  • Mutex Class
  • Mutex Interface
  • Guards
  • Template Locking Policy

 Mutual Exclusion Issues:

  • Priority Inversion
  • Deadlock

Thread Synchronisation:

  • Signalling
  • Condition Objects

Course Overview

 

A five day course covering C++ in general for the first three days, and real time issues on the remaining two. 50% of the course is spent on practical work.

Course Objectives:

  • To provide a solid foundation of the essentials of the C++ programming language.
  • To give you practical experience of writing C++ for real-time applications.
  • To give you the confidence to apply these new concepts to your next real-time project.

Delegates Will Learn:

  • The core C++ syntax and semantics
  • About memory and performance issues associated with C++
  • How threading affects the use of the language

Pre-requisites:

  • A working knowledge of C

Who Should Attend:
This course is designed for real-time engineers who are embarking on a project using C++ for the first time. It is also targeted at developers currently reluctant to move to C++ from C as they believe it poses too great an overhead. This course will clearly demonstrate both the strengths and weaknesses of C++ versus C.

Duration:

  • Five days.

Course Materials:

  • Delegate handbook

Related Courses:

Course Workshop:
All sections are backed up with comprehensive exercises. Exercises include: developing UML-based associations; implementing design patterns; and developing solutions to multi-threading problems. The threading exercises use the Win32 API.