Что было сложным:
Про scanner забыла. Строчка @SuppressWarnings("resource") непонятна И в фабричном методе еще разобраться надо, от ветвления избавиться. У них криэйтор отдельным классом.
Комментарии:
Создаем абстрактный класс или интерфейс Shape. Разницу не помню. И наследуем наши фигурки от него. public abstract class Shape { public void draw(){}; } Далее как на скриншоте.
Научился: Узнал о базовых шаблонах, которые ранее использовал, но не знал что это шаблоны. Изучил ссылки, прочитал статью на хабре, очень интересный курс предвижу =)