My homework for software architechture, in Java