C
Colin Paul Gloster
Dear all,
In Java there are a few ways to cope with what is called the inheritance
anomaly problem (in the context of Matsuoka, S. and Yonezawa, A.,
"Analysis of inheritance anomaly in object-oriented concurrent programming
languages" in "Research Directions in Concurrent OO Programming" MIT
Press, 1993), such as:
* use an object-based design instead of an object-orientated design (in
which case, why not use Ada 83 instead of Java?);
* use an object-orientated design without multithreading (in which case,
why not use C++ instead of Java?);
* use Java variants (e.g. Jeeg; JR; RAVENSCAR (Reliable Ada Verifiable
Executive Needed for Scheduling Critical Applications in
Real-time) Java);
* aspect orientated programming is the main defense mentioned in Giuseppe
Milicia and Vladimiro Sassone, "The inheritance anomaly: ten years
after", "Proceedings of the 2004 ACM symposium on Applied computing";
* be sensible in your class design / be prepared to refactor (so much for
reuse without copying and pasting!);
* don't give it much thought and hope for the best.
Are there any other approaches which are applicable to Java?
Which approach(es) should be used?, and why? Which approaches are actually
idiomatic?
Regards,
Colin Paul Gloster
--
In Java there are a few ways to cope with what is called the inheritance
anomaly problem (in the context of Matsuoka, S. and Yonezawa, A.,
"Analysis of inheritance anomaly in object-oriented concurrent programming
languages" in "Research Directions in Concurrent OO Programming" MIT
Press, 1993), such as:
* use an object-based design instead of an object-orientated design (in
which case, why not use Ada 83 instead of Java?);
* use an object-orientated design without multithreading (in which case,
why not use C++ instead of Java?);
* use Java variants (e.g. Jeeg; JR; RAVENSCAR (Reliable Ada Verifiable
Executive Needed for Scheduling Critical Applications in
Real-time) Java);
* aspect orientated programming is the main defense mentioned in Giuseppe
Milicia and Vladimiro Sassone, "The inheritance anomaly: ten years
after", "Proceedings of the 2004 ACM symposium on Applied computing";
* be sensible in your class design / be prepared to refactor (so much for
reuse without copying and pasting!);
* don't give it much thought and hope for the best.
Are there any other approaches which are applicable to Java?
Which approach(es) should be used?, and why? Which approaches are actually
idiomatic?
Regards,
Colin Paul Gloster
--