А насчет оптимизации инициализации чего либо через разные конструкторы... Задать булевскую переменную, которая при вызове через один конструктор будет равна True, а через другой False, и при помощи if в зависимости от значения этой переменной будет подгружаться нужная/ненужная часть кода.
Научился: 1) разбивать код программы на разные классы для упрощения кода. 2) использовать рефакторинг Трудности: какие методы и свойства вынести из кода формы в класс Graph и как передавать данные между ними. хороший урок)
Научился: Создавать классы и структурировать программу Трудности: Определить, какие данные и методы поместить в класс и как реализовывать их вызовы из кода основной программы Хотелось бы немного больше последовательности в изложении материала. (Это по поводу постоянных исправлений ошибок)