Skip to main content

Implementing layered designs with mixin layers

  • Conference paper
  • First Online:
ECOOP’98 — Object-Oriented Programming (ECOOP 1998)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1445))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. O. Agesen, S. Freund, and J. Mitchell, “Adding Type Parameterization to the Java Language”, OOPSLA 1997, 49–65.

    Google Scholar 

  2. D. Batory and S. O'Malley, “The Design and Implementation of Hierarchical Software Systems with Reusable Components”, ACM TOSEM, October 1992.

    Google Scholar 

  3. D. Batory, V. Singhal, M. Sirkin, and J. Thomas, “Scalable Software Libraries”, ACM SIGSOFT 1993.

    Google Scholar 

  4. D. Batory and J. Thomas, “P2: A Lightweight DBMS Generator”, Journal of Intelligent Information Systems, 9, 107–123 (1997).

    Article  Google Scholar 

  5. D. Batory and B.J. Geraci, “Component Validation and Subjectivity in GenVoca Generators”, IEEE Transactions on Software Engineering, February 1997, 67–82.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. K. Beck and W. Cunningham, “A Laboratory for Teaching Object-Oriented Thinking”, OOPSLA 1989, 1–6.

    Google Scholar 

  8. G. Bracha and W. Cook, “Mixin-Based Inheritance”, ECOOP/OOPSLA 90, 303–311.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. L. Cardelli and P. Wegner, On Understanding Types, Data Abstraction, and Polymorphism, Computing Surveys, 17(4): Dec 1985, 471–522.

    Article  Google Scholar 

  11. M. Flatt, S. Krishnamurthi, M. Felleisen, “Classes and Mixins”. ACM Symposium on Principles of Programming Languages, 1998 (PoPL 98).

    Google Scholar 

  12. E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.

    Google Scholar 

  13. W. Harrison and H. Ossher, “Subject-Oriented Programming (A Critique of Pure Objects)”. OOPSLA 1993, 411–428.

    Google Scholar 

  14. R. Helm, I. Holland, and D. Gangopadhyay, “Contracts: Specifying Behavioral Compositions in Object-Oriented Systems”. OOPSLA 1990, 169–180.

    Google Scholar 

  15. I. Holland, “Specifying Reusable Components Using Contracts”, ECOOP 92, 287–308.

    Google Scholar 

  16. JavaSoft, “Inner Classes Specification”, from http://java.sun.com/products/jdk/1.1/docs/.

    Google Scholar 

  17. R. Johnson and B. Foote, “Designing Reusable Classes”, Journal of Object-Oriented Programming, 1(2): June/July 1988, 22–35.

    Google Scholar 

  18. G. Kiczales, J. des Rivieres, and D. G. Bobrow, The Art of the Metaobject Protocol. MIT Press, 1991.

    Google Scholar 

  19. G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J. Loingtier, and J. Irwin, “Aspect-Oriented Programming”, ECOOP 97, 220–242.

    Google Scholar 

  20. O. L. Madsen and B. Møller-Pedersen, “Virtual classes: A powerful mechanism in objectoriented programming”, OOPSLA 1989, 397–406.

    Google Scholar 

  21. O. L. Madsen, B. Møller-Pedersen, and K. Nygaard, Object-Oriented Programming in the BETA Programming Language. Addison-Wesley, 1993.

    Google Scholar 

  22. M. Mezini, “Dynamic Object Evolution without Name Collisions”, ECOOP 97, 190–219.

    Google Scholar 

  23. R. Milner, “A Theory of Type Polymorphism in Programming”, Journal of Computer and System Sciences, 17:Dec 1978, 348–375.

    Article  MATH  MathSciNet  Google Scholar 

  24. T. Montlick, “Implementing Mixins in Smalltalk”, The Smalltalk Report, July 1996.

    Google Scholar 

  25. A. Myers, J. Bank and B. Liskov, “Parameterized Types for Java”, ACM Symposium on Principles of Programming Languages, 1997 (PoPL 97).

    Google Scholar 

  26. M. Odersky and P. Wadler, “Pizza into Java: Translating theory into practice”, ACM Symposium on Principles of Programming Languages, 1997 (PoPL 97).

    Google Scholar 

  27. C. Prehofer, “Feature-Oriented Programming: A Fresh Look at Objects”, ECOOP 97, 419–443.

    Google Scholar 

  28. 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.

    Google Scholar 

  29. J. Rumbaugh, “Getting Started: Using use cases to capture requirements”, Journal of Object-Oriented Programming, 7(5): Sep 1994, 8–23.

    Google Scholar 

  30. L. Seiter, J. Palsberg, and K. Lieberherr, “Evolution of Object Behavior using Context Relations”, ACM SIGSOFT 1996.

    Google Scholar 

  31. 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.

    Google Scholar 

  32. Y. Smaragdakis and D. Batory, “DiSTiL: a Transformation Library for Data Structures”, USENIX Conference on Domain-Specific Languages (DSL 97).

    Google Scholar 

  33. 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.

    Google Scholar 

  34. 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.

    Google Scholar 

  35. B. Stroustrup, The C++ Programming Language, 3rd Ed., Addison-Wesley, 1997.

    Google Scholar 

  36. K. Thorup, “Genericity in Java with Virtual Types”, ECOOP 97, 444–471.

    Google Scholar 

  37. 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.

    Google Scholar 

  38. M. VanHilst and D. Notkin, “Using Role Components to Implement Collaboration-Based Designs”. OOPSLA 1996.

    Google Scholar 

  39. M. VanHilst and D. Notkin, “Decoupling Change From Design”, ACM SIGSOFT 1996.

    Google Scholar 

  40. M. VanHilst, “Role-Oriented Programming for Software Evolution”, Ph.D. Dissertation, University of Washington, Computer Science and Engineering, 1997.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Eric Jul

Rights and permissions

Reprints 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

Publish with us

Policies and ethics