Rat’s ass indeed. OOP never made any sense to me.
I mostly wrote code in C and a little assembly. All very straightforward and logical, especially to a hardware guy like me who had some software jobs dumped in his lap.
I tried OOP, my brain locked up.
I was told by my first Java instructor when I aks for help that I must be some sort of coder. I was stuned. I aks whaut?
The teacher says not only that but I prolly be a pretty good coder. ‘Ceptin’ for one thing: my code was all sequential and totatlly wuthless because of that. I needed to be learnin’ object orientated stuff.
Now I know everything is in a class of one thing or ‘nother. Everyhthing is ethereal until instantiated with specific values to differentiate one Obama from ‘nother.
What be cool ‘bout OOP is you can just shovel the compiler your argument list and it’ll finger out which specific Obama procedure to use based on what the values of the particular arguments you shovel at the procedure.
Overloading is also very cool, in that I don’t have to re-invent the wheel every time I want to make a different kind of coffee. I just feed the “make coffee” procedure with Kopi Luwak beans and inherit the “French Press” sub-routine, but vary the process subtly; it all works out magically with so little effort that its amazing.
I could use the same code and brew coffee using stray-cat poop without much effort and it’d still come out good.
I’m thinkin’ I’m probably losing some of y’all here, but when you take into account not just inheritance, but simultaneously overloading classes, procedure (or methods), but actual operators of arithmetic, things get pretty interesting quickly.