Results 1 -
6 of
6
Predicate Classes
, 1993
"... . Predicate classes are a new linguistic construct designed to complement normal classes in objectoriented languages. Like a normal class, a predicate class has a set of superclasses, methods, and instance variables. However, unlike a normal class, an object is automatically an instance of a predica ..."
Abstract
-
Cited by 117 (8 self)
- Add to MetaCart
. Predicate classes are a new linguistic construct designed to complement normal classes in objectoriented languages. Like a normal class, a predicate class has a set of superclasses, methods, and instance variables. However, unlike a normal class, an object is automatically an instance of a predicate class whenever it satisfies a predicate expression associated with the predicate class. The predicate expression can test the value or state of the object, thus supporting a form of implicit property-based classification that augments the explicit type-based classification provided by normal classes. By associating methods with predicate classes, method lookup can depend not only on the dynamic class of an argument but also on its dynamic value or state. If an object is modified, the property-based classification of an object can change over time, implementing shifts in major behavior modes of the object. A version of predicate classes has been designed and implemented in the context of t...
Emerald: A General-Purpose Programming Language
, 1991
"... data types Inheritance Object-based concurrency 1. ..."
Abstract
-
Cited by 29 (3 self)
- Add to MetaCart
data types Inheritance Object-based concurrency 1.
Strong Typing of Object-Oriented Languages Revisited
- In OOPSLA-ECOOP '90 Proceedings, pages 140--150. ACM SIGPLAN Notices,25(10
, 1990
"... This paper is concerned with the relation between subtyping and subclassing and their inuence on programming language design. Traditionally subclassing as introduced by Simula has also been used for dening a hierarchical type system. The type system of a language can be characterized as strong o ..."
Abstract
-
Cited by 25 (1 self)
- Add to MetaCart
This paper is concerned with the relation between subtyping and subclassing and their inuence on programming language design. Traditionally subclassing as introduced by Simula has also been used for dening a hierarchical type system. The type system of a language can be characterized as strong or weak and the type checking mechanism as static or dynamic. Parameterized classes in combination with a hierarchical type-system is an example of a language construct that is known to create complicated type checking situations. In this paper these situations are analyzed and several dierent solutions are found. It is argued that an approach with a combination of static and dynamic type checking gives a reasonable balance also here. It is also concluded that this approach makes it possible to base the type system on the class/subclass mechanism. 2 1 Introduction The purpose of this paper is to contribute to the clarication of typing issues in object-oriented languages. The is...
Attaching Second-Order Types to Methods in an Object-Oriented Language
- In In ECOOP '93 Conference Proceedings
, 1993
"... This paper proposes an extension of the notion of method as it is currently used in most objectoriented languages. We define polymethods as methods that we can attach directly to types, as opposed to classes and that we can describe with a second-order type. Two benefits result from this extension; ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
This paper proposes an extension of the notion of method as it is currently used in most objectoriented languages. We define polymethods as methods that we can attach directly to types, as opposed to classes and that we can describe with a second-order type. Two benefits result from this extension; first, the expressive power of the language is improved with better modeling abilities. Next, secondorder types yield a more powerful (precise) type inference, which extends the range of static type checking in a truly extensible object-oriented language. We first show that extensible object-oriented languages present many difficulties for static type-checking and that second-order types are necessary to get stronger type-checking. We illustrate how to combine polymethods through type inheritance and propose a technique based on abstract interpretation to derive a second-order type for new polymethods. 1. Introduction Object-oriented languages have two interesting features that distinguish ...
Developments in Object-Oriented Type Systems
, 1994
"... data types are employed in [86, 85]; their relation to classes is discussed earlier in [31]. Large languages are presented in [13, 11]. Slide 86 Type inference for simple subtyping is developed in [69, 102, 59, 74, 105, 55, 104]. Slide 88--94 Class inference is developed in [101, 45, 79, 76, 4]. Sli ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
data types are employed in [86, 85]; their relation to classes is discussed earlier in [31]. Large languages are presented in [13, 11]. Slide 86 Type inference for simple subtyping is developed in [69, 102, 59, 74, 105, 55, 104]. Slide 88--94 Class inference is developed in [101, 45, 79, 76, 4]. Slide 96 ML modules are described in [67, 106]. Slide 97 Approaches to genericity are discussed in [63, 49, 61, 73, 83]. Annotated Bibliography 104 Slide 98 Multi-methods are presented in [53, 72, 24, 25]. Slide 99 The Self language is described in [108, 26, 27, 28, 48, 3]. References ...
OBJECT ORIENTED PROGRAMMING: INHERITANCE TO ADOPTION
, 1991
"... Object oriented programming is recognized for its ability to inherit and reuse code and this is reflected by its widespread adoption by the industry in the recent years. A high degree of reusability makes it especially suited for developing and maintaining large software. But as programs get larger, ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Object oriented programming is recognized for its ability to inherit and reuse code and this is reflected by its widespread adoption by the industry in the recent years. A high degree of reusability makes it especially suited for developing and maintaining large software. But as programs get larger, static type-checking becomes imperative, and this has been a concern of the OOP community from the beginning. However, as illustrated by the language Eiffel, the flexibility of inheritance appears to conflict with a language being statically type-checkable. In this thesis, we generalize the notion of inheritance and delegation, and use this generalization to propose an applicative object oriented programming language which accomodates updating of instance variables and a flexible message passing mechanism. The proposed message passing mechanism uses the type declaration information to appropriately alter the message passing semantics in a type sensitive manner. A particular implication of such a system is the notion of adoption, where an object could get adopted by a context thus giving an orphan object some features of the context. Inheritance with adoption results in a desirable solution to static type-checking in several contexts when inherited types are not subtypes. A flexible and statically type-checkable applicative OOPL is developed to demonstrate the utility of adoption with inheritance. This language is described using ASF+SDF, an algebraic specification formalism. 2

