Keith's profileKeith's "do over"BlogListsNetworkMore Tools Help

Blog


    March 20

    "object-oriented" WHAT?@#%???

    This week’s discussion topic ("try to understand what 'object-oriented' really means and summarize it in your own words") in my Object-Oriented Programming Concepts college course is super-relevant for me. For a long time, I’ve had trouble mentally making the jump from the procedural programming that I learned years ago, to the object-oriented programming that I’m trying to comprehend, practically implement, and ultimately master. I’ve read about and dabbled in so-called “object-oriented programming” environments, never really understanding and internalizing the theory and benefits boasted by its proponents and latent underneath. I kinda, sorta got some of the concepts but largely never got beyond copying somebody else’s code to quickly cobble together a makeshift solution for the latest, hot project. And then this morning, I read an article that makes me wonder if the authors might not have hit on the problem.

     

    In an October 2003 article entitled “On Pseudo Object-Oriented Programming Considered Harmful” (see Communications of the ACM; Oct2003, Vol. 46 Issue 10, p115-117), Cong-cong Xing and Boumediene Belkhouche assert that educators—and I would add authors in the tech press—need to “address ways to differentiate between object-oriented programming and object-oriented programming languages;”. Xing and Belkhouche say that by the implication that a language like, say, Java necessarily equals a good and right representation of object-oriented programming and design philosophy, educators and writers may confuse learners if said language isn’t truly representative of the essentials. And they say that those essentials are “1) An object is a finite set of components. Each component of an object can be either a piece of data or an operation (over the data components by default). Objects, not classes, should be used as the data-modeling mechanism when computations are considered.” and “2) Computations under OOP are carried out by invoking components of objects (again not classes).” Whether they are right or not, I have yet to decide, but I agree with their essential point on the origin of the confusion.

     

    I searched other, less high-brow, sources to respond to the topic like Britannica Online (which had, I thought, an utterly laughable, presumptuous brief paragraph on the subject that did more to confuse than enlighten an average reader), Wikipedia (which had much more depth and usefulness but which granted “Attempts to find a consensus definition or theory behind objects have not proven very successful, and often diverge widely.”), and other, largely unhelpful library database articles. But the bottom line for me this morning is that by divorcing specific “production” languages like Java, C#, or VB.NET from my early learning for the moment while I ponder object-oriented design and programming at its most fundamental level, I am more likely to really get it (my ultimate goal); to internalize, and therefore learn. In this regard, I think the Alice computer programming teaching language will help...and already has. Charles W. Herbert, author of An Introduction to Programming Using Alice, has so far helped me understand object-oriented as relates to information systems design and computer programming more than anyone else. He spoke on page 2 in a language I understand: airplanes. In system design (OOD) and programming (OOP), “object-oriented” simply means that things and information about things (objects and descriptions of those objects, combined, an "object") can be in either the real or virtual worlds and exist in relation to other things (objects). The things themselves, like a Boeing 777, are made up of smaller things, some of which share information to make the whole plane fly, keep the passengers comfortable, and the crew and others informed so that everybody does what they're supposed to do and nobody dies. Further, I understand that these things use the information resident in them, or brought into them by other objects (things) to make calculations and change either themselves or other parts of the system to keep the whole thing going. I’ve not captured all of the essentials of OOD and OOP, but I’m beginning to get a glimpse…for the first time!

    Comments

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Trackbacks

    The trackback URL for this entry is:
    http://keithparish.spaces.live.com/blog/cns!37A2E91D1EFF0214!180.trak
    Weblogs that reference this entry
    • None