Multiple inheritance is still a controversial feature in traditional object-oriented languages, as evidenced by its omission from such notable languages as Modula-3, Objective C and Java . Nonetheless, users of such languages often complain about having to work around the absence of multiple inheritance. Automating delegation, in combination with a multiple subtyping mechanism, provides many of the same benefits as multiple inheritance, yet sidesteps most of the associated problems. This simple feature could satisfy both the designers and the users of class based object oriented languages. In this paper, we discuss why automated delegation is desirable. We also present Jamie, a freeware preprocessor-based extension to Java that offers such an alternative.
Cited By
- Wernli E, Nierstrasz O, Teruel C and Ducasse S Delegation proxies Proceedings of the 13th international conference on Modularity, (1-12)
- Bettini L, Capecchi S and Damiani F (2013). On flexible dynamic trait replacement for Java-like languages, Science of Computer Programming, 78:7, (907-932), Online publication date: 1-Jul-2013.
- Schaefer I, Rabiser R, Clarke D, Bettini L, Benavides D, Botterweck G, Pathak A, Trujillo S and Villela K (2012). Software diversity, International Journal on Software Tools for Technology Transfer (STTT), 14:5, (477-495), Online publication date: 1-Oct-2012.
- Bettini L, Bono V and Venneri B (2011). Delegation by object composition, Science of Computer Programming, 76:11, (992-1014), Online publication date: 1-Nov-2011.
- Ducournau R and Privat J (2011). Metamodeling semantics of multiple inheritance, Science of Computer Programming, 76:7, (555-586), Online publication date: 1-Jul-2011.
- Bettini L and Venneri B Object reuse and behavior adaptation in Java-like languages Proceedings of the 9th International Conference on Principles and Practice of Programming in Java, (111-120)
- Bettini L and Bono V Type safe dynamic object delegation in class-based languages Proceedings of the 6th international symposium on Principles and practice of programming in Java, (171-180)
- Bettini L, Capecchi S and Giachino E Featherweight wrap Java Proceedings of the 2007 ACM symposium on Applied computing, (1094-1100)
- Wasserrab D, Nipkow T, Snelting G and Tip F An operational semantics and type safety prooffor multiple inheritance in C++ Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, (345-362)
- Wasserrab D, Nipkow T, Snelting G and Tip F (2006). An operational semantics and type safety prooffor multiple inheritance in C++, ACM SIGPLAN Notices, 41:10, (345-362), Online publication date: 16-Oct-2006.
- Kovse J and Mahnke W Introducing custom language extensions to SQL Proceedings of the 15th international conference on Advanced information systems engineering, (193-208)
Recommendations
Encapsulation and inheritance in object-oriented programming languages
OOPSLA '86: Conference proceedings on Object-oriented programming systems, languages and applicationsObject-oriented programming is a practical and useful programming methodology that encourages modular design and software reuse. Most object-oriented programming languages support data abstraction by preventing an object from being manipulated except ...
Automating Delegation in Class-Based Languages
TOOLS '00: Proceedings of the Technology of Object-Oriented Languages and Systems (TOOLS 34'00)Some designers of class-based object oriented languages choose not to support multiple inheritances. As a result, programmers often resort to ad hoc workarounds. The most common of these workarounds is delegation. Even delegation is tedious and error ...
An Alternative Programming Paradigm for Blocks-Based Languages
Papers of the 30th Annual CCSC Midwestern ConferenceBlocks-based languages are popular as an introductory programming language due to their ability to reduce the frustration of syntax errors within an ecosystem that supports recall over typing for core programming constructs. Although there are many ...