"First your calculator example is poor because those are all separate objects that work together. they are not objects built on one another.... they are not OOP"
Okay, then let's use an example that works with OOP as you see it.
I have a car. The car has a generic engine, tires, and chassis. Those aren't objects however, those are the car's methods.
If I want I can make the car into a volvo. To do that though, I need to replace the engine, tires and chassis. The car still knows how to use these things, but they're different on the volvo and the generic car.
I can go one step further, and upgrade to a Volvo SE. That comes with additional features like heated seats and power windows that the car doesn't know how to use or need to know how to use. But I can access them if I have the Volvo SE.
So now let's go back to the sprite system. Let's say my sprite is a junker. It has bald tires, and shimmies at 30mph. I want to replace it's draw "engine" to make it go fast.
Would you say it would be wise for me to just strap a jet engine on the back of that puppy to take over for the failing engine? Probably not. For one, those tires are bald. And for another, I don't know if the car's body would take the stress. It might just tear itself apart. Also, the weight of the car, and how it behaves at high speed are important to know or I could just flip over, or be unable to steer.
Once you start overriding methods in a class, you need to know how that class, and all the classes that it is desired from, work, in great detail, or you're just asking for a darwin award.
And that just doesn't seem like a safe and reliable way to program to me.
Okay, then let's use an example that works with OOP as you see it.
I have a car. The car has a generic engine, tires, and chassis. Those aren't objects however, those are the car's methods.
If I want I can make the car into a volvo. To do that though, I need to replace the engine, tires and chassis. The car still knows how to use these things, but they're different on the volvo and the generic car.
I can go one step further, and upgrade to a Volvo SE. That comes with additional features like heated seats and power windows that the car doesn't know how to use or need to know how to use. But I can access them if I have the Volvo SE.
So now let's go back to the sprite system. Let's say my sprite is a junker. It has bald tires, and shimmies at 30mph. I want to replace it's draw "engine" to make it go fast.
Would you say it would be wise for me to just strap a jet engine on the back of that puppy to take over for the failing engine? Probably not. For one, those tires are bald. And for another, I don't know if the car's body would take the stress. It might just tear itself apart. Also, the weight of the car, and how it behaves at high speed are important to know or I could just flip over, or be unable to steer.
Once you start overriding methods in a class, you need to know how that class, and all the classes that it is desired from, work, in great detail, or you're just asking for a darwin award.
And that just doesn't seem like a safe and reliable way to program to me.