Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
ACM Computing Surveys (CSUR)
MultiJava: modular open classes and symmetric multiple dispatch for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Object-oriented composition untangled
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The impact of software engineering research on modern progamming languages
ACM Transactions on Software Engineering and Methodology (TOSEM)
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Aspects of composition in the reflex AOP kernel
SC'06 Proceedings of the 5th international conference on Software Composition
Transactions on Aspect-Oriented Software Development IX
Reuse of continuation-based control-flow abstractions
Proceedings of the 2nd workshop on Free composition @ onward! 2011
Hi-index | 0.00 |
An ongoing trend is to develop new mechanisms for composing software modules that resemble the relations between corresponding problem-domain entities and thus enable a natural decomposition of software for an increasing number of problem domains. However, we have observed that today's programming languages hard-wire a fixed set of composition mechanisms, usually in terms of keywords. To overcome this limitation, we have proposed the Co-op approach enabling developers to implement an open-ended number of composition mechanisms as first-class citizens. Extending our previous prototype which focused on the composition of behavior, this paper reports on our prototype Co-op/II which facilitates implementing composition mechanisms for data access. We show that our approach is sufficient to realize several styles, e.g., of sharing data between sub classes, of controlling visibility, and of behavioral modifiers like synchronization of data access, converting or persisting data.