







 |
|
 The Object
Technology Company
Advanced Object-Oriented Programming in C++ Paradigms
for Productivity
Duration: 3 days
Class size: Up to 12 students
Prerequisites:
Attendees should have attended or otherwise acquired the grounding provided
by Pantheon's Programming in C++ course. It is recommended that those
attending have at least six months programming experience with C++.
Who should take this course?
Engineers with experience of C++ who wish to become superior practitioners
of object-oriented design in C++ through and enhanced understanding of the
object paradigm and its realization via the idioms and usage of C++.
What will you gain?
Learning a language is not the same thing as becoming proficient in it.
Proficiency connotes familiarity with the nuances of the language, its idioms
and its thought patterns. This course teaches you how to employ object-oriented
thinking and design patterns to develop software in C++.
Topics addressed include object-oriented design paradigms, paths and
barriers to reusability, framework Vs. library design, as well as issues
specific C++ approaches to multiple inheritance, garbage collection, function
objects, templates and exceptions.
Course contents:
- Introduction
- A Quick Review of C++
Highlights, rapid brush up of essential elements of C++
- Object-Oriented Design
Key concepts and applicability to C++
- Evaluating Classes
What is a good class and what is not? How do you measure goodness?
What are some telltale signs of future problem classes?
- Storage Management Strategies
Reference counting, User defined new and delete, garbage collection
strategies.
- Preserving your Inheritance
Using inheritance well. When inheritance is the wrong way. Using
multiple inheritance. Achieving multiple inheritance without using it. Virtual
base class issues.
- Making virtual functions be virtuous
Polymorphism in practice. Designing for the unexpected. Which
functions should be virtual? Fat interfaces. Abstract bases - when and how.
- Templates
Template class usage. Best practices. Template functions. Passing
operations as arguments. Templates and I/O Stream manipulators.
- Exceptions
Why exceptions? How are they used in C++? C++ Exception class
hierarchy. Rethrows and retries. Exception specifications. Planning for the
unexpected. Exceptions during constructors.
- Run-time typing (RTTI)
When to use it. Enabling technology - type_info and typeid(). New
style typecasts - const_cast, reinterpret_cast, static_cast and dynamic_cast.
- Reuse: Fact and Fiction
Who reuses, and what. Levels of reuse. Conditions for reuse.
Inheritance and reuse. Reuse heuristics. Reuse, misuse, abuse and disuse.
- Interactive Applications
Special issues. Model-view-controller, Document/View architecture.
Special UI hierarchies. UI and C++. Application frameworks.
- Building Large Systems
Issues in large-system design. Reality and virtual reality. Pluggable
design. Malleable design - delegation vs. polymorphism. Libraries and
frameworks. Types of library classes. Transactions. Designing for change.
Maintaining large systems.
- Efficiency
Coding efficiently. Designing efficiently. Debugging C++: Art,
science or witchcraft? Performance measurement and tuning. Coding checklist.
- C++ standards and libraries
Standards for exception handling, RTTI, templated manipulators,
namespaces, STL, Boolean type and standard String type.
- Summary and Conclusion
The course comprises lectures and labs, with the labs constituting about
30% of the course schedule. The discussions include practical examples of where
and how to use the techniques discussed in the course.

Registration |
Calendar | Curriculum
| After Hours | Forms
| Schedules/Pricing
Copyright© Pantheon Systems, Inc. All
rights reserved. |