Week 4 - Inheritance
Learning objectives
Upon finishing this week, you should be able to:
- Use inheritance to extend classes
- Identify appropriate uses for abstract classes
- Describe how virtual functions differ from regular ones and enable polymorphism
Schedule
Day 1
- Inheritance
- Do CPPLab Inheritance 1
Day 2
- Virtual Functions and Polymorphism
- Do VirtualFunctionCall WS
Day 3
- Abstract Classes
- Do CPPLab Inheritance 2
- Check out Assignment
Day 4
- Multiple inheritance and interfaces
- OO Design
- Do design activity
Online Activity Outline
Inheritance Basics
Inheritance is one of the fundamental tools for code reuse in Object Oriented programming. It allows one class to define itself as a specialized version of another class. Learncpp.com has a nice overview of why we care about inheritance that you might want to start with.
Read 15.1-15.5. In 15.4 don't worry too much about what a destructor is and why we need them * we will hit them later.
These videos offer some tips:
Read 15.9 and watch this video about the protected access modifier:
Do CPPLab Inheritance 1
Virtual Functions, Abstract Classes and Dynamic Casting
Read 15.6-15.11
These videos touch on some of the key ideas:
Do the VirtualFunctionCalls worksheet from the Files area of elearn.
Abstract Classes
Do CPPLab Inheritance 2
Multiple Inheritance and Interfaces
Read learncpp.com 24.9 and the Interface classes part of 25.7. It is OK to skim the multiple inheritance page * our main goal it to understand what the pitfalls of multiple inheritance are and why many programmers avoid it. On the interfaces page, our main goal is to understand what an interface is, and why they are considered a safe way to use multiple inheritance.
These two videos briefly introduce the ideas of multiple inheritance and interfaces:
Design
This video introduces using inheritance to do class design:
Look in the files area for the Inheritance Design Worksheet. It is a quick pen and paper exercise based on OO Design video.