Inheritance and the development of encapsulated software systems
Research directions in object-oriented programming
LISP, objects, and symbolic programming
LISP, objects, and symbolic programming
Objects as closures: abstract semantics of object-oriented languages
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Inheritance in smalltalk-80: a denotational definition
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Common Lisp companion
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
Monotonic conflict resolution mechanisms for inheritance
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
The programming language jigsaw: mixins, modularity and multiple inheritance
The programming language jigsaw: mixins, modularity and multiple inheritance
Object-oriented type systems
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Application of OOP type theory: state, decidability, integration
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 Java Language Specification
The Java Language Specification
A Theory of Primitive Objects - Scond-Order Systems
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
Programming Objects with ML-ART, an Extension to ML with Abstract and Record Types
TACS '94 Proceedings of the International Conference on Theoretical Aspects of Computer Software
A Theory of Primitive Objects - Untyped and First-Order Systems
TACS '94 Proceedings of the International Conference on Theoretical Aspects of Computer Software
Modeling Subobject-based Inheritance
ECCOP '96 Proceedings of the 10th European Conference on Object-Oriented Programming
DrScheme: A Pedagogic Programming Environment for Scheme
PLILP '97 Proceedings of the9th International Symposium on Programming Languages: Implementations, Logics, and Programs: Including a Special Trach on Declarative Programming Languages in Education
TAPSOFT '95 Proceedings of the 6th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
An Algebraic Approach to Mixins and Modularity
ALP '96 Proceedings of the 5th International Conference on Algebraic and Logic Programming
A denotational semantics of inheritance
A denotational semantics of inheritance
An Event-Based Structural Operational Semantics of Multi-Threaded Java
Formal Syntax and Semantics of Java
Constructive Foundations for Featherweight Java
PTCS '01 Proceedings of the International Seminar on Proof Theory in Computer Science
JNI light: an operational model for the core JNI
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Separating ownership topology and encapsulation with generic universe types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modular specification of encapsulated object-oriented components
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
Field access analysis for enforcing access control policies
ETRICS'06 Proceedings of the 2006 international conference on Emerging Trends in Information and Communication Security
DBPL'05 Proceedings of the 10th international conference on Database Programming Languages
Concurrency, Compositionality, and Correctness
Bisimulations for untyped imperative objects
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
MAO: ownership and effects for more effective reasoning about aspects
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Tracking linear and affine resources with JAVA(X)
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
ICFP 2002: Contracts for higher-order functions
ACM SIGPLAN Notices - Supplemental issue
Hi-index | 0.00 |
While class-based object-oriented programming languages provide a flexible mechanism for re-using and managing related pieces of code, they typically lack linguistic facilities for specifying a uniform extension of many classes with one set of fields and methods. As a result, programmers are unable to express certain abstractions over classes. In this paper we develop a model of class-to-class functions that we refer to as mixins. A mixin function maps a class to an extended class by adding or overriding fields and methods. Programming with mixins is similar to programming with single inheritance classes, but mixins more directly encourage programming to interfaces. The paper develops these ideas within the context of Java. The results are 1. an intuitive model of an essential Java subset; 2. an extension that explains and models mixins; and 3. type soundness theorems for these languages.