Abstraction and specification in program development
Abstraction and specification in program development
Adequate testing and object-oriented programming
Journal of Object-Oriented Programming
Typing the specialization interface
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Software component design-for-reuse: a language-independent discipline applied to ADA
Software component design-for-reuse: a language-independent discipline applied to ADA
Reusable software: the Base object-oriented component libraries
Reusable software: the Base object-oriented component libraries
Object-oriented specification case studies
Object-oriented specification case studies
Part III: implementing components in RESOLVE
ACM SIGSOFT Software Engineering Notes
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Component-based software using RESOLVE
ACM SIGSOFT Software Engineering Notes
Smalltalk with style
Modular reasoning in the presence of subclassing
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Object-Oriented Software Construction
Object-Oriented Software Construction
A New Definition of the Subtype Relation
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
ECOOP '94 Proceedings of the 8th European Conference on Object-Oriented Programming
Research Frontiers in Object Technology
Information Systems Frontiers
Guest Editorial: Introduction to the Special Section
IEEE Transactions on Software Engineering
Component-based workflow systems development
Decision Support Systems
Contract-Checking Wrappers for C++ Classes
IEEE Transactions on Software Engineering
Hi-index | 0.00 |
There are two approaches to using code inheritance for defining new component implementations in terms of existing implementations. Black box code inheritance allows subclasses to reuse superclass implementations as-is, without direct access to their internals. Alternatively, white box code inheritance allows subclasses to have direct access to superclass implementation details, which may be necessary for the efficiency of some subclass operations and to prevent unnecessary duplication of code.Unfortunately, white box code inheritance violates the protection that encapsulation affords superclasses, opening up the possibility of a subclass interfering with the correct operation of its superclass' methods. Representation inheritance is proposed as a restricted form of white box code inheritance where subclasses have direct access to superclass implementation details, but are required to respect the representation invariant(s) and abstraction relation(s) of their ancestor(s). This preserves the protection that encapsulation provides, while allowing the freedom of access that component implementers sometimes desire.