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.
This five day course covers 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.
- 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
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.
- Five days.
- Delegate handbook
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.
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
- Constructors & destructors
More on Classes:
- Inlining member functions
- Const member functions
- Static class members and functions
- Arrays of classes
- Implementing object relationships
- Building class hierarchies
- Dynamic binding for class methods, virtual functions
Multiple inheritance (MI):
- MI and interfaces
Functions and Operators:
- Class defined conversions
- Overloading and function selection
- Friend functions
- Overloading operators
- Dynamic memory allocation revisited
- What are exceptions?
- Throwing and Catching exceptions
- Rethrowing exceptions
- Catch all handlers
- Exception specifications
- Introduce parameterised types and functions
- Function templates
- Class templates
The Standard Library:
- Introducing the Standard Template Library
- Structuring large scale software systems
- Separate implementation from interface header files
- Dealing with name conflicts
- Linking with other languages
- Pattern origins and history
- Uni- and Bidirectional 1:1, 1:N, 1:*
- Aggregation & Composition aggregate
- CreateThread API.
- Thread-Is-Polymorphic object;
- Thread-Runs-Polymorphic object.
- Resource access in multitasking systems
- Mutex Class
- Mutex Interface
- Template Locking Policy
Mutual Exclusion Issues:
- Priority Inversion
- Condition Objects