Description
This intensive course has two objectives: to present to participants the methods and reflexes of object programming; provide them with complete operational mastery of the C++ language. It is the result of long experience in development in C++ and is built according to a rigorous pedagogy based on numerous progressive practical works. During these 5 days, the trainer will present the evolution of the standards from C++98 to C++20.
Who is this training for ?
For whom ?
Developers, engineers and project managers close to development.
Prerequisites
Good knowledge of a programming language such as C, Java, Python, C#, VB.NET or PHP.
Training objectives
Training program
- C++ syntax (differences between C and C++)
- Data: definition, initialization, data types.
- Expressions: notion of reference, casting mechanisms.
- Operators (: :, new, delete).
- Functions (passing parameters and return value by reference, default values, inlining, overloading).
- Using C code in a C++ program.
- References (arguments and return values).
- Constant types.
- Namespaces.
- "Automatic" typing with keyword auto (C++ 11).
- Practical work Getting started with the development environment and programming a simple program.
- Object-oriented approach
- The general principles of object-oriented techniques.
- C++ and object programming.
- An introduction to object-oriented methodologies.
- An introduction to models and UML notation (static model, dynamic model, cooperation model, scenario).
- Practical work Application of concepts to a case study which will be one of the guiding threads of the following exercises .
- C++ classes and objects
- Syntactic aspects: fields, methods, constructors.
- Access control.
- Self-reference.
- Static fields and methods.
- Functions.
- Methods and friend classes.
- Dynamic creation of object arrays.
- Methodological aspects: class design.
- Copy and move constructors (C++11).
- Constructor delegation (C++11).
- Introduction to memory management issues (stack, heap, garbage collector).
- Practical work Programming the case study.
- The design and the construction of a hierarchy of classes and interfaces.
- Derivation and inheritance
- Principle of derivation.
- Syntactic aspects: the definition of derived classes, constructors.
- Access control.
- Implementing polymorphism: virtual functions.
- Code reuse: abstract classes.
- Interfaces.
- Multiple derivation.
- Semantic and methodological aspects: code factorization.
- Practical work The implementation of polymorphism in the case study.
- The exceptions
- Syntactic aspects: try blocks, generation of exceptions.
- Methodological aspects: construction of an exception hierarchy, use of exceptions.
- Practical work The introduction of exceptions in the case study.
- Operator overloading
- Principle of overloading.
- Overloading of binary operators.
- Special overloading: the index, function, conversion operator.
- Overloading memory management operators.
- Overloading the '<<' and '>>' operators.
- Practical work The overloading of some simple operators.
- The models
- Class model.
- General principles and mechanisms.
- Template overloading and method redefinition.
- Function model.
- General principles and mechanisms.
- Model overloading.
- Models and operator overloading.
- Models and derivation mechanisms.
- The improvements proposed by C++ 11.
- Practical work Exercises on models.
- I/O and overview of the STL
- I/O.
- The principle of streams and the hierarchy of input/output classes.
- Description of some input classes /outputs.
- Overview of the STL.
- Objectives and principles.
- Descriptions of some models and classes.
- Containers, iterators, interval-based loop (C++11).
- Conclusion
- Software life cycle: testing, integration, production method.
- Interaction with other environments.
- Critical analysis of C++.
- Evolution of C++.