| |
Object-Oriented Programming With C++
- Course Variations:
- Several versions of this course are available, depending on the
backgrounds of the course participants. The one described below is
for software developers with C programming experience but without
prior knowledge of C++. An alternate version is available for
software developers who lack the C programming experience, and a
third, more advanced version is available for those with introductory
knowledge of C++.
-
- Description:
- This intensive SoftMoore course provides a solid foundation for
object-oriented programming using the C++ programming language.
Assuming a basic familiarity with the C programming language and
classical procedural programming techniques, the course guides
participants into an object-oriented mindset for developing software.
The major emphasis of this course is on the most effective use of
the advanced language features, presented in the context of modern
software engineering themes of modularity, abstraction, information
hiding, and reusability. Fundamental principles of object-oriented
design and programming are stressed while covering the latest
ANSI/ISO language enhancements. The course uses a hands-on workshop
approach with numerous examples and programming exercises to
illustrate and reinforce basic concepts. Lectures are interspersed
with programming exercises which require participants to design,
compile, link, and test complete C++ programs.
-
- Audience:
- This workshop is designed for software development professionals who
are planning to move to C++ for developing object-oriented applications.
This is not a gentle overview of C++ for the casual programmer or
non-technical manager. Participants are expected to have C programming
experience.
-
- Recommended Duration:
- 5 Days
-
- Course Materials:
- Each participant will receive a complete set of all course materials
including course notes, programming exercises and solutions, and a copy
of a current C++ programming textbook.
-
Course Outline
- C++ Language Fundamentals
-
| Reference Types |
| Dynamic Memory Allocation in C++ |
| The New C++ Casting Operators |
| Basic Input/Output in C++ |
Classes: User-Defined Types
| Class Members |
| Friends |
| Constructors and Destructors |
| Inline Member Functions |
| The this Pointer in Member Functions |
| Function/Operator Overloading |
| Assignment versus Initialization |
| Static Class Members |
| Container Classes and Iterators |
Object-Oriented Programming and C++
| Derived Classes and Inheritance |
| Conversions Under Derivation |
| Class Hierarchies |
| Virtual Functions |
| Polymorphism |
| Pure Virtual Functions |
| Abstract Classes |
The C++ I/O Library
| Streams |
| I/O Operators |
| Overloading I/O Operators |
| Formatting |
| String Streams |
| Binary I/O |
Templates: Parameterized Classes
| Declaring Class Templates |
| Class Template Instantiation |
| Function Templates |
| Specialized Implementations |
The Standard Template Library
| Container Classes |
| Fundamental Algorithms |
| Iterator Categories |
Object-Oriented Design for C++
| OO Design versus OO Programming |
| Identifying Objects and Classes |
| Relationships Between Objects |
| Steps in Object-Oriented Design |
| A Small Case Study |
| Classification of Operations |
| Problem-Space versus Solution-Space |
Exceptions and Error Handling
| Dealing with Run-Time Errors |
| Declaring Exceptions in C++ |
| Exception Handlers |
| Propagation of Exceptions |
| Exception Specifications |
| Predefined Exceptions |
Class Design
| Designing a Class with Operators |
| Handles and Reference Counts |
| Case Study: A String Class |
| Functions as Objects |
Run-Time Type Identification
| The typeid Operator |
| The Dynamic Cast Operator |
Namespaces
| Defining Namespaces |
| Namespace Aliases |
| The Using Directive |
| The Using Declaration |
Issues in Memory Management
| Overloading new and delete |
| Placement Syntax |
| Operators new[] and delete[] |
| Memory Management Guidelines |
| Smart Pointers |
| Overloading Operators * and -> |
| Smart Pointers and Inheritance |
| The Class auto_ptr |
|