Results 11 - 20
of
79
More Dynamic Object Re-classification: Fickle_II
"... This paper is organized as follows: In Section 2 we introduce Fickle II informally using an example. In Sections 3, 4, and 5 we outline Fickle II: the syntax, operational semantics, typing rules, and we state type soundness. In Section 6 we compare our proposal with other approaches. In Section 7 we ..."
Abstract
-
Cited by 29 (5 self)
- Add to MetaCart
This paper is organized as follows: In Section 2 we introduce Fickle II informally using an example. In Sections 3, 4, and 5 we outline Fickle II: the syntax, operational semantics, typing rules, and we state type soundness. In Section 6 we compare our proposal with other approaches. In Section 7 we describe design alternatives. In Section 8 we draw some conclusions. The appendix contains an example, some definitions, and the proof of the type soundness result. Even though the object-based paradigm may be more fundamental [Abadi and Cardelli 1996] and though classes should not be types, and subclasses should not imply subtypes [Canning et al. 1989], current praxis predominantly uses languages of the opposite philosophy...
Wide Classes
, 1999
"... This paper introduces the concepts of wide classes and widening as extensions to the object model of class-based languages such as Java and Smalltalk. Widening allows an object to be temporarily widened, that is transformed into an instance of a subclass, a wide class, and, later on, to be shrunk, t ..."
Abstract
-
Cited by 28 (2 self)
- Add to MetaCart
This paper introduces the concepts of wide classes and widening as extensions to the object model of class-based languages such as Java and Smalltalk. Widening allows an object to be temporarily widened, that is transformed into an instance of a subclass, a wide class, and, later on, to be shrunk, that is reshaped to its original class. Wide classes share the main properties of plain classes: they have a name, a superclass, they may be instantiated, they have an associated class predicate and an associated type that may be used to override function definnitions. Widening is also useful to implement transient data storage for longlasting computations. In particular, it helps reducing software data retention. This phenomenon arises when the actual data structures used in a program fail to reect time-dependent properties of values and can cause excessive memory consumption during the execution. Wide classes may be implemented for any dynamically-typed class-based programm...
Roles and Dynamic Subclasses: A Modal Logic Approach
- In Proceedings of European Conference on Object-Oriented Programming
, 1994
"... In this paper, we argue that object-oriented models must be able to represent three kinds of taxonomic structures: static subclasses, dynamic subclasses and role classes. If CAR is a static subclass of V EHICLE, then a vehicle that is not a car can never migrate to the CAR subclass. If EMP loyee is ..."
Abstract
-
Cited by 26 (4 self)
- Add to MetaCart
In this paper, we argue that object-oriented models must be able to represent three kinds of taxonomic structures: static subclasses, dynamic subclasses and role classes. If CAR is a static subclass of V EHICLE, then a vehicle that is not a car can never migrate to the CAR subclass. If EMP loyee is a dynamic subclass of PERSON , then a PERSON that is not an employee may migrate to EMP . In both cases, an instance of the subclass is identical to an instance of the superclass. Finally, if EMP is modeled as a role class of PERSON every employee differs from every person, but a PERSON instance can acquire one or more EMP instances as roles. We outline an approach to formalizing these taxonomic structures in order-sorted dynamic logic with equality. Keywords: Theoretical foundations, formal methods, OO analysis and design February 2, 1994 Contents 1 Introduction 1 2 Methodological aspects of role-playing and class migration 1 2.1 Object classification and identification : : : : : : : : :...
Constraint-Based Polymorphism in Cecil: Towards a Practical and Static Type System
- In Proceedings of the 13th ACM Conference on ObjectOriented Programming Systems, languages and applications
, 1998
"... We present a static type system for object-oriented languages which strives to provide static typechecking without resorting to dynamic "type casts," restricting what code the programmer can write, or being too verbose or difficult to use in practice. The type system supports bounded parametric poly ..."
Abstract
-
Cited by 22 (0 self)
- Add to MetaCart
We present a static type system for object-oriented languages which strives to provide static typechecking without resorting to dynamic "type casts," restricting what code the programmer can write, or being too verbose or difficult to use in practice. The type system supports bounded parametric polymorphism where the bounds on type variables can be expressed using general recursive subtype or signature constraints, with F-bounded polymorphism and covariant type parameters being special cases. We implemented this type system in the Cecil language and used it to successfully typecheck a 100,000-line Cecil program, the Vortex optimizing compiler. Our experience was very good: dynamically-typed code needed very little rewriting. We also observed several common programming situations that presented a challenge for our type system. We discuss these situations and ways to typecheck them statically. Keywords: Language design, static type systems, F-bounded polymorphism, where clauses, type constraints, type inference, binary methods, Cecil
Object-Oriented Composition Untangled
- In Proceedings OOPSLA ’01
, 2001
"... Object-oriented languages come with pre-defined composition mechanisms, such as inheritance, object composition, or delegation, each characterized by a certain set of composition properties, which do not themselves individually exist as abstractions at the language level. However, often non-standard ..."
Abstract
-
Cited by 18 (4 self)
- Add to MetaCart
Object-oriented languages come with pre-defined composition mechanisms, such as inheritance, object composition, or delegation, each characterized by a certain set of composition properties, which do not themselves individually exist as abstractions at the language level. However, often non-standard composition semantics is needed, with a mixture of composition properties, which is not provided as such by any of the standard composition mechanisms. Such non-standard semantics are simulated by complicated architectures that are sensitive to requirement changes and cannot easily be adapted without invalidating existing clients. In this paper, we propose compound references, a new abstraction for object references, that allows us to provide explicit linguistic means for expressing and combining individual composition properties on-demand. The model is statically typed and allows the programmer to express a seamless spectrum of composition semantics in the interval between object composition and inheritance. The resulting programs are better understandable, due to explicitly expressed design decisions, and less sensitive to requirement changes.
UpgradeJ: Incremental Typechecking for Class Upgrades
, 2008
"... One of the problems facing developers is the constant evolution of components that are used to build applications. This evolution is typical of any multi-person or multi-site software project. How can we program in this environment? More precisely, how can language design address such evolution? In ..."
Abstract
-
Cited by 18 (1 self)
- Add to MetaCart
One of the problems facing developers is the constant evolution of components that are used to build applications. This evolution is typical of any multi-person or multi-site software project. How can we program in this environment? More precisely, how can language design address such evolution? In this paper we attack two significant issues that arise from constant component evolution: we propose language-level extensions that permit multiple, co-existing versions of classes and the ability to dynamically upgrade from one version of a class to another, whilst still maintaining type safety guarantees and requiring only lightweight extensions to the runtime infrastructure. We show how our extensions, whilst intuitive, provide a great deal of power by giving a number of examples. Given the subtlety of the problem, we formalize a core fragment of our language and prove a number of important safety properties.
Inheritance using contracts and object composition
- In WCOP Workshop on component-based systems at ECOOP 97
, 1997
"... Abstract. Normal class-based code inheritance across component boundaries creates a dependency between the involved components. To avoid this, a speci cation of the inherited class must be part of the respective component's contract and the inheriting class must be speci ed with reference to this sp ..."
Abstract
-
Cited by 16 (0 self)
- Add to MetaCart
Abstract. Normal class-based code inheritance across component boundaries creates a dependency between the involved components. To avoid this, a speci cation of the inherited class must be part of the respective component's contract and the inheriting class must be speci ed with reference to this speci cation only. With this, inheritance can be replaced by object composition without sacri cing the possibility of static analysis, yet being more exible. 1
MultiPerspectives: Object Evolution and Schema Modification Management for Object-Oriented Databases
, 1995
"... Object-oriented databases (OODBs) are believed to more naturally reflect the behavior and organization of complex application domains. The schema consists of a collection of classes, organized into hierarchies which nicely organize abstractions over the domain. Objects are created as instances of cl ..."
Abstract
-
Cited by 16 (3 self)
- Add to MetaCart
Object-oriented databases (OODBs) are believed to more naturally reflect the behavior and organization of complex application domains. The schema consists of a collection of classes, organized into hierarchies which nicely organize abstractions over the domain. Objects are created as instances of classes, encapsulating data and interpretation of data together. An important characteristic is the support for evolutionary programming, and so that existing programs may be extended with new classes without affecting other parts of the system.
Aspects and Polymorphism in AspectJ
- In Proceedings of the 2nd International Conference on Aspect-Oriented Software Development
, 2003
"... There are two important points of view on inclusion or subtype polymorphism in object-oriented programs, namely polymorphic access and dynamic dispatch. These features are essential for objectoriented programming, and it is worthwhile to consider whether they are supported in aspect-oriented program ..."
Abstract
-
Cited by 15 (2 self)
- Add to MetaCart
There are two important points of view on inclusion or subtype polymorphism in object-oriented programs, namely polymorphic access and dynamic dispatch. These features are essential for objectoriented programming, and it is worthwhile to consider whether they are supported in aspect-oriented programming (AOP). In AOP, pieces of crosscutting behavior are extracted from the base code and localized in aspects, losing as a result their polymorphic capabilities while introducing new and unexplored issues. In this paper, we explore what kinds of polymorphism AOP languages should support, using AspectJ as the basis for the presentation. The results are not exclusive to AspectJ—aspectual polymorphism may make aspects in any comparable AOSD language more expressive and reusable across programs, while preserving safety. 1.
Automated Delegation is a Viable Alternative to Multiple Inheritance in Class Based Languages
- in Class Based Languages”, CS-98-03, Microsoft Corporation
, 1998
"... Multiple inheritance is still a controversial feature in traditional object-oriented languages, as evidenced by its omission from such languages as Modula-3, Objective C and Java^TM. Nonetheless, users of such languages often complain about having to work around the absence of multiple inheritanc ..."
Abstract
-
Cited by 14 (0 self)
- Add to MetaCart
Multiple inheritance is still a controversial feature in traditional object-oriented languages, as evidenced by its omission from such languages as Modula-3, Objective C and Java^TM. Nonetheless, users of such languages often complain about having to work around the absence of multiple inheritance. Automating delegation, in combination with a multiple subtyping mechanism, provides many of the same benefits as multiple inheritance, yet sidesteps most of the associated problems. This simple feature could satisfy both the designers and the users of class based object oriented languages. In this paper, we discuss why automated delegation is desirable. We also present Jamie, a freeware preprocessor-based extension to Java that offers such an alternative. Automated Delegation is a Viable Alternative to Multiple Inheritance in Class Based Languages John Viega Dept. Of Computer Science University Of Virginia Charlottesville, VA 22903 viega@list.org Bill Tutt Microsoft Corporat...

