Tuesday, November 8, 2011

Object Oriented Computing -- So What?

A lot has been said and written about Object Oriented computing in the last several years. So what new would I have to write about it? I think there is still something new and probably, unwritten.

For one, I believe that object oriented computing is something that should be of interest to people outside computing. Non technical people need to be educated about it -- and I will say why. Secondly, that opens up a vast new field of Information Technology that directly meets many needs of the world.

But first, what is object oriented computing (or programming). Any software essentially involves modelling real world constructs and their relationships in a language that computers can process. Earlier the software was developed as a series of instructions (procedural). But now with OOP, software is a collection of objects and those objects then interact with each other. A software object often maps to a noun in our day to day language. For example, a classroom scheduling software may have objects like students, teachers, classrooms, subjects, etc. The behaviour of each object is described under its own heading. For example, the object classroom might store data about number of seats in it, student object will have the name and class (grade) of the student and so on. To understand this better, in a procedural way of programming, the names of students might be stored in a list (table) and the software would fetch this data one by one for each student according to the procedure described in the program.

I know this description may not be complete or enough to really explain what is OOP, but I can't go more into that here without explaining how software is written. Try googling for more information.

The main takeaway from the above is that nouns can be mapped to software objects. Software engineering provides for standardised ways for documenting and storing the state and behaviour of the objects.

Now, think about this: just as a dictionary defines all the nouns (and other language artefacts) of a language, what if we could have a dictionary of software objects that map to all or to most of the nouns in the language, say English? I will answer this and more in my subsequent posts.