So I had to warn from the start because I know this is a heavy question. Here is the problem statement:
I am trying to design a class t