Results 1 - 10
of
34
Prototype-Based Languages: From a New Taxonomy to Constructive Proposals and Their Validation
, 1992
"... Prototype-based languages are currently proposed as a substitute to class-based languages for a higher flexibility in manipulating objects. These languages are all based on a similar set of basic principles: object-centered representation, dynamic addition (deletion) of slots, cloning and message de ..."
Abstract
-
Cited by 33 (6 self)
- Add to MetaCart
Prototype-based languages are currently proposed as a substitute to class-based languages for a higher flexibility in manipulating objects. These languages are all based on a similar set of basic principles: object-centered representation, dynamic addition (deletion) of slots, cloning and message delegation. But they all differ in the precise interpretation of these principles and nobody has yet considered the semantic issues raised by their combination. In this paper, we propose a new taxonomy of prototypebased languages, enhancing the Treaty of Orlando by now discussing issues associated with the different semantics of the identified prototype-based languages. From this taxonomy, we extract a constructive proposal for the design of a new prototype-based language. This proposal is the chief result of this paper; it suggests one set of primitives which is regarded as the best to provide a clean, useful and coherent prototype-based computational model. We finally describe an implementation of most interesting language alternatives in the form of a Smalltalk-80 platform. This platform establishes an operational semantics for the basic primitives and -- more interesting -- validates our previous taxonomy by implementing it as a class hierarchy. Obviously, this platform has been used to relate in the same formalism the semantics of different languages with each others. For instance, the programming models of existing languages, such as Self, ObjectLisp and Actra's examplars, are faithfully derived as subclasses in this hierarchy.
Split Objects: a Disciplined Use of Delegation within Objects
, 1996
"... This paper's primary aim is to improve the understanding of the delegation mechanism as defined in [18]. We propose a new characterization of delegation based on the notions of name sharing, property sharing and value sharing. It allows us (1) to clearly differentiate delegation from classinheritanc ..."
Abstract
-
Cited by 32 (6 self)
- Add to MetaCart
This paper's primary aim is to improve the understanding of the delegation mechanism as defined in [18]. We propose a new characterization of delegation based on the notions of name sharing, property sharing and value sharing. It allows us (1) to clearly differentiate delegation from classinheritance in particular and more generally from other inheritance mechanisms and (2) to explain how a founded use of delegation relies on a correct semantics of variable property sharing between objects connected by a delegation link. We then describe a model of split objects which is proposed as an example of a disciplined and semantically founded use of delegation, where property sharing expresses viewpoints within objects. 1 Introduction All kinds of inheritance mechanisms in objectoriented programming or representation languages, despite their diversities [5, 26], have at least the following common points [11]: ffl They are based on a relation I between objects or between concepts (for exampl...
Organizing programs without classes
- Lisp and Symbolic Computation
, 1991
"... Abstract. All organizational functions carried out by classes can be accomplished in a simple and natural way by object inheritance in classless languages, with no need for special mechanisms. A single model—dividing types into prototypes and traits—supports sharing of behavior and extending or repl ..."
Abstract
-
Cited by 26 (1 self)
- Add to MetaCart
Abstract. All organizational functions carried out by classes can be accomplished in a simple and natural way by object inheritance in classless languages, with no need for special mechanisms. A single model—dividing types into prototypes and traits—supports sharing of behavior and extending or replacing representations. A natural extension, dynamic object inheritance, can model behavioral modes. Object inheritance can also be used to provide structured name spaces for well-known objects. Classless languages can even express “class-based ” encapsulation. These stylized uses of object inheritance become instantly recognizable idioms, and extend the repertory of organizing principles to cover a wider range of programs. 1
An imperative object calculus
- PROC. TAPSOFT'95
, 1995
"... We develop an imperative calculus of objects. Its main type constructor is the one for object types, which incorporate variance annotations and Self types. A subtyping relation between object types supports object subsumption. The type system for objects relies on unusual but beneficial assumptions ..."
Abstract
-
Cited by 24 (5 self)
- Add to MetaCart
We develop an imperative calculus of objects. Its main type constructor is the one for object types, which incorporate variance annotations and Self types. A subtyping relation between object types supports object subsumption. The type system for objects relies on unusual but beneficial assumptions about the possible subtypes of an object type. With the addition of polymorphism, the calculus can express classes and inheritance.
Component Enhancement: An Adaptive Reusability Mechanism for Groups of Collaborating Classes
- INFORMATION PROCESSING '92, 12TH WORLD COMPUTER CONGRESS
, 1992
"... We enhance the Demeter Method for object-oriented software development with the component model for describing the evolution of groups of collaborating classes. The model is based on class dictionary graphs [LBSL91, Ber91] and reusable behavior descriptions which are expressed by propagation in c ..."
Abstract
-
Cited by 20 (15 self)
- Add to MetaCart
We enhance the Demeter Method for object-oriented software development with the component model for describing the evolution of groups of collaborating classes. The model is based on class dictionary graphs [LBSL91, Ber91] and reusable behavior descriptions which are expressed by propagation in class dictionary graphs [LXSL91]. Our experience demonstrates that the component model lifts programming to a higher level of abstraction, it significantly reduces the size of programs and it makes them resilient to change and therefore we propose a reusability mechanism for components. Components are useful for the development of reusable software libraries, for application development, as well as for recording the history of object-oriented programs. An implementation of propagation patterns, which are an important part of components, and related papers are available by ftp [LBH + 91].
Classes vs. Prototypes - Some Philosophical and Historical Observations
- Journal of Object-Oriented Programming
, 1996
"... In this paper we take a rather unusual, non-technical approach and investigate object-oriented programming and the prototype-based programming field from a purely philosophical viewpoint. Some historical facts and observations pertaining to objects and prototypes are presented, and conclusions based ..."
Abstract
-
Cited by 16 (0 self)
- Add to MetaCart
In this paper we take a rather unusual, non-technical approach and investigate object-oriented programming and the prototype-based programming field from a purely philosophical viewpoint. Some historical facts and observations pertaining to objects and prototypes are presented, and conclusions based on those observations are derived.
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.
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...
Declarative programming in a prototype-instance system: object-oriented programming without writing methods
- IN PROC. OOPSLA '92
, 1992
"... Most programming in the Garnet system uses a Over the last three years of using the Garnet system to declarative style that eliminates the need to write new create dozens of large-scale user interfaces, we have methods. One implication is that the interface to ob- ..."
Abstract
-
Cited by 12 (1 self)
- Add to MetaCart
Most programming in the Garnet system uses a Over the last three years of using the Garnet system to declarative style that eliminates the need to write new create dozens of large-scale user interfaces, we have methods. One implication is that the interface to ob-
Modular Inheritance of Objects through Mixin-Methods
- In Proceedings of the 1994 Joint Modular Languages Conference (JMLC
, 1994
"... In object-oriented programming languages the class concept is heavily overworked. To simplify things, there is a tendency to unbundle the different roles they play by trying to create more modular inheritance operators [Bracha&Lindstrom92]. This offers the advantage that classes can be composed in a ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
In object-oriented programming languages the class concept is heavily overworked. To simplify things, there is a tendency to unbundle the different roles they play by trying to create more modular inheritance operators [Bracha&Lindstrom92]. This offers the advantage that classes can be composed in a modular way. Prototype-based languages on the other hand, also provide a simpler view on object-oriented programming, but there modular composition is totally neglected.

