A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Specification matching of software components
ACM Transactions on Software Engineering and Methodology (TOSEM)
A semantic foundation for specification matching
Foundations of component-based systems
JML (poster session): notations and tools supporting detailed design in Java
OOPSLA '00 Addendum to the 2000 proceedings of the conference on Object-oriented programming, systems, languages, and applications (Addendum)
Design by contract, by example
Design by contract, by example
Contract Soundness for object-oriented languages
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Designing an Object-Oriented Programming Language with Behavioural Subtyping
Proceedings of the REX School/Workshop on Foundations of Object-Oriented Languages
NORA/HAMMR: making deduction-based software component retrieval practical
ASE '97 Proceedings of the 12th international conference on Automated software engineering (formerly: KBSE)
Semantics of OCL Operation Specifications
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.89 |
The redefinition of a method in subclasses can completely change the semantics of the superclass method unless there are effective mechanisms that enforce the preservation of behavioral properties. Several approaches to behavioral subtyping-exact pre-post match, plug-in match, relaxed plug-in match among others-exist that enforce the preservation of behavioral properties. To maintain or weaken pre-conditions and to maintain or enforce post-conditions when redefining methods in extended classes-plug-in match-is the solution that is adopted, by construction, in the Eiffel language, among other assertion languages. This approach forbids the specification of a class of legitimate programs from which we present an example. We claim that relaxed plug-in match should be enforced instead, in order to accommodate these examples. Other approaches exist, as is the case of case analysis in JML and OCL, that allow the specification of those programs, but they do it at the cost of decreasing software extension. We propose a new way of building contracts that identify and express, in a natural and elegant way, the several contributions that method redefinition can bring, and that are expressive enough to specify extensible contracts for the above mentioned class of programs. These contracts ensure, by construction, that redefinition preserves behavioral properties.