Results 1 -
8 of
8
The Programming Language Jigsaw: Mixins, Modularity And Multiple Inheritance
, 1992
"... This dissertation provides a framework for modularity in programming languages. In this framework, known as Jigsaw, inheritance is understood to be an essential linguistic mechanism for module manipulation. In Jigsaw, the roles of classes in existing languages are "unbundled," by providing a suite o ..."
Abstract
-
Cited by 138 (4 self)
- Add to MetaCart
This dissertation provides a framework for modularity in programming languages. In this framework, known as Jigsaw, inheritance is understood to be an essential linguistic mechanism for module manipulation. In Jigsaw, the roles of classes in existing languages are "unbundled," by providing a suite of operators independently controlling such effects as combination, modification, encapsulation, name resolution, and sharing, all on the single notion of module. All module operators are forms of inheritance. Thus, inheritance is not in conflict with modularity in this system, but is indeed its foundation. This allows a previously unobtainable spectrum of features to be combined in a cohesive manner, including multiple inheritance, mixins, encapsulation and strong typing. Jigsaw has a rigorous semantics, based upon a denotational model of inheritance. Jigsaw provides a notion of modularity independent of a particular computational paradigm. Jigsaw can therefore be applied to a wide variet...
A Paradigmatic Object-Oriented Programming Language: Design, Static Typing and Semantics
- Journal of Functional Programming
, 1993
"... In order to illuminate the fundamental concepts involved in object-oriented programming languages, we describe the design of TOOPL, a paradigmatic, statically-typed, functional, object-oriented programming language which supports classes, objects, methods, hidden instance variables, subtypes, and in ..."
Abstract
-
Cited by 110 (9 self)
- Add to MetaCart
In order to illuminate the fundamental concepts involved in object-oriented programming languages, we describe the design of TOOPL, a paradigmatic, statically-typed, functional, object-oriented programming language which supports classes, objects, methods, hidden instance variables, subtypes, and inheritance. It has proven to be quite difficult to design such a language which has a secure type system. A particular problem with statically type checking object-oriented languages is designing type-checking rules which ensure that methods provided in a superclass will continue to be type correct when inherited in a subclass. The type-checking rules for TOOPL have this feature, enabling library suppliers to provide only the interfaces of classes with actual executable code, while still allowing users to safely create subclasses. In order to achieve greater expressibility while retaining type-safety, we choose to separate the inheritance and subtyping hierarchy in the language. The design of...
Modularity meets Inheritance
- IN PROC. INTERNATIONAL CONFERENCE ON COMPUTER LANGUAGES
, 1992
"... We "unbundle" several roles of classes in existing languages, by providing a suite of operators independently controlling such effects as combination, modification, encapsulation, name resolution, and sharing, all on the single notion of module. All module operators are forms of inheritance. Thus, ..."
Abstract
-
Cited by 86 (8 self)
- Add to MetaCart
We "unbundle" several roles of classes in existing languages, by providing a suite of operators independently controlling such effects as combination, modification, encapsulation, name resolution, and sharing, all on the single notion of module. All module operators are forms of inheritance. Thus, inheritance not only is not in conflict with modularity in our system, but is its foundation. This allows a previously unobtainable spectrum of features to be combined in a cohesive manner, including multiple inheritance, mixins, encapsulation and strong typing. We demonstrate our approach in a language (called Jigsaw, as in the tool, not the puzzle!). Our language is modular in two senses: it manipulates modules, and it is highly modular in its own conception, permitting various module combinators to be included, omitted, or newly constructed in various realizations.
Towards an Object Calculus
, 1991
"... The development of concurrent object-based programmig languages has suffered from the lack of any generally accepted formal foun ion for de finn their semantics. Furthermore, the delicate relation p between object-oriented features supportin reuse an operation features con n g in teraction a n state ..."
Abstract
-
Cited by 47 (8 self)
- Add to MetaCart
The development of concurrent object-based programmig languages has suffered from the lack of any generally accepted formal foun ion for de finn their semantics. Furthermore, the delicate relation p between object-oriented features supportin reuse an operation features con n g in teraction a n state chan is poorlyun rstood in a con urren t settin To address this problem, we propose the developmen t of an object calculus, borrowi n heavily from relevan t work in the area of process calculi. To this en we briefly review some of this work, we pose some i ormal requiremen ts for an object calculus, an we present the syntax, operation seman tics an use through examples of a proposed object calculus, called OC.
Dynamic Object Evolution without Name Collisions
- In Proceedings ECOOP ’97, LNCS 1241
, 1997
"... . Support for modular evolution of objects is required in many application areas. However, existing mechanisms for incremental behavior composition either do not support evolving objects at all, or do not satisfactorily solve the encapsulation and name collision problems associated with them. In thi ..."
Abstract
-
Cited by 36 (5 self)
- Add to MetaCart
. Support for modular evolution of objects is required in many application areas. However, existing mechanisms for incremental behavior composition either do not support evolving objects at all, or do not satisfactorily solve the encapsulation and name collision problems associated with them. In this paper, a new approach to behavior composition in a class-based environment is presented. It is based on the encapsulated object model of class-based inheritance, but introduces an additional abstraction layer between objects and classes. By being responsible for the compositional aspects of the behavior of objects, this layer provides support for the evolution of behavior while at the same time solving the name conflicts that may occur. A formal description of the approach is provided and its feasibility is demonstrated by implementing it as a metalevel extension of Smalltalk-80. 1 Introduction In several object-oriented application areas, support for dynamic and incremental evolution of ...
A Natural Semantics for Eiffel Dynamic Binding
, 1996
"... This article formally defines Eiffel dynamic binding in presence of... ..."
Abstract
-
Cited by 17 (1 self)
- Add to MetaCart
This article formally defines Eiffel dynamic binding in presence of...
Supporting Evolving Objects Without Giving Up Classes
- TOOLS ‘95 Proceedings
, 1995
"... There are two main models of inheritance employed in object-oriented systems: class-based and object-based inheritance. Although classbased inheritance is beneficial for providing abstractions to encapsulate, classify and structure objects, it is too rigid to deal with the dynamic and unanticipated ..."
Abstract
-
Cited by 5 (2 self)
- Add to MetaCart
There are two main models of inheritance employed in object-oriented systems: class-based and object-based inheritance. Although classbased inheritance is beneficial for providing abstractions to encapsulate, classify and structure objects, it is too rigid to deal with the dynamic and unanticipated incremental modifications required in application domains where the functionality of objects is supposed to evolve. In contrast, object-based inheritance is particularly suitable in situations where the dynamic evolution of objects is desired, but this is achieved at the expense of an object model which does not maintain the encapsulation property. In this paper, we propose a new approach for supporting evolving objects while preserving the advantages of the class-based model. The approach is based on maintaining the object-class separation of the class-based model and on introducing an additional abstraction level between objects and their class. The new abstraction relaxes the static objec...
Programming Objects with ML-ART
, 1994
"... and Record Types Didier R'emy INRIA-Rocquencourt, BP 105, F-78153 Le Chesnay Cedex. To appear in TACS'94 Abstract. Class-based objects can be programmed directly and efficiently in a simple extension to ML. The representation of objects, based on abstract and record types, allows all usual op ..."
Abstract
- Add to MetaCart
and Record Types Didier R'emy INRIA-Rocquencourt, BP 105, F-78153 Le Chesnay Cedex. To appear in TACS'94 Abstract. Class-based objects can be programmed directly and efficiently in a simple extension to ML. The representation of objects, based on abstract and record types, allows all usual operations such as multiple inheritance, object returning capability, and message transmission to themselves as well as to their super classes. There is, however, no implicit coercion from objects to corresponding ones of super-classes. A simpler representation of objects without recursion on values is also described. The underlying language extends ML with recursive types, existential and universal types, and mutable extensible records. The language ML-ART is given with a call-by-value semantics for which type soundness is proved. Introduction An important motivator for type-checking extensible records is their application to object encoding. Initiated by Cardelli in 1984 [Car84], c...

