More dynamic object reclassification: Fickle∥

Reclassification changes the class membership of an object at run-time while retaining its identity. We suggest language features for object reclassification, which extend an imperative, typed, class-based, object-oriented language.We present our proposal through the language Fickle⋄⋄. The imperative features, combined with the requirement for a static and safe type system, provided the main challenges. We develop a type and effect system for Fickle⋄⋄ and prove its soundness with respect to the operational semantics. In particular, even though objects may be reclassified across classes with different members, there will never be an attempt to access nonexisting members.

[1]  John C. Mitchell,et al.  A Delegation-based Object Calculus with Subtying , 1995, FCT.

[2]  Elisa Bertino,et al.  Objects with Multiple Most Specific Classes , 1995, ECOOP.

[3]  Bent Bruun Kristensen,et al.  The BETA Programming Language , 1987, Research Directions in Object-Oriented Programming.

[4]  Manuel Serrano,et al.  Wide Classes , 1999, ECOOP.

[5]  Pascal Costanza Dynamic Object Replacement and Implementation-Only Classes , 2001 .

[6]  John C. Mitchell,et al.  A lambda calculus of objects and method specialization , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

[7]  Jon G. Riecke,et al.  Privacy via Subsumption , 2002, Inf. Comput..

[8]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[9]  Jens Palsberg,et al.  Type inference of SELF: Analysis of objects with dynamic and multiple inheritance , 1995, Softw. Pract. Exp..

[10]  Daniel M. Yellin,et al.  Extending Typestate Checking Using Conditional Liveness Analysis , 1993, IEEE Trans. Software Eng..

[11]  David K. Gifford,et al.  Polymorphic effect systems , 1988, POPL '88.

[12]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[13]  David Walker,et al.  Typed memory management via static capabilities , 2000, TOPL.

[14]  Luca Cardelli,et al.  Modula-3 Report (revised) , 1992 .

[15]  Craig S. Kaplan,et al.  Predicate Dispatching: A Unified Theory of Dispatch , 1998, ECOOP.

[16]  Sarfraz Khurshid,et al.  Is the Java Type System Sound? , 1999, Theory Pract. Object Syst..

[17]  António Ravara,et al.  Typing Non-uniform Concurrent Objects , 2000, CONCUR.

[18]  Pierre Jouvelot,et al.  Polymorphic type, region and effect inference , 1992, Journal of Functional Programming.

[19]  Didier Rémy From Classes to Objects via Subtyping , 1998, ESOP.

[20]  Walter L. Hürsch Should Superclasses be Abstract? , 1994, ECOOP.

[21]  Davide Ancona,et al.  An Effective Translation of Fickle into Java , 2001, ICTCS.

[22]  Gary T. Leavens,et al.  Typechecking and Modules for Multimethods , 1995, ACM Trans. Program. Lang. Syst..

[23]  Sophia Drossopoulou,et al.  Fickle : Dynamic Object Re-classification , 2001, ECOOP.

[24]  Luigi Liquori,et al.  A lambda calculus of objects with self-inflicted extension , 1998, OOPSLA '98.

[25]  Robert DeLine,et al.  Enforcing high-level protocols in low-level software , 2001, PLDI '01.

[26]  Frank Pfenning,et al.  Refinement types for ML , 1991, PLDI '91.

[27]  Michele Bugliesi,et al.  A Subtyping for Extensible, Incomplete Objects , 1999, Fundam. Informaticae.

[28]  Craig Chambers,et al.  Predicate Classes , 1993, ECOOP.