EXACTLY. You're on the perfect mental path here.
It's a great ride man, when you first start to grok OO.
Enjoy the moment. I am enjoying it for you as well

Just realized, looking back that some pseudocode would be strong to show what all this actually looked like. Note that this is somewhat PHP like but has nothing to do with PHP ... this is just for illustration.
First, I'll respond to an event of a button push. It looked something like this:
function onButton(sender)
{
// the constructor for gpDefender accepts the start XY and the destination XY as parameters...
gameQueue.add(new gpDefender(sender.x, sender.y, crossHair->x, crossHair->y));
}
Here's what it might have looked like for a jet to see if it should explode...
...
explosions = gameQueue->getAll(gpExplosions);
foreach(explosions as explosion)
{
if (this->insideOf(explosion->boundingRect()))
{
gameQueue->kill(this);
gameQueue->add(new gpExplosion(this->x, this->y));
break;
}
}
You can really make OO code read like a book, if you name things right - much more so than structured programming I find.