Abstract
Mixin layers are a technique for implementing layered object-oriented designs (e.g., collaboration-based designs). Mixin layers are similar to abstract subclasses (mixin classes) but scaled to a multiple-class granularity. We describe mixin layers from a programming language viewpoint, discuss checking the consistency of a mixin layer composition, and analyze the language support issues involved.
We gratefully acknowledge the sponsorship of Microsoft Research, the Defense Advanced Research Projects Agency (Cooperative Agreement F30602-96-2-0226), and the University of Texas at Austin Applied Research Laboratories.
Preview
Unable to display preview. Download preview PDF.
References
O. Agesen, S. Freund, and J. Mitchell, “Adding Type Parameterization to the Java Language”, OOPSLA 1997, 49–65.
D. Batory and S. O'Malley, “The Design and Implementation of Hierarchical Software Systems with Reusable Components”, ACM TOSEM, October 1992.
D. Batory, V. Singhal, M. Sirkin, and J. Thomas, “Scalable Software Libraries”, ACM SIGSOFT 1993.
D. Batory and J. Thomas, “P2: A Lightweight DBMS Generator”, Journal of Intelligent Information Systems, 9, 107–123 (1997).
D. Batory and B.J. Geraci, “Component Validation and Subjectivity in GenVoca Generators”, IEEE Transactions on Software Engineering, February 1997, 67–82.
D. Batory, B. Lofaso, and Y. Smaragdakis, “JTS: Tools for Implementing Domain-Specific Languages”, to appear at the 5th International Conference on Software Reuse (ICSR '98). See ftp:ℕp.cs.utexas.edu/pub/predator/jts.ps.
K. Beck and W. Cunningham, “A Laboratory for Teaching Object-Oriented Thinking”, OOPSLA 1989, 1–6.
G. Bracha and W. Cook, “Mixin-Based Inheritance”, ECOOP/OOPSLA 90, 303–311.
G. Bracha and D. Griswold, “Extending Smalltalk with Mixins”, Workshop on Extending Smalltalk at OOPSLA 96. See http://java.sun.com/people/gbracha/mwp.html.
L. Cardelli and P. Wegner, On Understanding Types, Data Abstraction, and Polymorphism, Computing Surveys, 17(4): Dec 1985, 471–522.
M. Flatt, S. Krishnamurthi, M. Felleisen, “Classes and Mixins”. ACM Symposium on Principles of Programming Languages, 1998 (PoPL 98).
E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
W. Harrison and H. Ossher, “Subject-Oriented Programming (A Critique of Pure Objects)”. OOPSLA 1993, 411–428.
R. Helm, I. Holland, and D. Gangopadhyay, “Contracts: Specifying Behavioral Compositions in Object-Oriented Systems”. OOPSLA 1990, 169–180.
I. Holland, “Specifying Reusable Components Using Contracts”, ECOOP 92, 287–308.
JavaSoft, “Inner Classes Specification”, from http://java.sun.com/products/jdk/1.1/docs/.
R. Johnson and B. Foote, “Designing Reusable Classes”, Journal of Object-Oriented Programming, 1(2): June/July 1988, 22–35.
G. Kiczales, J. des Rivieres, and D. G. Bobrow, The Art of the Metaobject Protocol. MIT Press, 1991.
G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J. Loingtier, and J. Irwin, “Aspect-Oriented Programming”, ECOOP 97, 220–242.
O. L. Madsen and B. Møller-Pedersen, “Virtual classes: A powerful mechanism in objectoriented programming”, OOPSLA 1989, 397–406.
O. L. Madsen, B. Møller-Pedersen, and K. Nygaard, Object-Oriented Programming in the BETA Programming Language. Addison-Wesley, 1993.
M. Mezini, “Dynamic Object Evolution without Name Collisions”, ECOOP 97, 190–219.
R. Milner, “A Theory of Type Polymorphism in Programming”, Journal of Computer and System Sciences, 17:Dec 1978, 348–375.
T. Montlick, “Implementing Mixins in Smalltalk”, The Smalltalk Report, July 1996.
A. Myers, J. Bank and B. Liskov, “Parameterized Types for Java”, ACM Symposium on Principles of Programming Languages, 1997 (PoPL 97).
M. Odersky and P. Wadler, “Pizza into Java: Translating theory into practice”, ACM Symposium on Principles of Programming Languages, 1997 (PoPL 97).
C. Prehofer, “Feature-Oriented Programming: A Fresh Look at Objects”, ECOOP 97, 419–443.
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”, Journal of Object-Oriented Programming, 5(6): October 1992, 27–41.
J. Rumbaugh, “Getting Started: Using use cases to capture requirements”, Journal of Object-Oriented Programming, 7(5): Sep 1994, 8–23.
L. Seiter, J. Palsberg, and K. Lieberherr, “Evolution of Object Behavior using Context Relations”, ACM SIGSOFT 1996.
V. Singhal, “A Programming Language for Writing Domain-Specific Software System Generators”, Ph.D. Dissertation, Department of Computer Sciences, University of Texas at Austin, August 1996.
Y. Smaragdakis and D. Batory, “DiSTiL: a Transformation Library for Data Structures”, USENIX Conference on Domain-Specific Languages (DSL 97).
Y. Smaragdakis and D. Batory, “Implementing Reusable Object-Oriented Components”, to appear at the 5th International Conference on Software Reuse (ICSR '98). See ftp://ftp.cs.utexas.edu/pub/predator/icsrtemp.ps.
P. Steyaert, W. Codenie, T. D'Hondt, K. De Hondt, C. Lucas, and M. Van Limberghen, “Nested Mixin-Methods in Agora”, ECOOP 93, 197–219.
B. Stroustrup, The C++ Programming Language, 3rd Ed., Addison-Wesley, 1997.
K. Thorup, “Genericity in Java with Virtual Types”, ECOOP 97, 444–471.
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.
M. VanHilst and D. Notkin, “Using Role Components to Implement Collaboration-Based Designs”. OOPSLA 1996.
M. VanHilst and D. Notkin, “Decoupling Change From Design”, ACM SIGSOFT 1996.
M. VanHilst, “Role-Oriented Programming for Software Evolution”, Ph.D. Dissertation, University of Washington, Computer Science and Engineering, 1997.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Smaragdakis, Y., Batory, D. (1998). Implementing layered designs with mixin layers. In: Jul, E. (eds) ECOOP’98 — Object-Oriented Programming. ECOOP 1998. Lecture Notes in Computer Science, vol 1445. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0054107
Download citation
DOI: https://doi.org/10.1007/BFb0054107
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64737-9
Online ISBN: 978-3-540-69064-1
eBook Packages: Springer Book Archive