On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
The design and implementation of hierarchical software systems with reusable components
ACM Transactions on Software Engineering and Methodology (TOSEM)
Subject-oriented programming: a critique of pure objects
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
ACM Computing Surveys (CSUR)
Adding type parameterization to the Java language
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
N degrees of separation: multi-dimensional separation of concerns
Proceedings of the 21st international conference on Software engineering
Graphic Java 2 (3rd ed.): mastering the JFC (Volume II SWING)
Graphic Java 2 (3rd ed.): mastering the JFC (Volume II SWING)
Practical experience with an application extractor for Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
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 framework and product lines
Proceedings of the first conference on Software product lines : experience and research directions: experience and research directions
Comparing frameworks and layered refinement
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Jiazzi: new-age components for old-fasioned Java
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
The Java Programming Language
A Statically Safe Alternative to Virtual Types
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Implementing Layered Designs with Mixin Layers
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
JTS: Tools for Implementing Domain-Specific Languages
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Java Layers: Extending Java to Support Component-Based Programming
Java Layers: Extending Java to Support Component-Based Programming
Static Virtual Types in Java Layers
Static Virtual Types in Java Layers
Implementing large-scale object-oriented components
Implementing large-scale object-oriented components
Aspect-oriented programming with Jiazzi
Proceedings of the 2nd international conference on Aspect-oriented software development
Model-view-controller and object teams: a perfect match of paradigms
Proceedings of the 2nd international conference on Aspect-oriented software development
Dynamically Composable Collaborations with Delegation Layers
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Design-time product line architectures for any-time variability
Science of Computer Programming - Special issue: Software variability management
Weaving a social fabric into existing software
Proceedings of the 4th international conference on Aspect-oriented software development
Using step-wise refinement to build a flexible lightweight storage manager
ADBIS'05 Proceedings of the 9th East European conference on Advances in Databases and Information Systems
FeatureC++: on the symbiosis of feature-oriented and aspect-oriented programming
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Reified type parameters using Java annotations
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Hi-index | 0.02 |
When it comes to software that runs on devices as varied as cell phones, PDAs and desktops, one size does not fit all. This paper describes how mixin layers, a kind of nested generic type, can be used to implement a graphical user interface library that can be configured to run on platforms with widely dissimilar capabilities. We describe the language support needed to incrementally build software in layers, and we describe how crosscutting concerns can be encapsulated within a layer. We then show how layers can be reconfigured to meet changing requirements. We also show how a new design pattern, the Sibling pattern, can be used with mixin layers to coordinate changes to multiple classes in the same inheritance hierarchy. When used appropriately, the Sibling pattern increases our ability to separate design concerns and to reuse code.