Nothing Special   »   [go: up one dir, main page]

skip to main content
10.5555/645417.652070guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Mixin-Based Programming in C++

Published: 09 October 2000 Publication History

Abstract

Combinations of C++ features, like inheritance, templates, and class nesting, allow for the expression of powerful component patterns. In particular, research has demonstrated that, using C++ mixin classes, one can express layered component-based designs concisely with efficient implementations. In this paper, we discuss pragmatic issues related to component-based programming using C++ mixins. We explain surprising interactions of C++ features and policies that sometimes complicate mixin implementations, while other times enable additional functionality without extra effort.

References

[1]
ANSI / ISO Standard: Programming Languages--C++, ISO/IEC 14882, 1998.
[2]
J. Barton and L.R. Nackman, Scientific and Engineering C++: An Introduction with Advanced Techniques and Applications, Addison-Wesley, 1994.
[3]
D. Batory, V. Singhal, M. Sirkin, and J. Thomas, "Scalable Software Libraries", ACM SIGSOFT 1993.
[4]
D. Batory, R. Cardone, and Y. Smaragdakis, "Object-Oriented Frameworks and Product-Lines", 1st Software Product-Line Conference, Denver, Colorado, August 1999.
[5]
K. Beck and W. Cunningham, "A Laboratory for Teaching Object-Oriented Thinking", OOPSLA 1989, 1-6.
[6]
G. Bracha and W. Cook, "Mixin-Based Inheritance", ECOOP/OOPSLA 90, 303-311.
[7]
G. Bracha, M. Odersky, D. Stoutamire and P. Wadler, "Making the future safe for the past: Adding Genericity to the Java Programming Language", OOPSLA 98.
[8]
P. Canning, W. Cook, W. Hill, W. Olthoff, and J. C. Mitchell, "F-bounded Polymorphism for Object-Oriented Programming", in Proc. Conf. on Functional Programming Languages and Computer Architecture, 1989, 273-280.
[9]
J. Coplien, "Curiously Recurring Template Patterns", C++ Report, 7(2):24-27, Feb. 1995.
[10]
K. Czarnecki and U. Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000.
[11]
K. Czarnecki and U. Eisenecker, "Synthesizing Objects", ECOOP 1999, 18-42.
[12]
U. Eisenecker, "Generative Programming in C++", in Proc. Joint Modular Languages Conference (JMLC'97), LNCS 1204, Springer, 1997, 351-365.
[13]
M.A. Ellis and B. Stroustrup, The Annotated C++ Reference Manual, Addison-Wesley, 1990.
[14]
E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
[15]
R. Helm, I. Holland, and D. Gangopadhyay, "Contracts: Specifying Behavioral Compositions in Object-Oriented Systems". OOPSLA 1990, 169-180.
[16]
I. Holland, "Specifying Reusable Components Using Contracts", ECOOP 1992, 287-308.
[17]
R. Johnson and B. Foote, "Designing Reusable Classes", J. of Object-Oriented Programming, 1(2): June/July 1988, 22-35.
[18]
G. Kiczales, J. des Rivieres, and D. G. Bobrow, The Art of the Metaobject Protocol. MIT Press, 1991.
[19]
O.L. Madsen, B. Møller-Pedersen, and K. Nygaard, Object-Oriented Programming in the BETA Programming Language. Addison-Wesley, 1993.
[20]
D.A. Moon, "Object-Oriented Programming with Flavors", OOPSLA 1986.
[21]
T. Reenskaug, E. Anderson, A. Berre, A. Hurlen, A. Landmark, O. Lehne, E. Nordhagen, E. Ness-Ulseth, G. Oftedal, A. Skaar, and P. Stenslet, "OORASS: Seamless Support for the Creation and Maintenance of Object-Oriented Systems", J. of Object-Oriented Programming, 5(6): October 1992, 27-41.
[22]
Silicon Graphics Computer Systems Inc., STL Programmer's Guide. See: http://www.sgi.com/Technology/STL/.
[23]
V. Singhal, A Programming Language for Writing Domain-Specific Software System Generators, Ph.D. Dissertation, Dep. of Computer Sciences, University of Texas at Austin, August 1996.
[24]
Y. Smaragdakis and D. Batory, "Implementing Reusable Object-Oriented Components". In the 5th Int. Conf. on Software Reuse (ICSR 98).
[25]
Y. Smaragdakis and D. Batory, "Implementing Layered Designs with Mixin Layers". In ECOOP 98.
[26]
Y. Smaragdakis, "Implementing Large-Scale Object-Oriented Components", Ph.D. Dissertation, Department of Computer Sciences, University of Texas at Austin, December 1999.
[27]
A. Stepanov and M. Lee, "The Standard Template Library". Incorporated in ANSI/ISO Committee C++ Standard.
[28]
B. Stroustrup, The C++ Programming Language, 3rd Ed., Addison-Wesley, 1997.
[29]
M. VanHilst and D. Notkin, "Using C++ Templates to Implement Role-Based Designs". JSSST International Symposium on Object Technologies for Advanced Software, Springer-Verlag, 1996, 22-37.
[30]
M. VanHilst and D. Notkin, "Using Role Components to Implement Collaboration-Based Designs". OOPSLA 1996.
[31]
M. VanHilst and D. Notkin, "Decoupling Change From Design", SIGSOFT 96.
[32]
P. Wadler, M. Odersky and Y. Smaragdakis, "Do Parametric Types Beat Virtual Types?", unpublished manuscript, posted in October 1998 in the Java Genericity mailing list ([email protected]).
[33]
K. Weihe, "A Software Engineering Perspective on Algorithmics", available at http://www.informatik.uni-konstanz.de/Preprints/.

Cited By

View all

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Guide Proceedings
GCSE '00: Proceedings of the Second International Symposium on Generative and Component-Based Software Engineering-Revised Papers
October 2000
202 pages
ISBN:3540425780

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 09 October 2000

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 16 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2016)Matriona: class nesting with parameterization in Squeak/SmalltalkProceedings of the 15th International Conference on Modularity10.1145/2889443.2889457(118-129)Online publication date: 14-Mar-2016
  • (2013)Reified type parameters using Java annotationsACM SIGPLAN Notices10.1145/2637365.251722349:3(61-64)Online publication date: 27-Oct-2013
  • (2013)Template constructors for reusable object initializationACM SIGPLAN Notices10.1145/2637365.251721249:3(43-52)Online publication date: 27-Oct-2013
  • (2013)Reified type parameters using Java annotationsProceedings of the 12th international conference on Generative programming: concepts & experiences10.1145/2517208.2517223(61-64)Online publication date: 27-Oct-2013
  • (2013)Template constructors for reusable object initializationProceedings of the 12th international conference on Generative programming: concepts & experiences10.1145/2517208.2517212(43-52)Online publication date: 27-Oct-2013
  • (2010)BehaveRTProceedings of the Third international conference on Motion in games10.5555/1948395.1948422(194-205)Online publication date: 14-Nov-2010
  • (2007)Variadic templates for C++Proceedings of the 2007 ACM symposium on Applied computing10.1145/1244002.1244243(1101-1108)Online publication date: 11-Mar-2007
  • (2006)Debugging C++ template metaprogramsProceedings of the 5th international conference on Generative programming and component engineering10.1145/1173706.1173746(255-264)Online publication date: 22-Oct-2006
  • (2006)TraitsACM Transactions on Programming Languages and Systems10.1145/1119479.111948328:2(331-388)Online publication date: 1-Mar-2006
  • (2005)A feature composition problem and a solution based on c++ template metaprogrammingProceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering10.1007/11877028_21(459-470)Online publication date: 4-Jul-2005
  • Show More Cited By

View Options

View options

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media