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,...