Virtual classes: a powerful mechanism in object-oriented programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Semantics of programming languages: structures and techniques
Semantics of programming languages: structures and techniques
Object-oriented programming in the BETA programming language
Object-oriented programming in the BETA programming language
A monotonic superclass linearization for Dylan
Proceedings of the 11th 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
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
Types and programming languages
Types and programming languages
More dynamic object reclassification: Fickle∥
ACM Transactions on Programming Languages and Systems (TOPLAS)
Integrating independent components with on-demand remodularization
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The GenVoca Model of Software-System Generators
IEEE Software
Conquering aspects with Caesar
Proceedings of the 2nd international conference on Aspect-oriented software development
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
Synthesizing Object-Oriented and Functional Design to Promote Re-Use
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Dynamically Composable Collaborations with Delegation Layers
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
On Variance-Based Subtyping for Parametric Types
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Object-Oriented Programming Versus Abstract Data Types
Proceedings of the REX School/Workshop on Foundations of Object-Oriented Languages
Scalable extensibility via nested inheritance
OOPSLA '04 Proceedings of the 19th 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
Modules for crosscutting models
Ada-Europe'03 Proceedings of the 8th Ada-Europe international conference on Reliable software technologies
Evaluating support for features in advanced modularization technologies
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
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
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
Deriving components from genericity
Proceedings of the 2007 ACM symposium on Applied computing
Lightweight scalable components
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
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
Lightweight family polymorphism*
Journal of Functional Programming
An Algebra for Features and Feature Composition
AMAST 2008 Proceedings of the 12th international conference on Algebraic Methodology and Software Technology
Constrained types for object-oriented languages
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
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
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
Sharing classes between families
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Semantic predicate types and approximation for class-based object oriented programming
Proceedings of the 11th International Workshop on Formal Techniques for Java-like Programs
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
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Virtual class support at the virtual machine level
Proceedings of the Third Workshop on Virtual Machines and Intermediate Languages
A calculus for uniform feature composition
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type safety for feature-oriented product lines
Automated Software Engineering
An algebraic foundation for automatic feature-based program synthesis
Science of Computer Programming
Improving reuse of component families by generating component hierarchies
FOSD '10 Proceedings of the 2nd International Workshop on Feature-Oriented Software Development
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
Modules as objects in newspeak
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Revisiting parametric types and virtual classes
TOOLS'10 Proceedings of the 48th international conference on Objects, models, components, patterns
Proceedings of the 4th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
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)
Coinductive big-step operational semantics for type soundness of Java-like languages
Proceedings of the 13th Workshop on Formal Techniques for Java-Like Programs
DeepFJig: modular composition of nested classes
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
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
On the extensibility requirements of business applications
Proceedings of the 2012 workshop on Next Generation Modularity Approaches for Requirements and Architecture
Transactions on Aspect-Oriented Software Development I
Featherweight Jigsaw - Replacing inheritance by composition in Java-like languages
Information and Computation
A semantic analysis of c++ templates
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Parameterized modules for classes and extensible functions
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
FATES'06/RV'06 Proceedings of the First combined international conference on Formal Approaches to Software Testing and Runtime Verification
Multiple aggregate entry points for ownership types
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Soundness of object-oriented languages with coinductive big-step semantics
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
A variability-aware module system
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
JavaGI: generalized interfaces for java
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
A meta-circular language for active libraries
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
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
Inheritance versus parameterization
Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
Feature-Oriented programming with object algebras
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Confined roles and decapsulation in object teams: contradiction or synergy?
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
Virtual classes are class-valued attributes of objects. Like virtual methods, virtual classes are defined in an object's class and may be redefined within subclasses. They resemble inner classes, which are also defined within a class, but virtual classes are accessed through object instances, not as static components of a class. When used as types, virtual classes depend upon object identity -- each object instance introduces a new family of virtual class types. Virtual classes support large-scale program composition techniques, including higher-order hierarchies and family polymorphism. The original definition of virtual classes in BETA left open the question of static type safety, since some type errors were not caught until runtime. Later the languages Caesar and gbeta have used a more strict static analysis in order to ensure static type safety. However, the existence of a sound, statically typed model for virtual classes has been a long-standing open question. This paper presents a virtual class calculus, VC, that captures the essence of virtual classes in these full-fledged programming languages. The key contributions of the paper are a formalization of the dynamic and static semantics of VC and a proof of the soundness of VC.