(The title sucks because I don't understand my problem well; I'm lost as to how I approach this. Hopefully the question is answerable!)

As an exercise to test and broaden my knowledge of OOP, I...