C++ and Object-Oriented Programming
Course Details
Presented by Leor Zolman
A 5-Day Course of Lectures and Lab Exercises
Who Should Attend:
- Experienced software developers who want to "move up" to C++ and object oriented programming.
- Project managers who need to understand how C++ and object oriented programming differ from traditional C programming.
Prerequisites:
Participants need not have any prior C++ experience, but should be experienced with C. (A reading knowledge is rarely sufficient.) In particular, qualified participants should be able to:
- read and write data declarations and function prototype declarations
- understand the interchangeability of pointer and subscripting notation
- work with structs and pointers to structs
- build programs from more than one source (.c) file
If you are uncertain about whether you should take this course, we suggest you contact us.
Course Outline
1. Introduction
- Fundamental Design Concepts
- Abstract Data Types
- The "Spirit" of C++
2. Translating Object-Oriented Concepts into Practice
- Compiling and Running C++ programs
- "Programming in the Large"
- Case study: Critiquing a "Large" C program
- Encapsulation using Separate Compilation
3. Classes and Objects
- Member Functions
- Declaring and Using Objects
- Partitioning Design Decisions
- C++ Notation and Terminology
- Access Control
4. Storage Allocation
- Static, Automatic and Dynamic Memory
- new and delete operators
- Case study: Dynamic Arrays
- Constructors and Destructors
- Member Initializers
- Static Data and Function Members
5. Building More Powerful Abstractions
- Inline Functions
- Function Name Overloading
- const and volatile Qualifiers
- const Member Functions
- References as Arguments and Return Types
- Copy Constructors
6. Language Extensibility
- Operator Overloading
- Case Study: Rational Numbers
- Default Assignment Operator
- Default Function Arguments
- Friend Functions
- Stream Input and Output
- Conversion Operators
7. Inheritance
- Reusing Classes via Membership (Aggregation or Composition)
- Reusing Classes via Inheritance (Derivation)
- Inheritance vs. Aggregation (Is-A vs. Has-A Relationships)
8. Scope and Access Control
- Scope Rules
- Nested Classes
- Friend Classes
- More on Access Control
9. Object-Oriented Programming Techniques
- Static vs. Dynamic Binding
- Polymorphism
- Case Study: a Unix-like File System
- Type Fields and Discriminated Unions
- Common Interfaces Using Inheritance
- Virtual Functions
- Abstract Base Classes and Pure Virtual Functions
- Pointer and Reference Conversions
- Case Study: a Hierarchy of Geometric Shapes