 |
Customer Service or Enrol: 0800 282 353 or +44 1372 364610 |
 |
|
 |
| |
You Will Learn How To
- Design and implement efficient object-oriented solutions using C++
- Improve C++ code quality and reusability with design patterns and proven idioms
- Build robust, efficient libraries using namespaces, templates and exceptions
- Use the standard C++ library, including the Standard Template Library (STL)
- Leverage third-party tools, class libraries and application frameworks
- Avoid the subtle traps and pitfalls of C++ programming
Course Benefits The ability to leverage the work of others, avoid pitfalls, and apply proven idioms and patterns can greatly improve the effectiveness of programming efforts. In this course, you learn to increase productivity by combining tools, idioms, syntax and libraries to produce industrial-strength C++ code. Numerous hands-on exercises provide real-world experience in developing high-quality C++.
Who Should Attend Programmers, software engineers, analysts and designers wishing to develop advanced C++ skills. Previous C++ programming experience is assumed.
Hands-on Training Our expert instructors guide you through practical hands-on exercises that reinforce your skills in advanced C++ programming techniques. Learn by doing as you develop complete programs from architectural design to refining the implementation via a series of exercises, including:
- Forwards- and reverse-engineering C++ and UML
- Improving code quality using design patterns
- Modifying a working, but poorly structured, application to increase flexibility, robustness and efficiency
- Applying all the major components of the STL
- Using namespaces, exceptions and templates to build reusable libraries
- Debugging and correcting subtle errors
Course Content
- Inheritance, encapsulation and polymorphism
- Classes, objects and attributes
- Associations, messages and methods
- Interfaces and abstract classes
- Characteristics of UML
- Mapping UML into C++
- Automating the life cycle with CASE tools
- Code generation and reverse engineering
- Debuggers and browsers
- Handle/body and related idioms
- Functors: functions coded as objects
- The motivation for design patterns
- Categories of patterns: creational, behavioural and structural
- Describing design patterns
- Synchronising multiple views with the Observer pattern
- Handling recursive data structures with the Composite pattern
- Minimising code duplication with the Template Method pattern
- Managing object creation with the Singleton pattern
- The structure of the STL
- Declaring and populating sequence and associative containers
- Accessing containers using iterators
- Applying standard and user-supplied algorithms
- Customising behaviour using function objects and adapters
- Extending the STL
- Basic input/output
- Formatting textual output
- Handling errors in input data
- Wide character types and internationalisation
- Recognising and reducing memory overhead
- Preventing memory leaks with the auto_ptr template
- Overloading operator new and operator delete
- Writing and using smart pointers
- The ODMG standard for portable ODBMS programming
- Using the C++ language binding
- Making classes persistent
- Finding objects by queries and navigation
- Avoiding name clashes using namespaces
- Using templates for type-safe reusability
- Strengthening encapsulation by consistent and appropriate use of const
- Implementing a coherent exception strategy
- Decoupling algorithms from data structures with the Visitor pattern
- Saving processing and memory with reference counting
- Sharing state between lightweight objects
- Virtual destructors
- Assignment operators and copy constructors
- Friends vs. public members
- Runtime-type information vs. virtual member functions
- Multiple and virtual inheritance
|
|
|
|
|
|
| |
| Customer Service or Enrol: 0800 282 353 or +44 1372 364610 |
 |
|