shell task commit Kuzmichev Dmitry 394

 shell task commit. Please check email, i've sent you the document which explains why i didn't make it before deadline
Конечно, это не совсем объектный подход использования классов:) 

1. Конструктор желательно оставлять легковесным и не реализовывать в нем никаких действий, кроме инициализации. Потому что, его, как минимум, не вынесешь в интерфейс, не переопределишь (override). В текущей реализации ты не сможешь унаследовать Cat и избежать в нём вызова этого родительского конструктора. 
2. Если выделил по классу на команду, то можно, например, выделить интерфейс с каким-то общим методом apply(args), и собрать все команды в HashMap с командой в качестве ключа, чтобы потом не перебирать if'ами.