Research directions in object-oriented programming
A programmer's guide to object-oriented programming in Common LISP
A programmer's guide to object-oriented programming in Common LISP
Virtual classes: a powerful mechanism in object-oriented programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
F-bounded polymorphism for object-oriented programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Smalltalk: subclassing subtyping is-a
Journal of Object-Oriented Programming
Using role components in implement collaboration-based designs
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Units: cool modules for HOT languages
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Modular object-oriented programming with units and mixins
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Hyper/J: multi-dimensional separation of concerns for Java
Proceedings of the 22nd 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
ACM Transactions on Software Engineering and Methodology (TOSEM)
Smalltalk-80: The Language
Aspect-oriented programming with Jiazzi
Proceedings of the 2nd international conference on Aspect-oriented software development
Conquering aspects with Caesar
Proceedings of the 2nd international conference on Aspect-oriented software development
The Common Lisp Object System: An Overview
ECOOP '87 Proceedings of the European Conference on Object-Oriented Programming
Specifying Reusable Components Using Contracts
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Difference-Based Modules: A Class-Independent Module Mechanism
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
A denotational semantics of inheritance
A denotational semantics of inheritance
Refinements and multi-dimensional separation of concerns
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
Relaxed MultiJava: balancing extensibility and modular typechecking
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
MJ: a rational module system for Java and its applications
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Scalable extensibility via nested inheritance
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Classboxes: controlling visibility of class extensions
Computer Languages, Systems and Structures
Loosely-separated “sister” namespaces in java
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Evaluating support for features in advanced modularization technologies
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
The story of moose: an agile reengineering environment
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Classboxes: an experiment in modeling compositional abstractions using explicit contexts
SAVCBS '05 Proceedings of the 2005 conference on Specification and verification of component-based systems
J&: nested intersection for scalable software composition
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Statically scoped object adaptation with expanders
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Software extension and integration with type classes
Proceedings of the 5th international conference on Generative programming and component engineering
On dynamically-scoped crosscutting mechanisms
ACM SIGPLAN Notices
ACoM '07 Proceedings of the First International Workshop on Assessment of Contemporary Modularization Techniques
Expressive scoping of dynamically-deployed aspects
Proceedings of the 7th international conference on Aspect-oriented software development
A small extension to Java for class refinement
Proceedings of the 2008 ACM symposium on Applied computing
DLS '08 Proceedings of the 2008 symposium on Dynamic languages
An Algebra for Features and Feature Composition
AMAST 2008 Proceedings of the 12th international conference on Algebraic Methodology and Software Technology
Feature featherweight java: a calculus for feature-oriented programming and stepwise refinement
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
A reusable observer pattern implementation using package templates
Proceedings of the 8th workshop on Aspects, components, and patterns for infrastructure software
Sharing classes between families
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
FEATUREHOUSE: Language-independent, automated software composition
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Revision classes for explicit versioning
Proceedings of the Workshop on AOP and Meta-Data for Software Evolution
Language-Independent Quantification and Weaving for Feature Composition
SC '09 Proceedings of the 8th International Conference on Software Composition
Implicit First Class Genericity
SC '09 Proceedings of the 8th International Conference on Software Composition
Fitting the pieces together: a machine-checked model of safe composition
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
A model of refactoring physically and virtually separated features
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Superimposition: a language-independent approach to software composition
SC'08 Proceedings of the 7th international conference on Software composition
Component models for semantic web languages
Semantic techniques for the web
Type safety for feature-oriented product lines
Automated Software Engineering
An algebraic foundation for automatic feature-based program synthesis
Science of Computer Programming
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Mostly modular compilation of crosscutting concerns by contextual predicate dispatch
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Event-specific software composition in context-oriented programming
SC'10 Proceedings of the 9th international conference on Software composition
Aspect-based dynamic software updating: a model and its empirical evaluation
Proceedings of the tenth international conference on Aspect-oriented software development
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Worlds: controlling the scope of side effects
Proceedings of the 25th European conference on Object-oriented programming
Decouplink: dynamic links for Java
ECSA'11 Proceedings of the 5th European conference on Software architecture
Using smalltalk as a reflective executable meta-language
MoDELS'06 Proceedings of the 9th international conference on Model Driven Engineering Languages and Systems
Access control in feature-oriented programming
Science of Computer Programming
Method shelters: avoiding conflicts among class extensions caused by local rebinding
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
On the integration of classboxes into c#
SC'06 Proceedings of the 5th international conference on Software Composition
Using metadata transformations to integrate class extensions in an existing class hierarchy
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
Type checking annotation-based product lines
ACM Transactions on Software Engineering and Methodology (TOSEM)
Subobject transactional memory
COORDINATION'12 Proceedings of the 14th international conference on Coordination Models and Languages
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
A variability-aware module system
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Challenges in the design of the package template mechanism
Transactions on Aspect-Oriented Software Development IX
Using roles to model crosscutting concerns
Proceedings of the 12th annual international conference on Aspect-oriented software development
Method shells: controlling a scope of destructive class extensions by context switches
Proceedings of the 12th annual international conference companion on Aspect-oriented software development
Subclack: feature-oriented programming with behavioral feature interfaces
Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
Increasing test coverage with Hapao
Science of Computer Programming
Hi-index | 0.00 |
Unanticipated changes to complex software systems can introduce anomalies such as duplicated code, suboptimal inheritance relationships and a proliferation of run-time downcasts. Refactoring to eliminate these anomalies may not be an option, at least in certain stages of software evolution. Classboxes are modules that restrict the visibility of changes to selected clients only, thereby offering more freedom in the way unanticipated changes may be implemented, and thus reducing the need for convoluted design anomalies. In this paper we demonstrate how classboxes can be implemented in statically-typed languages like Java. We also present an extended case study of Swing, a Java GUI package built on top of AWT, and we document the ensuing anomalies that Swing introduces. We show how Classbox/J, a prototype implementation of classboxes for Java, is used to provide a cleaner implementation of Swing using local refinement rather than subclassing.