About Us
Education and Training
Education and Training

Consulting
Gifts
Contacting Us
Employment
The Pantheon Systems Journal
Home

Pantheon Systems, Inc.
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:

  1. Introduction

  2. A Quick Review of C++
    Highlights, rapid brush up of essential elements of C++

  3. Object-Oriented Design
    Key concepts and applicability to C++

  4. 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?

  5. Storage Management Strategies
    Reference counting, User defined new and delete, garbage collection strategies.

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

  7. Making virtual functions be virtuous
    Polymorphism in practice. Designing for the unexpected. Which functions should be virtual? Fat interfaces. Abstract bases - when and how.

  8. Templates
    Template class usage. Best practices. Template functions. Passing operations as arguments. Templates and I/O Stream manipulators.

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

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

  11. Reuse: Fact and Fiction
    Who reuses, and what. Levels of reuse. Conditions for reuse. Inheritance and reuse. Reuse heuristics. Reuse, misuse, abuse and disuse.

  12. Interactive Applications
    Special issues. Model-view-controller, Document/View architecture. Special UI hierarchies. UI and C++. Application frameworks.

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

  14. Efficiency
    Coding efficiently. Designing efficiently. Debugging C++: Art, science or witchcraft? Performance measurement and tuning. Coding checklist.

  15. C++ standards and libraries
    Standards for exception handling, RTTI, templated manipulators, namespaces, STL, Boolean type and standard String type.

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

Top

Registration | Calendar | Curriculum | After Hours | Forms | Schedules/Pricing

Copyright© Pantheon Systems, Inc. All rights reserved.