Results 1 - 10
of
33
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 Programmer's Reduction Semantics for Classes and Mixins
, 1999
"... While class-based object-oriented programming languages provide a flexible mechanism for re-using and managing related pieces of code, they typically lack linguistic facilities for specifying a uniform extension of many classes with one set of fields and methods. As a result, programmers are unable ..."
Abstract
-
Cited by 81 (8 self)
- Add to MetaCart
While class-based object-oriented programming languages provide a flexible mechanism for re-using and managing related pieces of code, they typically lack linguistic facilities for specifying a uniform extension of many classes with one set of fields and methods. As a result, programmers are unable to express certain abstractions over classes. In this paper we develop a model of class-to-class functions that we refer to as mixins. A mixin function maps a class to an extended class by adding or overriding fields and methods. Programming with mixins is similar to programming with single inheritance classes, but mixins more directly encourage programming to interfaces. The paper develops these ideas within the context of Java. The results are 1. an intuitive model of an essential Java subset; 2. an extension that explains and models mixins; and 3. type soundness theorems for these languages. 1 Organizing Programs with Functions and Classes Object-oriented programming languages offer classes, inheritance, and overriding to parameterize over program pieces for management purposes and re-use. Functional programming languages provide various flavors of functional abstractions for the same purpose. The latter model was developed from a well-known, highly developed mathematical theory. The former grew in response to the need to manage large programs and to re-use as many components as possible. Each form of parameterization is useful for certain situations. With higherorder functions, a programmer can easily define many functions that share a similar core but differ in a few details. As many language designers and programmers readily acknowledge, however, the functional approach to parameterization is best used in situations with a relatively small number of parameters. When ...
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 ...
Coupling and Cohesion in Object-Oriented Systems
, 1992
"... Object-oriented system development is gaining wide attention both in research environments and in industry. A severe problem encountered, however, is the quickly increasing complexity of such systems and the lack of adequate criteria and guidelines for "good" designs. To cope with this problem, it i ..."
Abstract
-
Cited by 33 (1 self)
- Add to MetaCart
Object-oriented system development is gaining wide attention both in research environments and in industry. A severe problem encountered, however, is the quickly increasing complexity of such systems and the lack of adequate criteria and guidelines for "good" designs. To cope with this problem, it is imperative to better understand the properties and characteristics of object-oriented systems. In this paper, we extend the concepts of coupling and cohesion developed initially for procedure-oriented systems to object-oriented systems. Coupling describes the interdependency between methods and between object classes, respectively. Cohesion describes the binding of the elements within one method and within one object class, respectively. We introduce a comprehensive taxonomy of coupling and cohesion properties of object-oriented systems and provide guidelines for improving these properties. CR Classification: D.1.5 [Software]: Object-Oriented Programming; D.2.3 [Soft- ware]: Coding -- sta...
Type Substitution for Object-Oriented Programming
- In Proc. OOPSLA/ECOOP'90, ACM SIGPLAN Fifth Annual Conference on Object-Oriented Programming Systems, Languages and Applications; European Conference on Object-Oriented Programming
, 1990
"... Genericity allows the substitution of types in a class. This is usually obtained through parameterized classes, although they are inflexible since any class can be inherited but is not in itself parameterized. We suggest a new genericity mechanism, type substitution, which is a subclassing concept t ..."
Abstract
-
Cited by 29 (5 self)
- Add to MetaCart
Genericity allows the substitution of types in a class. This is usually obtained through parameterized classes, although they are inflexible since any class can be inherited but is not in itself parameterized. We suggest a new genericity mechanism, type substitution, which is a subclassing concept that complements inheritance: any class is generic, can be "instantiated" gradually without planning, and has all of its generic instances as subclasses. 1 Introduction This paper proposes type substitution as a new genericity mechanism for statically typed object-oriented languages. With this concept we avoid type variables and second-order entities and obtain the natural complement of inheritance; both are subclassing mechanisms and they differ as follows. ffl Inheritance. Construction of subclasses by adding variables and procedures, and by replacing procedure bodies. ffl Type substitution. Construction of subclasses by substituting types. Type substitution is supportive of the real-li...
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.
Programming Languages for Reusable Software Components
, 1999
"... Programming languages offer a variety of constructs to support code reuse. For example, functional languages provide function constructs for encapsulating expressions to be used in multiple contexts. Similarly, object-oriented languages provide class (or class-like) constructs for encapsulating sets ..."
Abstract
-
Cited by 24 (0 self)
- Add to MetaCart
Programming languages offer a variety of constructs to support code reuse. For example, functional languages provide function constructs for encapsulating expressions to be used in multiple contexts. Similarly, object-oriented languages provide class (or class-like) constructs for encapsulating sets of definitions that are easily adapted for new programs. Despite the variety and abundance of such programming constructs, however, existing languages are ill-equipped to support component programming with reusable software components. Component programming differs from other forms of reuse in its emphasis on the independent development and deployment of software components. In its ideal form, component programming means building programs from off-the-shelf components that are supplied by a software-components industry. This model suggests a strict separation between the producer and consumer of a component. The separation, in turn, implies separate compilation for components, allowing a pr...
Experimental Assessment of the Effect of Inheritance on the Maintainability of Object-Oriented Systems
- University of Keele
, 1999
"... In this paper, we describe an empirical investigation into the modifiability and understandability of ObjectOriented (OO) software. A controlled experiment was conducted to establish the effects of varying levels of inheritance on understandability and modifiability. The software used in this exper ..."
Abstract
-
Cited by 21 (5 self)
- Add to MetaCart
In this paper, we describe an empirical investigation into the modifiability and understandability of ObjectOriented (OO) software. A controlled experiment was conducted to establish the effects of varying levels of inheritance on understandability and modifiability. The software used in this experiment consisted of a C++ system without any inheritance and a corresponding version containing three levels of inheritance, as well as a second larger C++ system without inheritance and a corresponding version with five levels of inheritance. For both of the systems, the application modelled a database for a University personnel system. A number of statistical hypotheses were tested. Results indicated that the systems without inheritance were easier to modify than the corresponding systems containing three or five levels of inheritance. Also, it was easier to understand the system without inheritance than a corresponding version containing three levels of inheritance. Results also indicated...
Towards Security in an Open Systems Federation
- In Proceedings of the European Symposium on Research in Computer Security
, 1992
"... This paper argues that security design for Open Distributed Processing (ODP) would benefit from a shift of focus from the infrastructure to individual servers as the owners and enforcers of security policy. It debates the policy nuances, mechanisms, and protocol design consequences, that would follo ..."
Abstract
-
Cited by 20 (4 self)
- Add to MetaCart
This paper argues that security design for Open Distributed Processing (ODP) would benefit from a shift of focus from the infrastructure to individual servers as the owners and enforcers of security policy. It debates the policy nuances, mechanisms, and protocol design consequences, that would follow from such a change of emphasis. In ODP, physically separate systems federate into heterogeneous networks of unlimited scale, so there can be no central authority, nor ubiquitous security infrastructure. Servers that offer, trade, supply and consume services must maintain their own security policies and defend themselves. For servers to take security policy and enforcement decisions, design is concerned with how they might seek advice and guidance from higher authority. This contrasts with an administrator imposed policy on a closed homogeneous network, where an infrastructure enforces administrator declared access rights to potential clients, including rights to delegate rights. 1
Static Typing for Object-Oriented Programming
- SCIENCE OF COMPUTER PROGRAMMING
, 1994
"... We develop a theory of statically typed object-oriented languages. It represents classes as labeled, regular trees, types as finite sets of classes, and subclassing as a partial order on trees. We show that our subclassing order strictly generalizes inheritance, and that a novel genericity mechan ..."
Abstract
-
Cited by 18 (6 self)
- Add to MetaCart
We develop a theory of statically typed object-oriented languages. It represents classes as labeled, regular trees, types as finite sets of classes, and subclassing as a partial order on trees. We show that our subclassing order strictly generalizes inheritance, and that a novel genericity mechanism arises as an order-theoretic complement. This mechanism, called class substitution, is pragmatically useful and can be implemented efficiently.

