class idFireable{ void doFired(); } class idProjectile{ doFired(){ // the projectile is fired in the aimed direction } } class idDecorator{ fireable* idFireable; idDecorator(idFireable fireable){ this.fireable = fireable; } override doFired(){ fireable.doFired(); } } class idGuided{ object* guidedObjectRepresentation = null; idGuided(idFireabloe fireable){ super(fireable); } override doFired(){ doAdditionalFired(); super.doFired(); } void doAdditionalFired(){ // Add enemy locking and guiding } }