final OOP Principles part one homework