Using prototypical objects to implement shared behavior in object-oriented systems
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA '87 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
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
A syntactic approach to type soundness
Information and Computation
ACM Computing Surveys (CSUR)
Roles: conceptual abstraction theory and practical language issues
Theory and Practice of Object Systems - Special issue on subjectivity in object-oriented systems
Object-oriented programming: a unified foundation
Object-oriented programming: a unified foundation
On the representation of roles in object-oriented and conceptual modelling
Data & Knowledge Engineering
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
Foundations of object-oriented languages: types and semantics
Foundations of object-oriented languages: types and semantics
Types and programming languages
Types and programming languages
Information and Computation - FOOL V
Object-Oriented Design Heuristics
Object-Oriented Design Heuristics
A Theory of Objects
Smalltalk-80: The Language
A lambda calculus of objects and method specialization
Nordic Journal of Computing
Object-Oriented Multi-Methods in Cecil
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Type-Safe Delegation for Run-Time Component Adaptation
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
A Delegation-based Object Calculus with Subtying
FCT '95 Proceedings of the 10th International Symposium on Fundamentals of Computation Theory
Automated Delegation is a Viable Alternative to Multiple Inheritance in Class Based Languages
Automated Delegation is a Viable Alternative to Multiple Inheritance in Class Based Languages
Method driven model: a unified model for an object composition language
ACM SIGPLAN Notices
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type safe dynamic object delegation in class-based languages
Proceedings of the 6th international symposium on Principles and practice of programming in Java
A precise model for contextual roles: The programming language ObjectTeams/Java
Applied Ontology - Roles, an interdisciplinary perspective
Programming in Objective-C 2.0
Programming in Objective-C 2.0
I-Java: An Extension of Java with Incomplete Objects and Object Composition
SC '09 Proceedings of the 8th International Conference on Software Composition
A Subtyping for Extensible, Incomplete Objects
Fundamenta Informaticae
A design pattern coupling role and component concepts: Application to medical software
Journal of Systems and Software
Object reuse and behavior adaptation in Java-like languages
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
On flexible dynamic trait replacement for Java-like languages
Science of Computer Programming
Forsaking inheritance: supercharged delegation in DelphJ
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Runtime support for type-safe and context-based behavior adaptation
Frontiers of Computer Science: Selected Publications from Chinese Universities
Hi-index | 0.00 |
Class inheritance and method overriding, as provided by standard class-based languages, are often not flexible enough to represent objects with some dynamic behavior. In this respect, object composition equipped with different forms of method body lookup is often advocated as a more flexible alternative to class inheritance since it takes place at run time, thus permitting the behavior of objects to be specialized dynamically. In this paper, we illustrate Incomplete Featherweight Java (IFJ), an extension of Featherweight Java with a novel linguistic construct, the incomplete object. Incomplete objects require some missing methods which can be provided at run time by composition with another (complete) object. Furthermore, we present two mechanisms for the method body lookup on (composed) objects, one based on delegation and the other based on consultation. Thanks to the design of the language, the consultation-based lookup is a simple extension of the delegation-based one. Both mechanisms are disciplined by static typing, therefore the language enjoys type safety (which implies no ''message-not-understood'' run-time errors) and avoids possible accidental overrides due to method name clashes.