ООП - это не какое-то принципиально другое программирование, это просто способ собрать данные и обрабатывающие их функции в одно место и убрать их из всех остальных мест, которых эта внутренняя кухня не касается.
У вас довольно путанное объяснение, я его понял так: у вас объект - парсер потока читает следующую порцию данных и обрабатывает ее (создавая новые объекты или модифицируя существующие), после чего нужно обновить уже существующие объекты и выдать информацию о них в "график". Соответственно, у парсера должен быть метод, читающий вход; член - вектор созданных объектов, имеющих общий интерфейс обхода; и метод обхода вектора, вызываемый после каждого чтения.
"График" может быть объектом, ссылка на который передается в каждый объект при создании, либо рисоваться парсером же по полученной при обходе вектора информации... ну, это вам виднее.
В результате те же ваши десять функций просто будут распиханы туда, где они непосредственно нужны, и данные будут доступны именно им, а не всему коду сразу. Это и дисциплинирует, и позволяет делать более гибкие, поддерживаемые решения. Впрочем, это проявляется не на коде из десяти функций, конечно.