Как выбрать структуру 2d программы?
Я создал класс объектов, (например теплообменник) он имеет свойства на основании которых производится расчёт (например КПД) . И свойства на основании которых происходит отрисовака ( например положение при отображение (коардинаты x, y)) не уверен, что я сделал корректно. 
Создаете абстрактный класс "элемент расчета" с общим для всех элементов интерфейсом. Создаете базовый класс "графический элемент" с общим интерфейсом рисования.
Создаете класс "элемент рисования", свойства которого - координаты и ссылки на элемент расчета и соответствующий ему графический элемент.
Отрисовщик имеет массив элементов рисования, обходит их и один за другим отрисовывает, вызывая нужные функции графического элемента, который может обратиться за параметрами к элементу расчета. Важно, что элемент расчета ничего не знает ни о каком рисовании, а графический элемент знает не больше, чем нужно для отрисовки именно его картинки.
Все элементы расчета и рисования представлены в виде классов-наследников тех абстрактных классов и обрабатываются единообразно - отрисовщик вообще не видит между ними различий, они убраны в класс графического элемента.
Примерно так...
Попробуйте описать из каких объектов состоит ваша программа.
Нарисуйте хоть какую-то схему из ваших классов (я использовал draw.io):
Правильнее использовать UML, но это не обязательно.
Подумайте о пользовательских сценариях:
Как вы будете получать входные данные?
Есть ли иерархия элементов (элементы из других элементов)?
После этого можно будет уже как-то смотреть и улучшать какие-то части.