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