2000
DOI: 10.1007/s001650070034
|View full text |Cite
|
Sign up to set email alerts
|

Class Refinement as Semantics of Correct Object Substitutability

Abstract: Abstract. Subtype polymorphism, based on syntactic conformance of objects' methods and used for substituting subtype objects for supertype objects, is a characteristic feature of the object-oriented programming style. While certainly very useful, typechecking of syntactic conformance of subtype objects to supertype objects is insufficient to guarantee correctness of object substitutability. In addition, the behaviour of subtype objects must be constrained to achieve correctness. In class… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
22
0

Year Published

2002
2002
2012
2012

Publication Types

Select...
5
1
1

Relationship

1
6

Authors

Journals

citations
Cited by 20 publications
(22 citation statements)
references
References 10 publications
0
22
0
Order By: Relevance
“…For example, Mikhajlova et al [MS97,BMvW00] consider data refinement in an object-oriented language, but their coupling invariants only relate the fields in a class and a subclass, not any other objects in the heap accessible via those fields. Similarly, Grandy et al use the KIV tool to do refinement for Java programs, but the concrete programs contain all new classes, not instances of previously defined classes [GSR07].…”
Section: Related Workmentioning
confidence: 99%
“…For example, Mikhajlova et al [MS97,BMvW00] consider data refinement in an object-oriented language, but their coupling invariants only relate the fields in a class and a subclass, not any other objects in the heap accessible via those fields. Similarly, Grandy et al use the KIV tool to do refinement for Java programs, but the concrete programs contain all new classes, not instances of previously defined classes [GSR07].…”
Section: Related Workmentioning
confidence: 99%
“…The calculus relates the classic notions of refinement and data refinement [3,16,27] in imperative languages to refactoring and object-oriented design patterns for responsibility assignments [9,19] This takes the initial attempts in formalisation of refactoring in [29,32] a step forward by providing a formal semantic justification of the soundness of the refactoring rules, and advance the theories in [4,5,6,30] on object-oriented refinement to deal with large scale object-oriented program refinement with refactoring, functionality delegation, data encapsulation and class decomposition. Within the calculus, we have already proved the soundness of several design patterns, including Expert pattern, Low Coupling pattern, and High Cohesion pattern [12].…”
Section: Initial Progressmentioning
confidence: 99%
“…In our work, we were inspired by the ideas presented by Mikhajlova and Sekerinski (1997), Back et al (2000), and Michajlova (1998). In these works, refinement calculus is used for the formalization of object-oriented program development.…”
Section: Formal Semantics For 'Seam'mentioning
confidence: 99%
“…Börger and Stärk (2003) introduce the Abstract State Machine method of abstract refinable system specifications. Refinement formalization for object-oriented programs using refinement calculus is presented by Mikhajlova and Sekerinski (1997), Back et al (2000), and Michajlova (1998). Back(2005) proposes a method of incremental software construction using refinement diagrams.…”
Section: Related Workmentioning
confidence: 99%