The Common Lisp object system: an overview
European conference on object-oriented programming on ECOOP '87
Information and Computation - Semantics of Data Types
Virtual classes: a powerful mechanism in object-oriented programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
A calculus for overloaded functions with subtyping
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Typechecking and modules for multi-methods
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
A syntactic approach to type soundness
Information and Computation
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
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
Featherweight Java: a minimal core calculus for Java and GJ
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
Conquering aspects with Caesar
Proceedings of the 2nd international conference on Aspect-oriented software development
Object-Oriented Multi-Methods in Cecil
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Predicate Dispatching: A Unified Theory of Dispatch
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Scalable extensibility via nested inheritance
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
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
Scalable component abstractions
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Lightweight family polymorphism
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
A core calculus for scala type checking
MFCS'06 Proceedings of the 31st international conference on Mathematical Foundations of Computer Science
Transactions on Aspect-Oriented Software Development I
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
Universe Types for Topology and Encapsulation
Formal Methods for Components and Objects
Type safety for feature-oriented product lines
Automated Software Engineering
Modules as objects in newspeak
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Separating ownership topology and encapsulation with generic universe types
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Confined roles and decapsulation in object teams: contradiction or synergy?
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
Virtual classes allow nested classes to be refined in subclasses. In this way nested classes can be seen as dependent abstractions of the objects of the enclosing classes. Expressing dependency via nesting, however, has two limitations: Abstractions that depend on more than one object cannot be modeled and a class must know all classes that depend on its objects. This paper presents dependent classes, a generalization of virtual classes that expresses similar semantics by parameterization rather than by nesting. This increases expressivity of class variations as well as the flexibility of their modularization. Besides, dependent classes complement multimethods in scenarios where multi-dispatched abstractions rather than multi-dispatched methods are needed. They can also be used to express more precise signatures of multimethods and even extend their dispatch semantics. We present a formal semantics of dependent classes and a machine-checked type soundness proof in Isabelle/HOL [29], the first of this kind for a language with virtual classes and path-dependent types.