Overview
An intensive, 5-day, lecture-and-lab Visual C++ 2008 and object-oriented programming course for practicing C (or other high-level language) programmers. Visual C++ 2008 offers all the features of standard C++ and the ability to work with the Visual C++-specific managed code capabilities of the C++/CLI (Common Language Infrastructure). This course covers Visual C++ 2008’s features for data abstraction and encapsulation that enable programmers to create new types, and capabilities for object-oriented programming with inheritance and polymorphism. The course clearly explains the Visual C++ 2008 programming language and contains detailed walkthroughs of many Visual C++ programs. Students become proficient in Visual C++, understand the object-oriented paradigm, and participate in challenging hands-on laboratory assignments. Solutions are provided for the laboratory exercises. 60% lecture and 40% laboratory exercises.
Prerequisites
- Programming in C or another high-level language, or
Introduction
Review of C++ syntax and concepts presented in the following chapters of Visual C++ 2008 How to Program, 2/e.
- Chapter 2—Dive Into® Visual C++® 2008 Express
- Chapter 3—Introduction to Visual C++ Programming
- Chapter 4—Introduction to Classes and Objects
- Chapter 5—Control Statements: Part 1
- Chapter 6—Control Statements: Part 2
- Chapter 7—Functions and an Introduction to Recursion
- Chapter 8—Arrays and Vectors
- Chapter 9—Pointers and Pointer-Based Strings
Classes: A Deeper Look, Part 1
- Time Class Case Study
- Class Scope and Accessing Class Members
- Separating Interface from Implementation
- Access Functions and Utility Functions
- Time Class Case Study: Constructors with Default Arguments
- Destructors
- When Constructors and Destructors Are Called
- Time Class Case Study: A Subtle Trap—Returning a Reference to a private Data Member
- Default Memberwise Assignment
- Class View and Object Browser
Classes: A Deeper Look, Part 2
- const (Constant) Objects and const Member Functions
- Composition: Objects as Members of Classes
- friend Functions and friend Classes
- Using the this Pointer
- Dynamic Memory Management with Operators new and delete
- static Class Members
- Proxy Classes
- const and friend in C++/CLI
- Dynamic Memory Management in C++/CLI
- Stack Semantics in C++/CLI
- Finalizers
- Value Types vs. Reference Types in C++/CLI
- Boxing and Unboxing in C++/CLI
- Indexers
Operator Overloading; String and Array Objects
- Fundamentals of Operator Overloading
- Restrictions on Operator Overloading
- Operator Functions as Class Members vs. Global Functions
- Overloading Stream Insertion and Stream Extraction Operators
- Overloading Unary Operators
- Overloading Binary Operators
- Case Study: Array Class
- Converting between Types
- Case Study: String Class
- Overloading ++ and --
- Case Study: A Date Class
- Standard Library Class string
- explicit Constructors
- C++/CLI Operators and Constructors
Object-Oriented Programming: Inheritance
- Base Classes and Derived Classes
- protected Members
- Relationship between Base Classes and Derived Classes
- Creating and Using a CommissionEmployee Class
- Creating a BasePlusCommissionEmployee Class Without Using Inheritance
- Creating a CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy
- CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using protected Data
- CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using private Data
- Constructors and Destructors in Derived Classes
- public, protected and private Inheritance
- Inheritance in C++/CLI
Object-Oriented Programming: Polymorphism
- Polymorphism Examples
- Relationships Among Objects in an Inheritance Hierarchy
- Invoking Base-Class Functions from Derived-Class Objects
- Aiming Derived-Class Pointers at Base-Class Objects
- Derived-Class Member-Function Calls via Base-Class Pointers
- Virtual Functions
- Summary of the Allowed Assignments Between Base-Class and Derived-Class Objects and Pointers
- Type Fields and switch Statements
- Abstract Classes and Pure virtual Functions
- Case Study: Payroll System Using Polymorphism
- Polymorphism, Virtual Functions and Dynamic Binding “Under the Hood”
- Case Study: Payroll System Using Polymorphism and Runtime Type Information with Downcasting, dynamic_cast, typeid and type_info
- Virtual Destructors
- Polymorphism in C++/CLI
Templates and Generics
- Function Templates
- Overloading Function Templates
- Class Templates
- Nontype Parameters and Default Types for Class Templates
- Templates in C++/CLI
- .NET Generics in C++/CLI
- Generic Type Constraints
- Contrasting Templates and Generics
Exception Handling
- Exception-Handling Overview
- Example: Divide by Zero Without Exception Handling
- Example: Handling an Attempt to Divide by Zero
- When to Use Exception Handling
- Rethrowing an Exception
- Processing Unexpected Exceptions
- Stack Unwinding
- Constructors, Destructors and Exception Handling
- Exceptions and Inheritance
- Processing new Failures
- Class auto_ptr and Dynamic Memory Allocation
- Standard Library Exception Hierarchy
- Other Error-Handling Techniques
- .NET Exception Hierarchy with C++/CLI
- Classes ApplicationException and SystemException
- Determining Which Exceptions a Function Throws
- finally Block in C++/CLI
- Exception Properties in C++/CLI
- User-Defined Exception Classes in .NET
Files and Streams in .NET
- Files and Streams
- Classes File and Directory
- Creating a Sequential-Access Text File
- Reading Data from a Sequential-Access Text File
- Serialization
- Creating a Sequential-Access File Using Object Serialization
- Reading and Deserializing Data from a Sequential-Access Text File
Standard Template Library (STL)
- Introduction to the Standard Template Library (STL)
- Introduction to Containers
- Introduction to Iterators
- Introduction to Algorithms
- Sequence Containers
- Associative Containers
- Container Adapters
- Algorithms
- Function Objects
- Introduction to STL/CLR
Collections
- Collections Overview
- Class Array and Enumerators
- Nongeneric Collections
- Generic Collections
Optional Object-Oriented Design (OOD) with the Unified Modeling Language (UML) Case Study
An optional topic for our object-oriented programming classes is our case study on object-oriented design using the UML in which we design and fully implement the software for a simple automated teller machine (ATM). We introduce a subset of the UML 2.0, then guide the reader through an end-to-end first object-oriented design and implementation experience which ends with a walkthrough of the complete code.
Price
- $12,995 lecture fee for up to 20 students maximum. Add $1,000 for international or custom classes.
- Client purchases the books, at its own expense, directly from Pearson (the publisher) at the discounted Deitel rate.
- Instructor Travel Reimbursement (if travel is required).
Courses in the Visual C++ 2008 Curriculum
