GraphReport is an Observer that tracks baseball hit totals and produces a bar-chart-style game report. It subscribes to BaseballReporter during construction, then receives each event through update(). section 12.1.3
Observer-based game reporting
A BaseballReporter distributes generated events to every subscribed Observer. GraphReport processes each hit independently, while LogReport and TableReport produce different views from the same event stream. The tester creates all three reports before calling distribute_content(). section 12.1.3
