5.6.3 Comparison to Object-Oriented Languages



next up previous contents
Next: 5.6.4 Architecture of VOOPS Up: 5.6 VOOPS Previous: 5.6.2 Drawbacks

5.6.3 Comparison to Object-Oriented Languages

Although all object-oriented languages implement the basic programming paradigms stated in Section 5.6.1, they differ in extensions of and the semantics implied by those paradigms. VOOPS does not implement any extensions to the basic programming paradigms, since it was designed to be simple to use, easy to comprehend and compact in its design.

For example, it is not possible in VOOPS to declare some members of a class as private to this class, meaning that they can not be inherited by other classes derived from this class. C++ provides the private keyword to declare private members in class definitions, allowing control of the scope of member declarations.

Concerning method definitions, methods defined on a VOOPS class always override a parent method having the same name, if such a method exists in the parent class. In C++ methods which can be overridden must be explicitely prefixed with a virtual keyword which provides tight control of method overriding in class definitions.

Multiple inheritance means that a class may have more than one parent. VOOPS does not provide this feature, since it is complicated to implement within the simple concept employed by VOOPS. Mostly the need for multiple inheritance does not arise, when the class hierarchy is designed carefully. However, most modern object-oriented languages like Eiffel [Meye92] and recent C++ versions provide multiple inheritance.

In contrast to Eiffel and Smalltalk [Pins88][Gold83], VOOPS does not define a single root class, from which all other classes would automatically inherit. A single root class would allow the definition of generic methods applicable to all other classes. VOOPS rather considers each class which does not include a reference to a parent class as a root class.



Martin Stiftinger
Tue Nov 29 19:41:50 MET 1994