Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/289423.289432acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
Article
Free access

Modular object-oriented programming with units and mixins

Published: 29 September 1998 Publication History
  • Get Citation Alerts
  • Abstract

    Module and class systems have evolved to meet the demand for reuseable software components. Considerable effort has been invested in developing new module and class systems, and in demonstrating how each promotes code reuse. However, relatively little has been said about the interaction of these constructs, and how using modules and classes together can improve programs. In this paper, we demonstrate the synergy of a particular form of modules and classes---called units and mixins, respectively---for solving complex reuse problems in a natural manner.

    References

    [1]
    Ancona, D. and E. Zucca. An algebraic approach to mixins and modularity. In Hanus, M. and M. Rodrlguez-Artalejo, editors, Proc. Conference on Algebraic and Logic Programming, Lecture Notes in Computer Science 1139, pages 179-193, Berlin, 1996. Springer Verlag.]]
    [2]
    Bartley, D. H. and J. C. Jensen. The implementation of PC Scheme. In Proc. A CM Conference on Lisp and Functional Programming, pages 86-93, 1986.]]
    [3]
    Bracha, G. The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. Ph.D. thesis, Dept. of Computer Science, University of Utah, March 1992.]]
    [4]
    Chambers, C. The Cecil Language Specification and Rationale: Version ~.0, 1995.]]
    [5]
    Chambers, C. and G. T. Leavens. Typechecking and modules for multi-methods. A CM Transactions on Programming Languages and Systems, 17(6):805-843, November 1995.]]
    [6]
    Clinger, W. and Rees, J. (Eds.). The revised4 report on the algorithmic language Scheme. ACM Lisp Pointers, 4(3), July 1991.]]
    [7]
    Cook, W. R. Object-oriented programming versus abstract data types. In Foundations of Object-Oriented Languages, pages 151-178, June 1990.]]
    [8]
    Curtis, P. and J. Rauen. A module system for Scheme. in Proc. A CM Conference on Lisp and Functional Programming, pages 13-28, 1990.]]
    [9]
    Dalai, O.-J., B. Myrhaug and K. Nygaard. SIMULA 67. common base language. Technical Report Publ. No. S- 2, Norwegian Computing Center, Oslo, Norway, May 1968.]]
    [10]
    Feeley, M. Gambit-C, a portable Scheme implementation, 1996.]]
    [11]
    Felleisen, M. and D. P. Friedman. A Little Java, A Few Patterns. The MIT Press, 1998.]]
    [12]
    Flatt, M. PLT MzScheme: Language manual. Technical Report TR97-280, Rice University, 1997.]]
    [13]
    Flatt, M. and M. Felleisen. Units: Cool modules for HOT languages. In Proc. A CM Conference on Programming Language Design and Implementation, pages 236-248, 1998.]]
    [14]
    Flatt, M., S. Krishnamurthi and M. Felleisen. Classes and mixins. In Proc. A CM Symposium on Principles of Programming Languages, pages 171-183, 1998.]]
    [15]
    Gamma, E., R. Helm, R. Johnson and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, Massachusetts, 1994.]]
    [16]
    Goldberg, A. and D. Robson. Smalltalk 80: The Language. Addison-Wesley, Reading, 1989.]]
    [17]
    Gosling, J., B. Joy and G. Steele. The Java Language Specification. The Java Series. Addison-Wesley, Reading, MA, USA, June 1996.]]
    [18]
    Harbison, S. P. Modula-3. Prentice Hall, 1991.]]
    [19]
    Hudak, P. and Wadler, P. (Eds.). Report on the programming language Haskell. Technical Report YALE/DCS/RR777, Yale University, Department of Computer Science, August 1991.]]
    [20]
    International Organization for Standardization. Ada 95 Reference Manual. The Language. The Standard Libraries, Janurary 1995.]]
    [21]
    Jagannathan, S. Metalevel building blocks for modular systems. A CM Transactions on Programming Languages and Systems, 16(3):456-492, May 1994.]]
    [22]
    Kelsey, R. A. Fully-parameterized modules or the missing link. Technical Report 97-3, NEC Research Institute, 1997.]]
    [23]
    KrishnaInurthi, S., M. Felleisen and D. Friedman. Synthesizing object-oriented and functional design to promote re-use. In Proc. European Conference on Object- Oriented Programming, 1998.]]
    [24]
    Kfihne, T. The translator pattern--external functionality with homomorphic mappings. In Proceedings of TOOLS 2o~, USA, pages 48-62, July 1997.]]
    [25]
    Lang, K. J. and B. A. Pearlmutter. Oaklisp: an objectoriented dialect of Scheme. Lisp and Symbolic Computation: An International journal, 1(1):39-51, May 1988.]]
    [26]
    Lee, S.-D. and D. P. Friedman. Quasi-static scoping: Sharing variable bindings across multiple lexical scopes. In Proc. ACM Symposium on Principles of Programruing Languages, pages 479-492, 1993.]]
    [27]
    Lee, S.-D. and D. P. Friedman. Enriching the lambda calculus with context toward a theory of incremental program construction. In Proc. A CM International Conference on Functional Programming, pages 239- 250, 1996.]]
    [28]
    Leroy, X. The Objective Carol system, 1996. URL: http://pauillac, inria, fr/ocaml/.]]
    [29]
    Miller, J. and G. Rozas. Free variables and first-class environments. Lisp and Symbolic Computation: An International Journal, 3(4):107-141, 1991.]]
    [30]
    Milner, R., M. Torte and R. Harper. The Definition of Standard ML. The MIT Press, Cambridge, Massachusetts and London, England, 1990.]]
    [31]
    Mitchell, J. G., W. Mayberry and R. Sweet. Mesa Language Manual, 1979.]]
    [32]
    Palsberg, J. and C. B. Jay. The essence of the Visitor pattern. Technical Report 05, University of Technology, Sydney, 1997.]]
    [33]
    Queinnec, C. Distributed generic functions. In Proc. 1997 France-Japan Workshop on Object-Based Parallel and Distributed Computing, 1997.]]
    [34]
    Queinnec, C. Meroon V$: A Small, Efficient, and Enhanced Object System, 1997.]]
    [35]
    Queinnec, C. and D. De Roure. Sharing code through first-class envinroments. In Proc. A CM International Conference on Functional Programming, pages 251- 261, 1996.]]
    [36]
    Rees, J. Another module system for Scheme, 1994. Scheme48 documentation.]]
    [37]
    Rees, J. and N. Adams. Object-oriented programming in Scheme. In Proc. A CM Conference on Lisp and Functional Programming, pages 277-288, 1988.]]
    [38]
    Rdmy, D. and J. Vouillon. Objective ML: A simple object-oriented extension of ML. In Proc. ACM Symposium on Principles of Programming Languages, pages 40-53, Pads, France, 15-17 Janurary 1997.]]
    [39]
    Reppy, J. and J. Riecke. Simple objects for Standard ML. In Proc. A CM Conference on Programming Language Design and Implementation, pages 171-180, 1906.]]
    [40]
    Reynolds, J. C. User-defined types and procedural data structures as complementary approaches to data abstraction. In Schuman, S. A., editor, New Directions in Algorithmic Languages, pages 157-168. {FIP Working Group 2.1 on Algol, 1975.]]
    [41]
    Shalit, A. The Dylan Reference Manual. Addison- Wesley, 1996.]]
    [42]
    Steele Jr., G. L. Common Lisp: The Language. Digital Press, second edition, 1990.]]
    [43]
    Szyperski, C. A. Import is not inheritance - why we need both: Modules and classes. In European Conference on Object-Oriented Programming, volume 615 of Lecture Notes in Computer Science, pages 19-32. Springer-Verlag, New York, N.Y., 1992.]]
    [44]
    Tung, S.-H. Interactive modular programming in Scheme. in Proc. A CM Conference on Lisp and Functional Programming, pages 86-95, 1992.]]
    [45]
    Wirth, N. Programming in Modula-2. Springer-Verlag, 1983.]]

    Cited By

    View all

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ICFP '98: Proceedings of the third ACM SIGPLAN international conference on Functional programming
    September 1998
    351 pages
    ISBN:1581130244
    DOI:10.1145/289423
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 29 September 1998

    Permissions

    Request permissions for this article.

    Check for updates

    Qualifiers

    • Article

    Conference

    ICFP98
    Sponsor:
    ICFP98: 1998 International Conference on Functional Programming
    September 26 - 29, 1998
    Maryland, Baltimore, USA

    Acceptance Rates

    ICFP '98 Paper Acceptance Rate 30 of 77 submissions, 39%;
    Overall Acceptance Rate 333 of 1,064 submissions, 31%

    Upcoming Conference

    ICFP '24

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)117
    • Downloads (Last 6 weeks)19

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Lightweight DSL for Describing Extensible Transition SystemsProceedings of the 39th ACM/SIGAPP Symposium on Applied Computing10.1145/3605098.3636025(1122-1131)Online publication date: 8-Apr-2024
    • (2023)Scrambled Features for Breakfast: Concepts of Agile Language DevelopmentCommunications of the ACM10.1145/359621766:11(50-60)Online publication date: 20-Oct-2023
    • (2017)Disjoint PolymorphismProgramming Languages and Systems10.1007/978-3-662-54434-1_1(1-28)Online publication date: 19-Mar-2017
    • (2015)Towards modular instrumentation of interpreters in JavaScriptCompanion Proceedings of the 14th International Conference on Modularity10.1145/2735386.2736753(64-69)Online publication date: 16-Mar-2015
    • (2014)A meta-circular language for active librariesScience of Computer Programming10.1016/j.scico.2014.05.00395:P2(219-253)Online publication date: 1-Dec-2014
    • (2013)ICFP 2002ACM SIGPLAN Notices10.1145/2502508.250252148:4S(34-45)Online publication date: 9-Jul-2013
    • (2013)Feature-Oriented Software DevelopmentGenerative and Transformational Techniques in Software Engineering IV10.1007/978-3-642-35992-7_10(346-382)Online publication date: 2013
    • (2012)First-Class compositionsTransactions on Aspect-Oriented Software Development IX10.5555/2434958.2434967(216-267)Online publication date: 1-Jan-2012
    • (2012)Features and object capabilitiesProceedings of the 11th annual international conference on Aspect-oriented Software Development10.1145/2162049.2162053(25-34)Online publication date: 25-Mar-2012
    • (2012)Software diversityInternational Journal on Software Tools for Technology Transfer (STTT)10.1007/s10009-012-0253-y14:5(477-495)Online publication date: 1-Oct-2012
    • Show More Cited By

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media