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. 1 Introduction Module and class systems both promote code reuse. In theory, many uses of classes can be simulated with modules, and vice versa. Experience shows, however, that programmers need both constructs because they serve different purposes [43]. A module delineates boundaries for separate development. A class permits fine-grained reuse via selective inheritance and overriding. Since modules and classes aid different patterns of ...
|
3853
|
Design Patterns: Elements of Reusable Object-Oriented Software
– Gamma, Helm, et al.
- 1995
|
|
1415
|
The Definition of Standard ML
– Milner, Tofte, et al.
- 1990
|
|
221
|
Smalltalk-80: The Language
– Goldberg, Robson
- 1989
|
|
210
|
Classes and mixins
– Flatt, Krishnamurthi, et al.
- 1998
|
|
178
|
The Java Language Specification. The Java Series
– Gosling, Joy, et al.
- 1996
|
|
157
|
The revised report on the algorithmic language Scheme
– Clinger, Rees
- 1991
|
|
150
|
Units: cool modules for HOT languages
– Flatt, Felleisen
- 1998
|
|
121
|
The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance
– Bracha
- 1992
|
|
94
|
Typechecking and modules for multi-methods
– Chambers, Leavens
- 1995
|
|
84
|
Object-oriented programming versus abstract data types
– Cook
- 1990
|
|
73
|
Common LISP: The Language
– Jr
- 1984
|
|
72
|
The revised 4 report on the algorithmic language Scheme
– Clinger, Rees
- 1991
|
|
71
|
Report on the programming language Haskell
– Hudak, Wadler
- 1991
|
|
61
|
PLT MzScheme: Language manual
– Flatt
- 1997
|
|
61
|
The essence of the Visitor pattern
– Palsberg, Jay
- 1997
|
|
48
|
Objective ML: A simple object-oriented extension of ML
– R'emy, Vouillon
- 1997
|
|
48
|
Import is not inheritance. why we need both: Modules and classes
– Szyperski
|
|
47
|
The Cecil language specification and rationale: Version 2.0. Available from http://www.cs.washington.edu/research/projects/cecil/www/Papers/cecilspec. html
– Chambers
- 1995
|
|
42
|
SIMULA 67. common base language
– Dahl, Myrhaug, et al.
- 1968
|
|
42
|
Simple objects for Standard ML
– Reppy, Riecke
- 1996
|
|
38
|
Object-oriented programming in Scheme
– Adams, Rees
- 1988
|
|
36
|
A module system for Scheme
– Curtis, Rauen
- 1990
|
|
33
|
Synthesizing object-oriented and functional design to promote re-use
– Krishnamurthi, Felleisen, et al.
- 1998
|
|
31
|
The Objective Caml system
– Leroy
- 1996
|
|
25
|
The Dylan Reference Manual
– Shalit
- 1996
|
|
24
|
User-defined types and procedural data structures as complementary approaches to data abstraction
– Reynolds
- 1975
|
|
19
|
An algebraic approach to mixins and modularity
– Ancona, Zucca
- 1996
|
|
17
|
Metalevel building blocks for modular systems
– Jagannathan
- 1994
|
|
17
|
Quasi-static scoping: Sharing variable bindings across multiple lexical scopes
– Lee, Friedman
- 1993
|
|
16
|
The implementation of PC Scheme
– Bartley, Jensen
- 1986
|
|
16
|
A Little Java, A Few Patterns
– Felleisen, Friedman
- 1998
|
|
14
|
Enriching the lambda calculus with context toward a theory of incremental program construction
– Lee, Friedman
- 1996
|
|
14
|
Free variables and first-class environments
– Miller, Rozas
- 1991
|
|
11
|
Another module system for scheme
– Rees
- 1993
|
|
11
|
Interactive modular programming in scheme
– Tung
- 1992
|
|
10
|
The translator pattern---external functionality with homomorphic mappings
– Kuhne
- 1997
|
|
9
|
Oaklisp: an objectoriented dialect of Scheme
– Lang, Pearlmutter
- 1988
|
|
8
|
Roure. Sharing code through first-class envinroments
– Queinnec, De
- 1996
|
|
5
|
Meroon V3: A Small, Efficient, and Enhanced Object System
– Queinnec
- 1997
|
|
4
|
Fully-parameterized modules or the missing link
– Kelsey
- 1997
|
|
3
|
a portable Scheme implementation
– Feeley
- 1996
|
|
2
|
Distributed generic functions
– Queinnec
- 1997
|