Object Oriented C++ for Real-time
Applications
Course Description
Real time is a level of computer responsiveness that a user senses as sufficiently immediate or that enables the computer to keep up with some external process (for example, to represent the process as it constantly changes). C++ is an object-oriented programming language that implements data abstraction using classes, along with other features, allowing object oriented programming. C++ is one of the most popular software programming languages for software development in the world.
This course is an in-depth Object Oriented (OO) development for Real-Time applications training course that specifically uses the C++ programming language and Unified Modeling Language (UML). The course covers both C++ and UML with the intention for building real-time embedded software systems. The course also covers real-time development using C++ by focusing on language features that support various real-time development techniques.
This course is an in-depth Object Oriented (OO) development for Real-Time applications training course that specifically uses the C++ programming language and Unified Modeling Language (UML). The course covers both C++ and UML with the intention for building real-time embedded software systems. The course also covers real-time development using C++ by focusing on language features that support various real-time development techniques.
Course Duration
5 days
Course Objectives
On completion of this course delegates will:
• Have learned and practiced object oriented concepts and modeling
• Have learned and used the Unified Modeling Language (UML) notations
• Use the C++ programming language to develop OO software systems
• Be familiar with operator overloading for user defined types
• Understand and design OO systems using inheritance, polymorphism and dynamic binding
• Appreciate the real-time specific features and techniques when writing embedded software
• Appreciate and manage issues related to target specific code that affect portability
• Be able to write interrupt-driven real-time systems using C++
• Be familiar with exception handling mechanisms in C++
• Be familiar with generic programming using C++ templates
• Understand various concurrent programming techniques
• Have learned and practiced object oriented concepts and modeling
• Have learned and used the Unified Modeling Language (UML) notations
• Use the C++ programming language to develop OO software systems
• Be familiar with operator overloading for user defined types
• Understand and design OO systems using inheritance, polymorphism and dynamic binding
• Appreciate the real-time specific features and techniques when writing embedded software
• Appreciate and manage issues related to target specific code that affect portability
• Be able to write interrupt-driven real-time systems using C++
• Be familiar with exception handling mechanisms in C++
• Be familiar with generic programming using C++ templates
• Understand various concurrent programming techniques
Course Content
Embedded C++
Introduction to Embedded C++ features and development considerations
Review of C++ Programming Features
Intrinsic data types, operators, C++ storage, pointers, arrays, references, functions and function pointers, arrays and using header files
Object Oriented Concepts and UML
Introduction to important Object Oriented (OO) concepts including classes versus instances, coupling and cohesion, abstract versus concrete classes, inheritances, composition, association, polymorphic and dynamic binding, interface versus implementation, component-based development and introduction to the Unified Modelling Language as a tool for OO development
C++ Object Oriented Features
Classes and structs, definition versus implementation, encapsulation, access regions and information hiding, this pointer, member function definition, inline functions, friend functions and classes, constructors and destructors
Overview of Operator Overloading
Default operators, operator functions, overloading binary operators, overloading unary operators, friend and member functions, overloading assignment
Inheritance
Deriving classes, virtual functions, dynamic binding, private versus public inheritance, scope resolution,
constructing derived classes, member initialisation list, multiple inheritance
Real-Time Programming
C++ support to low-level programming, hardware access, bit level manipulation, union, I/O operations through polling and interrupt
Using Interrupts
Purpose of interrupt programming, interrupt service routines ISR, functional approach to designing ISRs, OO
approach to ISRs
Writing Target Specific Code
Choosing data types, portability considerations, avoiding non-deterministic behaviour, non-standard features, using assembly language code, target memory considerations
Introduction to Templates
Parameterised types, template classes and functions, template instantiation, template arguments
Introduction to Exceptions
Purpose of exception handling, support for exception handling, grouping exceptions, resource management and termination semantics
Concurrent Programming
Concurrency, scheduling and multi-tasking, concurrent programming techniques, managing shared resources,
mutual exclusion, semaphores, and task synchronisation
Introduction to Embedded C++ features and development considerations
Review of C++ Programming Features
Intrinsic data types, operators, C++ storage, pointers, arrays, references, functions and function pointers, arrays and using header files
Object Oriented Concepts and UML
Introduction to important Object Oriented (OO) concepts including classes versus instances, coupling and cohesion, abstract versus concrete classes, inheritances, composition, association, polymorphic and dynamic binding, interface versus implementation, component-based development and introduction to the Unified Modelling Language as a tool for OO development
C++ Object Oriented Features
Classes and structs, definition versus implementation, encapsulation, access regions and information hiding, this pointer, member function definition, inline functions, friend functions and classes, constructors and destructors
Overview of Operator Overloading
Default operators, operator functions, overloading binary operators, overloading unary operators, friend and member functions, overloading assignment
Inheritance
Deriving classes, virtual functions, dynamic binding, private versus public inheritance, scope resolution,
constructing derived classes, member initialisation list, multiple inheritance
Real-Time Programming
C++ support to low-level programming, hardware access, bit level manipulation, union, I/O operations through polling and interrupt
Using Interrupts
Purpose of interrupt programming, interrupt service routines ISR, functional approach to designing ISRs, OO
approach to ISRs
Writing Target Specific Code
Choosing data types, portability considerations, avoiding non-deterministic behaviour, non-standard features, using assembly language code, target memory considerations
Introduction to Templates
Parameterised types, template classes and functions, template instantiation, template arguments
Introduction to Exceptions
Purpose of exception handling, support for exception handling, grouping exceptions, resource management and termination semantics
Concurrent Programming
Concurrency, scheduling and multi-tasking, concurrent programming techniques, managing shared resources,
mutual exclusion, semaphores, and task synchronisation
Who should attend?
This course is designed for real time developers who want to develop the C++ programming language for use on real time and embedded applications.
Pre-requisites
Delegates must have a proficient knowledge of the C programming knowledge. Some knowledge of C++ may be advantageous.