Everybody has been doing some thinking about objects all the times. What are they really? How they influence programs !!! What are they in reality. It makes sense for all to dream about objects coz I suppose much of complex and adhoc programming in reality have more of objected orientation. So all are equally thrilled in visualizing objects as we get thrilled in reading Conan Doyle’s Sherlock Homes. Aren’t we?
What Are they :-
Many of us know what is the technical explanation of objects. Before I say, many would be ready with answers. Yes, Objects are the smallest entity where we try to access data from a programming language. To put in other words I can say objects are the simplest way how we extract information by joining the underlying state of the information with the code that manipulates that information. It is a combination of data and code and this is true in some way.
Languages which are objects oriented like C++, Java etc finds enormous usage in real world computing. This is because they have many definite advantages as enumerated in OOPS. They are Scaleable, Portable and Encapsulated for security.
It is very rare that an object really is a combination of state and code; far more common is that an object is a combination of state and a class descriptor, with the class descriptor (often with some other form of information) pointing off to some code. There are non-class-based object-oriented languages like Self that don’t have a notion of sharing code among a group of objects, but they are in the minority.
How are they Handled :-
Once the notion of a class has been introduced, there are notions of the relationship between classes, often stated in terms of inheritance and often (but not always) associated with a type system. Different languages allow different kinds of associations to be built between classes and types. All these different ways of associating classes have an impact on the way in which the state and the code that we think of as making up the object are actually related. And then there are things like the Java language notion of a classloader, which adds another level of indirection between the state of an object and the actual code that is associated with the object.
The only one difference what I feel to highlight here, is that an object in one language is generally very different from an object in a different language, because of all of the various ways in which different decisions made in the language design are reflected in the way the objects in that language are put together.
To Support my wordings above, let see a comparative study in object perpective between C++ and so called Java. Even though there are lots of surface similarities. But C++ allows multiple class inheritance, while Java does not(its called multi level here). C++ has operator overloading, the Java language does not. C++ objects have destructors, Java objects have finalizers that lead to garbage collect your unused objects. This is where the class loaders for a particular programming language takes its course by defining entity boundary for a particular object of a language.
Both these languages have some curious functionalities in common between them say for instance Abstraction and Polymorphism. But even though they have the conceptual aspects same, one cannot translate a functionality between the two languages rather has to write a whole new program. Thus, the bottom line of this is, objects is bounded entity within a language. And all the objects oriented languages are independent to the boundary which they are designed.
Distributing Computing :-
Objects in Java are well used in distributed computing. Java objects can be serialized to convert it to Byte stream and can travel across networks. This forms the basis path for RMI(Remote Method Invocation) and EJBs (Enterprise Java Beans).Objects can be also be stored as persistent. Several methodologies(Sqlj, JDBC,JDO etc) allows us to do so. This way of storage ensures as readymade back up in times of urgency where there is a data server crash etc.
Need of The Hour :-
Having spent some time in the article, it makes sense for us to have to think what we exactly want from objects. We do a decision in choosing a programming language on two things, performance and portability. In the days to come if any language has the ability to instantiate an object which is independent of it, then certainly it will have much visibility and usage from the market. I think that will be the next level of development proceeding in designing the objects for a language. If it is discovered, certainly developers like us are blessed !!!!