عبر الإنترنت
Learning Modern C++ Functional Programming
  • مدة الدورة التدريبية: 24 ساعة إبدأ الآن
  • طريقة تقديم الدورة: عبر عرض الفيديو

تفاصيل الدورة

24 hours real time session + 10 hours monitored hands-on

Ideal For: The course is intermediate to advanced in proficiency. It is suitable for the following:

  • Programmers new in the area of Software Engineering that uses C++
  • Developers embarking on projects using C++‐based techniques for their projects
  • Professionals looking forward to upgrade the knowledge to apply skills

Post course benefits: Lifetime access to online repository, Mock interview support, project support

Recruitment support: eAgeIT will propose candidates of this program for any open opportunities with its client portfolio. We do not guarantee placement. This will be purely merit based support.

Course Objectives:

  • To understand C++ internals with proven examples
  • Would be able to apply C++ skills to construct code for their project
  • Get an insight to develop C++ software in a systematic manner
  • Would be able to user C++ 11 & 14 & 17 extensions in software
  • Would be able to write secured code that cannot be easily exploited
  • Get an understanding of robust software design in C++

Pre-Requisites:

  • Delegates are desired to be aware of OOPS principals but it is not a mandatory

Detailed Coverage:

C++ Introduction Timeline

  • Features of C++ (Revision)
  • Goals for C++ and TR11/14/17
Build Essentials in C++ 

  • Monolithic build, scope, and translations to executables
  • Std 11/14/17 switchs and __cplusplus
  • Separately Translated Program and monolithic builds
Programming Paradigms

  • Procedural Programming
  • Object-Oriented Programming
  • MDD, UML view, OOAD, SOLID
  • Relationships and Responsibility in OOPS
  • ;Introduction to C++ Specific Features
  • Data Declaration and scope, Functions in C++: inline
  • default argument, Overloading, References, Namespaces
  • Inbuilt support for object oriented features
  • RTTI, exception handling, templates
  • Large-Scale Projects Are More Susceptible to Name Clashes
  • Koenig Lookup
  • Namespace Aliases
  • Namespace Utilization Policy in Large-Scale Projects
  • Namespaces and Version Control
  • Scope Resolution Operator Should Not Be Used to Designate Global Names
  • Standard Headers Names
  • Restrictions on Namespaces
  • Namespace std Can Not Be Modified
  • User-Defined new and delete Cannot Be Declared in a Namespace.
Classes and Objects

  • Representing Objects in C++
Object members and special member functions 

  • The initializations in C++ using constructor
  • OAD: C++ Object Implementation
  • How a compiler interprets Object
  • Special member functions
  • Constructors,Destructors
  • Copy and move Constructor
  • Assignment move in Operator
  • Blocking Object Copying
  • Designing a class around mutable, logical const
 Object Initialization & Cleanup

  • Compiler Synthesized Constructor & Destructor
  • Deep copy v/s Shallow copy
  • explicit constructor
  • Copy Constructor v/s Assignment operator
  • Initialization v/s Assignment
  • Order of Initialization
  • Aggregate initialization
Class Members and Designing Software

  • Static data
  • Static methods
  • Object instance control and sharing
  • A minimal pattern study: singleton and its variance
  • lmitations, and extensions
Memory management techniques in C++ 

  • Types of Storage
  • POD (Plain Old Data) and non-POD Objects
  • The Lifetime of a POD Object
  • The Lifetime of a non-POD Object
  • malloc() and free() Versus new and delete
  • new and delete
  • Allocating and Deallocating Arrays Using new[] anddelete[]
Extending the Encapsulation in Design 

  • Friend and classes
  • Object communication
  • Friend functions, Friend classes
  • Const objects and const member functions
  • Object composition & destruction mechanism
  • Boundary classes & object interfaces
Overloading Operators 

  • The operator function and its interpretation object expressions
  • Using member functions & friend functions – when to use what
  • Implicit/explicit overloading mechanism
  • Returning objects & assignment operator
  • Overloading new & delete operators
Special operator overloads: usage in STL as case study

  • operator == , operator [ ], operator ( ), operator –>, operator comma (,)
Code Browsing and reverse engineering

  • CScope ,Cflow
;Objects in Hierarchy Design: Inheritance in C++
  • Example frameworks that are built on inheritance: QT, WX Widget
  • Specialization and Derived Classes
  • Generalization and Abstract class, interfaces
  • Types of inheritance
  • Single level, multi-level, multiple, hierarchical, hybrid
  • Inheritance – is it allocation or accessibility
  • The protected access specifier
  • Inheritance in private, protected & public mode
  • Constructors & destructors in a derived class
  • Multiple inheritance
  • Virtual Base class Invoking base class constructors
  • Why a constructor is not inherited
15. Is-a & Has-a relationship
  • Nested classes & Containership
16. Runtime Polymorphism, Virtual Functions & Dynamic Binding
  • Pointers to Class Members
  • Base class pointers & derived class objects
  • Virtual functions & base class pointers
  • Virtual functions & base class reference
  • Dynamic Binding v/s Early Binding
  • Pure virtual functions
  • Virtual destructors
  • Abstract classes & applications
;Runtime Type Identification & Casting Operators
  • Runtime Polymorphism & RTTI
  • typeid & type_info
  • dynamic_cast, const_cast, static_cast, reinterpret_cast
18. Templates in Depth
  • Implicit instantiation
  • Explicit instantiation
  • Specialization: complete and partial
  • Function Templates
  • Class Templates
  • Declaration of a Class Template
  • Instantiation and Specialization
  • Explicit Specialization of a Class Template
  • Specializations of Class Template Functions
  • Template Arguments
  • Default Type Arguments
  • Static Data Members
  • Friendship
  • Function Templates
  • Performance Considerations
  • Type Equivalence
  • Avoiding Unnecessary Instantiations
  • Explicit Template Instantiation
  • Interaction with Other Language Feature
;The Design of STL for handling Modern and Complex Data handling
  • Containers, Algorithms, and iterators
  • Using STL/STD Containers
  • Using Algorithm and iterators with STD
  • Exploring various containers, iterators and algorithms
  • Vector, List, Map, Set
  • Array, tuple, unordered_map, unordered_set
;Language Feature extensions
  • Initialization, Initializer lists
  • Uniform initialization
  • Move Semantics
  • Lambda
  • Auto, decltype, trailing return type, auto vs. decltype
  • Range-based for loop ,static_assert, constexpr functions/data, Inline namespaces
21. Concurrency in C++
  • STD Threads Passing, arguments to threads
  • Data lifetime considerations, Synchronization with mutexes and locking
  • Acquiring multiple locks, mutex types
  • Returning values from threads using futures and async, Launch policies
  • Condition variables, Thread-local storage




 

تحديث بتاريخ 29 September, 2019

المتطلبات

The course is intermediate to advanced in proficiency. It is suitable for the following:
>Programmers new in the area of Software Engineering that uses C++
>Developers embarking on projects using C++‐based techniques for their projects
>Professionals looking forward to upgrade the knowledge to apply skills.
Delegates are desired to be aware of OOPS principals but it is not a mandatory