Решить контест Java
Объектно ориентированое программирование, наследование, абстракции, интерфейсы, логирование