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
Object-oriented programming in the BETA programming language
Object-oriented programming in the BETA programming language
The Dylan reference manual: the definitive guide to the new object-oriented dynamic language
The Dylan reference manual: the definitive guide to the new object-oriented dynamic language
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Compatible genericity with run-time types for the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Parametric polymorphism for Java: a reflective solution
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
N degrees of separation: multi-dimensional separation of concerns
Proceedings of the 21st international conference on Software engineering
Semantic analysis of virtual classes and nested classes
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Constraint-based polymorphism in Cecil: towards a practical and static type system
Addendum to the 1998 proceedings of the conference on Object-oriented programming, systems, languages, and applications (Addendum)
Object-oriented framework and product lines
Proceedings of the first conference on Software product lines : experience and research directions: experience and research directions
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
The Definition of Standard ML
Object-Oriented Multi-Methods in Cecil
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
A Statically Safe Alternative to Virtual Types
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Dependent types in practical programming
Dependent types in practical programming
Integrating independent components with on-demand remodularization
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Conquering aspects with Caesar
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
Difference-Based Modules: A Class-Independent Module Mechanism
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Object Teams: Improving Modularity for Crosscutting Collaborations
NODe '02 Revised Papers from the International Conference NetObjectDays on Objects, Components, Architectures, Services, and Applications for a Networked World
Safe dynamic multiple inheritance
Nordic Journal of Computing
Scalable extensibility via nested inheritance
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Variability management with feature-oriented programming and aspects
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Essential language support for generic programming
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
KERIS: evolving software with extensible modules: Research Articles
Journal of Software Maintenance and Evolution: Research and Practice - Unanticipated Software Evolution
Associated types and constraint propagation for mainstream object-oriented generics
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Scalable component abstractions
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Implementing a modular access control service to support application-specific policies in CaesarJ
AOMD '05 Proceedings of the 1st workshop on Aspect oriented middleware development
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An object-oriented approach to datatype-generic programming
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Eliminating distinctions of class: using prototypes to model virtual classes
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
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
Tribe: a simple virtual class calculus
Proceedings of the 6th international conference on Aspect-oriented software development
The when, why and why not of the BETA programming language
Proceedings of the third ACM SIGPLAN conference on History of programming languages
ACoM '07 Proceedings of the First International Workshop on Assessment of Contemporary Modularization Techniques
Lightweight scalable components
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Object-oriented description of graph data structures
Programming and Computing Software
Variant path types for scalable extensibility
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Can programming be liberated from the two-level style: multi-level programming with deepjava
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Lightweight family polymorphism*
Journal of Functional Programming
Balancing language concerns: who decides?
Proceedings of the 2008 AOSD workshop on Software engineering properties of languages and aspect technologies
Implementing design patterns in CaesarJ: an exploratory study
Proceedings of the 2008 AOSD workshop on Software engineering properties of languages and aspect technologies
A precise model for contextual roles: The programming language ObjectTeams/Java
Applied Ontology - Roles, an interdisciplinary perspective
An Extensible State Machine Pattern for Interactive Applications
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Code generation to support static and dynamic composition of software product lines
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Matching ThisType to subtyping
Proceedings of the 2009 ACM symposium on Applied Computing
Sharing classes between families
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Towards safe and flexible object adaptation
International Workshop on Context-Oriented Programming
Revision classes for explicit versioning
Proceedings of the Workshop on AOP and Meta-Data for Software Evolution
Types for Proofs and Programs
Safer typing of complex API usage through Java generics
PPPJ '09 Proceedings of the 7th International Conference on Principles and Practice of Programming in Java
JavaGI in the battlefield: practical experience with generalized interfaces
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Classboxes: controlling visibility of class extensions
Computer Languages, Systems and Structures
A calculus for uniform feature composition
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modules for crosscutting models
Ada-Europe'03 Proceedings of the 8th Ada-Europe international conference on Reliable software technologies
Design pattern implementation in object teams
Proceedings of the 2010 ACM Symposium on Applied Computing
ECOOP'07 Proceedings of the 2007 conference on Object-oriented technology
Improving reuse of component families by generating component hierarchies
FOSD '10 Proceedings of the 2nd International Workshop on Feature-Oriented Software Development
MetaFJig: a meta-circular composition language for Java-like classes
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
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
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Revisiting parametric types and virtual classes
TOOLS'10 Proceedings of the 48th international conference on Objects, models, components, patterns
An observer-based notion of model inheritance
MODELS'10 Proceedings of the 13th international conference on Model driven engineering languages and systems: Part I
Proceedings of the 4th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
An architecture for generic extensions
Science of Computer Programming
A language for generic programming in the large
Science of Computer Programming
Aspect-based dynamic software updating: a model and its empirical evaluation
Proceedings of the tenth international conference on Aspect-oriented software development
Modularity for the changing meaning of changing
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)
Lifted Java: a minimal calculus for translation polymorphism
TOOLS'11 Proceedings of the 49th international conference on Objects, models, components, patterns
Separating ownership topology and encapsulation with generic universe types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Computer Languages, Systems and Structures
Lightweight family polymorphism
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Reconciling virtual classes with genericity
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
A core calculus for scala type checking
MFCS'06 Proceedings of the 31st international conference on Mathematical Foundations of Computer Science
Chai: traits for Java-like languages
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Model typing for improving reuse in model-driven engineering
MoDELS'05 Proceedings of the 8th international conference on Model Driven Engineering Languages and Systems
Adaptable generic programming with required type specifications and package templates
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
Transactions on Aspect-Oriented Software Development I
Parameterized modules for classes and extensible functions
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
A precise model for contextual roles: The programming language ObjectTeams/Java
Applied Ontology - Roles, an interdisciplinary perspective
ECMFA'12 Proceedings of the 8th European conference on Modelling Foundations and Applications
Extensibility for the masses: practical extensibility with object algebras
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Escaping the maze of twisty classes
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
JavaGI: generalized interfaces for java
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Bridging the chasm between MDE and the world of compilation
Software and Systems Modeling (SoSyM)
Challenges in the design of the package template mechanism
Transactions on Aspect-Oriented Software Development IX
Science of Computer Programming
Abstraction over implementation structure with symmetrically encapsulated multimethods
Science of Computer Programming
On model compatibility with referees and contexts
Software and Systems Modeling (SoSyM)
Feature-Oriented programming with object algebras
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Using model types to support contract-aware model substitutability
ECMFA'13 Proceedings of the 9th European conference on Modelling Foundations and Applications
Confined roles and decapsulation in object teams: contradiction or synergy?
Aliasing in Object-Oriented Programming
Semantic Types and Approximation for Featherweight Java
Theoretical Computer Science
Hi-index | 0.00 |
This paper takes polymorphism to the multi-object level. Traditional inheritance, polymorphism, and late binding interact nicely to provide both flexibility and safety - when a method is invoked on an object via a polymorphic reference, late binding ensures that we get the appropriate implementation of that method for the actual object. We are granted the flexibility of using different kinds of objects and different method implementations, and we are guaranteed the safety of the combination. Nested classes, polymorphism, and late binding of nested classes interact similarly to provide both safety and flexibility at the level of multi-object systems. We are granted the flexibility of using different families of kinds of objects, and we are guaranteed the safety of the combination. This paper highlights the inability of traditional polymorphism to handle multiple objects, and presents family polymorphism as a way to overcome this problem. Family polymorphism has been implemented in the programming language gbeta, a generalized version of Beta, and the source code of this implementation is available under GPL.