I found the OOP chapter to be very questionable and against industry practice. Even for simple software you don't want to clobber rendering and collision detection together into the same object. The algorithms also naturally become O(n^2) and it's not possible to fix that without major rewrites, undoing the OOP. OOP is notoriously bad for CD. I'd suggest a simple data oriented design approach here, e.g. pushing collisions into a new container instead of setting flags in some object that the rendering code then uses.