Дополнена диаграмма классов.
Прилизан код.