Last night, in the sauna, I realized the code fragment in the last post is dead wrong, a good demonstration of how far I am from grasping ZCA.
My initial feeling of embarrassment passed, and was replaced by interest in how and why I am so wrong in my understanding. I need to overcome my resistance to exposing ignorance if I'm going to hang in this blogosphere place.
I instantiated an interface. Discussions of interfaces tend to start with the fact that you do not instantiate interfaces. Why has that never sunk in?
My understanding of object oriented programming has class definition at the top, an object is created from the class, the object does things. Since ZCA explanations start with Interfaces, in my mind I associated them with classes.
It's as though there's a tree with many bird nests in it. There's a nest for classes, methods, attributes, functions etc. When *reading* about Interfaces they just roost on any available branch. *Writing* about them requires putting them in a nest. Since there isn't a nest for them, they ended up with classes.
I kind of like that analogy. I realize it's pretty basic stuff, we have notions which we try to understand the world with.
I like it because of the similarity to one of my favorite analogies. In a class on Native American languages I read a description of a Native American understanding of time. The writer described being in a bubble of the *manifest*, floating in a sea of the *unmanifest*. The bubble is generally considered "here and now". There are ways to access that which is outside the bubble. This in stark contrast to the European concept of time consisting of a journey along a line, with the future ahead, the past behind.
I am finding it useful to consider my little mind a bubble of things known floating in a sea of things unknown. This lines up nicely with ADD issues. I know with great certainty that my learning is not linear, but consists of struggling to pull items into my bubble.
When I come to understand something it has a nest in the tree. In the case of Interfaces, I need to understand that the existing nests don't meet the needs at hand.
I've heard that people learn object oriented programming more quickly if they haven't already learned procedural. I wonder if it would be easier to learn component based programming without a background in objects.