Course Prerequisites

Prerequisite: ITP 132 - C++ Programming I

Course Description

Presents in-depth instruction of advanced object-oriented techniques for data structures using C++. You will learn to

  1. Create applications demonstrating overloaded operators and functions. 
  2. Create applications demonstrating inheritance. 
  3. Create applications demonstrating dynamic memory allocation using data structures such as linked lists and trees.

Course Objectives

  1. Encapsulation Concepts
    1. Understand the object-oriented concept of encapsulation.
    2. Understand and code the components of a Class.
    3. Describe the various access-specifiers of a class.
    4. Define the scope and visibility of the class components.
  2. Method and Operator Overloading
    1. Describe the fundamentals of method overloading.
    2. Explain how to code overloaded methods.
    3. Understand the fundamentals of operator overloading.
    4. Recognize the differences between operator methods as class members vs. as friend methods.
    5. Correctly code overloaded stream-insertion and stream-extraction operators.
    6. Use overloaded unary and binary operators in C++ in applications.
  3. Inheritance and Abstract Classes
    1. Understand the object-oriented concept of inheritance.
    2. Explain the differences between public, protected and private inheritance.
    3. Explain the relationships between base and derived classes.
    4. Explain the functionality of constructors and destructors in a derived class.
    5. Apply inheritance in developing application solutions.
    6. Explain the concept of abstract classes.
  4. Polymorphism and Virtual functions
    1. Understand the concept of polymorphism.
    2. Explain and code virtual destructors.
    3. Apply and use polymorphism and virtual functions in developing application solutions.
  5. Stream Input and Output
    1. Explain the concept of streams in C++.
    2. Understand the difference between classic and standard streams.
    3. Describe input and output classes and objects.
    4. Discuss the various stream manipulators and format states.
    5. Apply stream input and output skills in applications.
  6. Pointers and Dynamic Allocation
    1. Understand pointer declarations and memory allocation.
    2. Explain pointer operator manipulation.
    3. Understand the differences between early and late binding.
    4. Understand constant and non-constant pointer manipulation.
    5. Apply dynamic memory allocation skills in applications.
  7. Data Structures
    1. Explain the similarities and differences between linked lists, trees, and vectors.
    2. Utilize data structure in different applications.
    3. Understand self-referential classes.
    4. Understand queue and stack data structures.
    5. Determine the proper implementation of each data structure type.
  8. Exception Handling
    1. Understand concept of exception-handling.
    2. Explain other error handling techniques.
    3. Understand rethrowing an exception.
    4. Describe exception-handling constructors and destructors.
    5. Describe processing unexpected exceptions.
    6. Apply exception handling skills to develop robust applications.