Skip to main content

C++ for Embedded Systems

Who should attend?

Software developers with C experience who want to develop object oriented applications in C++ for embedded systems.

Prerequisites:

A good working knowledge of C.

Duration:

5 days ( including practical exercises )

Course Description

This course introduces the programming language C++ for use in embedded systems, as well as the fundamentals of the object oriented way of programming. It has been designed for experienced C programmers, who do not only want to learn the syntax of a new programming language, but also want to understand how object-oriented programming works and what the advandages are over traditional C programming. Assessments of the language features with respect to memory consumption and execution time detail the benefits and the pitfalls of the object oriented approach, thus allowing the students to develop powerful solutions using the scarce resources of embedded systems efficiently. In addition, the course shows how classes and their relationships are represented using the Unified Modelling Language (UML) and thus creates an important basis for good object-oriented software design. Finally, the course also covers how hardware devices can be integrated and used in an object-oriented way. For classroom trainings, the associated exercises are conducted on an ARM-based target hardware, while for online courses, they are carried out using a corresponding software emulator. The language characteristics of this basic course are essentially based on the language standard C++98/03. The characteristics of the newer language standards (C++11, C++14, C++17, C++20) are covered in the advanced course “Modern C++”


Note

This course is composed of multiple modules which may be ordered separately. Please contact us for further details.


Course Outline

Non-Object-Oriented Language Features and I/O

  • Data type bool
  • References
  • Function overloading
  • Default parameters
  • Namespaces
  • Dynamic memory management
  • Operator overloading
  • Input/output (cin/cout)
  • Cast operators
  • Range-base for-loop (C++11)
  • Scoped Enumerations (C++11)
  • nullptr (C++11)
  • Alias type definition with using (C++11)

From Struct to Class

  • Data elements, attributes
  • Member functions, methods
  • Static / non-static elements
  • this-Pointer
  • Access rights public and private
  • Class

Constructors and Destructors

  • Default constructor and copy constructor
  • Global / static objects and arrays
  • Objects containing objects

Operators as Class Members

  • Assignment operator
  • Subscript operator
  • Type cast operator

Inheritance and Aggregation

  • Base class and derived class
  • Benefits of inheritance compared to aggregation
  • Modelling the base class functionality
  • Impact on construction and destruction
  • Access right protected
  • Protected and private inheritance
  • Cast operators

Virtual Functions and Polymorphism

  • Static and dynamic linking
  • Virtual functions
  • Abstract functions and abstract classes
  • Interfaces
  • Cast operators

Assessment of the Language Features

  • Object model
  • Object creation and deletion
  • Temporary Objects
  • Inheritance
  • Virtual functions
  • Dynamic memory management

Object-Oriented Access to Hardware devices

  • Traditional solutions
  • Struct-based solution
  • Hardware device as a C++ object
  • Interrupt handling

Practical Exercises

Put what you have learned into practice immediately.

The course content is not quite what you are looking for?


What customers say:

"Well-structured from a teaching perspective, and executed with absolute precision!"
"Excellent course instruction!"
"Pleasantly calm, knowledgeable, and open to questions."
"I really liked the explanation of the background."
"With 'Design Patterns for Embedded Systems,' Mr. Nieratschker has developed a highly informative, interactive, and engaging training course. Thanks to the puzzle questions that build on one another, the course feels like a mental scavenger hunt: the Da Vinci Code for programmers."
"I've never taken a course that was so perfectly structured!!! SKT++."
"Clear, visual explanations and a lot of patience when it comes to practical applications."
"A must-read for every object-oriented programmer!"
"A very good approach to deriving the patterns."
"All participants were 'brought up to speed,' since their levels of knowledge varied greatly."
"It really helped me make progress."
"Very good, practical examples."
"The instructor knows how to engage the students."
"Complex topics explained in a way that's super easy to understand."
"Knowledge of the instructor far above the trained theme!"
"The thing I liked most was the instructor's teaching skills!"
"The things I liked most were the teacher's clarity both in presentation and spoken English."
"Examples from real world, not like e.g. wikipedia."
"We were 'forced' to think ... Our attention was up all the time, which was great."
"What I liked in particular was the deep knowledge of the instructor and the sense of humor."
"What I liked in particular was the way we discovered patterns."

SKT Nieratschker · Karl Nieratschker · Joseph-Maria-Lutz-Str. 7 · D-85293 Reichertshausen · Tel. +49 (0) 8441 490210 · office@skt-nieratschker.com