I don't see a significant difference between the OOP of BlitzMax and the OOP of properly written Blitz3D code:
That's because the Blitz3D entity system is an object oriented design. The main difference is that in BlitzMAX you have direct access to the objects structure, and can extend it at will, and that you can let the compiler do work for you, that could otherwise mean rather intricate If//EndIf or Select/Case structures. These can now be simplified by extending a base or super Class/Type to do what you want, meaning you only have to change the code in one place (the class itself), rather than in two (the class itself, and the complex select statement).For instance imagine you where making a FPS game and had 7 different types of enemy. In Blitz3D you would have to go:
Select myEnemy\Type case "Soldier" do soldier stuff case "Marine" do Marine stuff case "Sentry" do Sentry stuff case "Tank" do Tank stuff case "Helicopter" do Helicopter stuff case "Jet Fighter" do Jet Fighter stuff case "APC" do APC stuff case "Stealth Bomber" do Stealth Bomber stuff End Selectand each time you wanted to add a new type, you would have to remember to add to this statement. In an OO language you can simply go.
myEnemy.doStuff()And the compiler will figure out which "doStuff" method it has to invoke for you.