Object-oriented concurrent programming ABCL/1
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Unifying functional, object-oriented and relational programming with logical semantics
Research directions in object-oriented programming
Concurrent term rewriting as a model of computation
Proc. of a workshop on Graph reduction
Concurrent object-oriented programming in Act 1
Object-oriented concurrent programming
Concurrent programming using actors
Object-oriented concurrent programming
Inheritance and synchronization with enabled-sets
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
A logical theory of concurrent objects
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Information and Computation
Concurrency and reusability: from sequential to parallel
Journal of Object-Oriented Programming
Handbook of theoretical computer science (vol. B)
COCS '91 Proceedings of the conference on Organizational computing systems
Conditional rewriting logic as a unified model of concurrency
Selected papers of the Second Workshop on Concurrency and compositionality
Communication mechanism on autonomous objects
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
Order-sorted algebra solves the constructor-selector, multiple representation, and coercion problems
Information and Computation
Analysis of inheritance anomaly in object-oriented concurrent programming languages
Research directions in concurrent object-oriented programming
A logical theory of concurrent objects and its realization in the Maude language
Research directions in concurrent object-oriented programming
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Inheritance of Synchronization Constraints in Concurrent Object-Oriented Programming Languages
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Parallel Programmming in Maude
Research Directions in High-Level Parallel Programming Languages
Compiling Concurrent Rewriting onto the Rewrite Rule Machine
Proceedings of the 2nd International CTRS Workshop on Conditional and Typed Rewriting Systems
Concurrency annotations for reusable software
Communications of the ACM
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
ACM SIGICE Bulletin
CLOWN as a testbed for concurrent object-oriented concepts
Concurrent object-oriented programming and petri nets
A concurrency abstraction model for avoiding inheritance anomaly in object-oriented programs
Compiler optimizations for scalable parallel systems
Inheritance in concurrent objects
Formal methods for distributed processing
Jeeg: a programming language for concurrent objects synchronization
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
A component-based Petri net model for specifying and validating cooperative information systems
Data & Knowledge Engineering
Rewriting logic: roadmap and bibliography
Theoretical Computer Science - Rewriting logic and its applications
Maude: specification and programming in rewriting logic
Theoretical Computer Science - Rewriting logic and its applications
A Maude specification of an object-oriented model for telecommunication networks
Theoretical Computer Science - Rewriting logic and its applications
Support for Extensibility and Reusability in a Concurrent Object-Oriented Programming Language
IPPS '96 Proceedings of the 10th International Parallel Processing Symposium
Object Protocols as Functional Parsers
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Using Metaobject Protocols to Implement Atomic Data Types
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Behavioral Compatibility of Self-Typed Theories
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Decision Procedure for Temporal Logic of Concurrent Objects
Euro-Par '99 Proceedings of the 5th International Euro-Par Conference on Parallel Processing
A Partial Order Event Model for Concurrent Objects
CONCUR '99 Proceedings of the 10th International Conference on Concurrency Theory
Hierarchies in Object Oriented Conceptual Modeling
OOIS '02 Proceedings of the Workshops on Advances in Object-Oriented Information Systems
Formally based modeling and inheritance of behaviour in object-oriented systems
Journal of Systems and Software
Hi-index | 0.02 |
The inheritance anomaly [23] refers to the serious difficulty in combining inheritance and concurrency in a simple and satisfactory way within a concurrent object-oriented language. The problem is closely connected with the need to impose synchronization constraints on the acceptance of a message by an object. In most concurrent object-oriented languages this synchronization is achieved by synchronization code controlling the acceptance of messages by objects. Synchronization code is often hard to inherit and tends to require extensive redefinitions. The solutions that have appeared so far in the literature to alleviate this problem seem to implicitly assume that better, more reusable, mechanisms are needed to create and structure synchronization code. The approach taken in this paper is to consider the inheritance anomaly as a problem caused by the very presence of synchronization code. The goal is then to completely eliminate synchronization code. This is achieved by using order-sorted rewriting logic, an abstract model of concurrent computation that is machine-independent and extremely fine grain, and that can be used directly to program concurrent object-oriented systems. Our proposed solution involves a distinction between two different notions of inheritance, a type-theoretic one called class inheritance, and a notion called module inheritance that supports reuse and modification of code. These two different notions address two different ways in which the inheritance anomaly can appear; for each of them we propose declarative solutions in which no explicit synchronization code is ever used.