C++ Training

BASIC C++ course

The goal of this course is to provide developers the most important
concepts of the C++ programming language.

C++ == a better C

  • Comments
  • Streams
  • Default function arguments
  • Function overloading
  • References

Concepts of Object-Oriented Programmig (OOP)

  • Objects and Classes
  • Abstraction/Encapsulation
  • Data Hiding
  • Inheritance
  • Polymorphism
  • Composition
  • Aggregation
  • OO Design

Object based programming

  • Objects and Classes
  • Class members
  • Class members visibility
  • this-pointer
  • Construction/destruction
  • const-members and objects, best practices
  • Dynamic memory allocation : new/delete
  • static-members
  • Class code management
  • Friend classes/functions

Implementing OO-concepts in C++

  • Inheritance
  • Polymorphism
  • Pure virtual-functions
  • Abstract classes
  • Interfaces

Migrating from C to C++

  • Calling conventions
  • Name decoration or name mangling
  • Under the hood
  • Use of “extern C”

Exception handling (EH)

  • Robust programming
  • Setting up an EH-scheme
  • try/throw/catch
  • Throwing objects
  • Best practices
  • Use of set_terminate()
  • Best practices

Conversions

  • Typecasts
  • Conversion by constructor
  • Conversion operator
  • Avoiding ambiguities

Operator overloading

  • Introduction
  • Overloading as a gadget
  • using a member function
  • using a friend function
  • Overloading as a necessity
  • overloading operator=()
  • copy constructor
  • Restrictions

Templates – STL

  • Template functions
  • Class templates
  • Standard Template Library (STL)

Multiple Inheritance

  • Inheriting implementations
  • Ambiguities
  • virtual base classes

I/O-streams : under the hood

  • Definition of cin
  • Definition of cout
  • Persisting your own objects
  • Formatted output

Advanced C++ course

This course is designed to provide an in-depth knowledge of C++

C++ revisited

  • References
  • Access-specifiers, this-pointer
  • (explicit) constructor / destructor
  • Copy constructor
  • const -memberfunctions , – objects ; mutable
  • Inheritance, polymorphism
  • Templates + template specialization

Advanced Topics

  • Namespaces
  • RTTI
  • Cast operators: static_cast, dynamic_cast, …
  • Smart Pointers

Standard Template Library (STL)

  • Introduction to STL
  • Containers : Sequences and Associative Containers
  • Using Containers: string, vector, deque, list, set, map, …
  • Iterators: an overview
  • Using Iterators: mutable, constant, reverse, constant and reverse
  • Algorithms: sort, reverse, search

Understanding/Implementing Design Patterns using C++

The importance in design patterns lies in the fact that application development can result in an architecture that is smaller, simpler and far more understandable than if these patterns were to be ignored.
Course material is based on the Design Patterns bible ‘Design Patterns’ by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides.

  • Introduction to design patterns
  • Creational patterns: Abstract Factory, Factory Method, Singleton
  • Structural Patterns: Composite, Façade
  • Behavioral Patterns: Chain of Responsibility, Iterator, Interpreter,
    Command, Observer, Visitor

If time permits, following Design Patterns can be discussed:
Bridge, Decorator, Mediator, Proxy, State

Unit testing

Implementing Design Patterns in C++ (4 days)

Design patterns describe simple and elegant solutions to specific problems in Object Oriented Design.
Design patterns capture solutions that have developed and evolved over time. They play an important role in designing complex systems.
The importance in design patterns lies in the fact that application development can result in an architecture that is smaller, simpler and far more understandable than if these patterns were to be ignored.

Course material includes slides based on the book ‘Design Patterns’ by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides.

At the end of the course, students will be able to: understand and implement different design patterns

Prerequisites
Before attending this course, students should be familiar with: at least 3 months C++ programming skills

Course Outline

Introduction
What are Design Patterns ?

Creational Patterns (theory + labs)
Creational patterns abstract the instantiation process.
Patterns described:

  • Abstract Factory
  • Factory Method
  • Singleton

Structural Patterns (theory + labs)
Structural patterns are concerned with how classes and objects are composed
to form larger structures.
Patterns described:

  • Bridge
  • Composite
  • Decorator
  • Façade
  • Proxy

Behavioural Patterns (theory + labs)
These patterns are concerned with algorithms and the assignments of responsibilities and communications between objects.

Patterns described:

  • Chain of Responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Observer
  • State
  • Strategy
  • Visitor

Case Study
Putting theory into practice, students will analyze/develop a file-system. Based on the knowledge they have acquired during the course, students will decide what design patterns to use for the implementation.

 Custom C++ course (3 days)

Concepts of Object-Oriented Programming (OOP)   (2 hours)

  • Objects and Classes
  • Abstraction/Encapsulation
  • Data Hiding
  • Inheritance
  • Polymorphism
  • Composition
  • Aggregation

 C++ standards (2 hours)

  • The C++ Standards Committee
  • C++0x
  • Extensions to the core language
  • Rvalue reference and move semantics
  • Type inference
  • Lambda functions and expressions
  • Null pointer constant: nullptr
  • C++ Technical Report 1

Object Oriented Design (.5 day)

  • Introduction
  • Single Responsibility Principle
  • Open-Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation Principle
  • Dependency Inversion Principle

Standard Template Library (STL) (1 day)

  • Introduction to STL
  • Containers
  • string
  • Sequences: vector, deque, list
  • Associative Containers: set, map
  • Iterators
  • Container Adapters: queue, stack
  • Algorithms: sort, reverse, search, for_each, fill
  • Function Adapters: mem_fun_ref, mem_fun
  • Parameter Binders: bind1st, bind2nd

Boost Libraries (1 day)

  • Data structures: Any, Variant
  • Miscellaneous: Noncopyable, Date_time, Lexical_cast
  • String and text processing: Regex (regular expressions)
  • Function Objects: Bind
  • Memory: Smart Pointers
  • Concurrent Programming: Thread, Interprocess

Check out our references or contact us for more information.

 

Some clients: European Commission, Cefora, IBM, Holcim, CBR, EWEA, BNP Paribas Fortis, Total, Bpost, Cisco, Toyota, CONCORD Europe, Innova Europe, EFTA, Weber Shandwick, Schneider Electric, CIBP, EDA, ECDPM, PVCycle, Colipa, Newtec, Croplife, Shape, Colruyt, Telelingua, Nestlé, CPAS Molenbeek, Birdlife, Fabricom, Club Med, NATO, G4S, Fonds de participation, EFC, Euromil, Eurodesk, AEIDL, Roularta, Georg Fischer, SGC, STIB, Federal Police, Flemish Government, KBC, Fortis, ING, Tetrapak, Royal Canin, GSK, ULB, Starwood hotels, Jetair, Belgacom, VRT, National Bank of Belgium,...