A modified inheritance mechanism enhancing reusability and maintainability in object-oriented languages

In object-oriented languages, encapsulation and inheritance play an important part for software reusability and maintainability. The separation of subtyping and inheritance makes inheritance a more flexible mechanism reusing code. The main enhanced flexibility is that it is allowed for subclasses to redefine inherited methods to change their specifications. However, it results in an encapsulation issue derived from the semantics of inheritance, which compromises severely reusability and maintainability in object-oriented languages. The authors present a modified inheritance mechanism which overcomes this encapsulation issue, and give its denotational semantics. This modified inheritance mechanism has been introduced in NDOOP, an object-oriented extension of Pascal bing developed by them.

[1]  Norman Wilde,et al.  Maintenance Support for Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[2]  Mario Wolczko Encapsulation, delegation and inheritance in object-oriented languages , 1992, Softw. Eng. J..

[3]  L. Estep,et al.  Profile models of the diffuse attenuation coefficient , 1992 .

[4]  Pierre America,et al.  A parallel object-oriented language with inheritance and subtyping , 1990, OOPSLA/ECOOP '90.

[5]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPSLA 1986.

[6]  Zheng Guoliang,et al.  Introducing virtual instance variables in classes to provide sufficient support for encapsulation , 1995 .

[7]  Jens Palsberg,et al.  A Denotational Semantics of Inheritance and its Correctness , 1989, OOPSLA.

[8]  Steven P. Reiss,et al.  Support for Maintaining Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[9]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[10]  William R. Cook,et al.  Interfaces for strongly-typed object-oriented programming , 1989, OOPSLA 1989.

[11]  Jens Palsberg,et al.  A Denotational Semantics af Inheritance and its Correctness , 1989 .

[12]  James M. Armstrong,et al.  Uses and abuses of inheritance , 1994, Softw. Eng. J..

[13]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[14]  Stanley B. Zdonik,et al.  Inheritance as an Incremental Modification Mechanism or What Like Is and Isn't Like , 1988, ECOOP.

[15]  Alan Snyder Encapsulation and inheritance in object-oriented programming languages , 1986, OOPSLA 1986.

[16]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.

[17]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[18]  Roberto Ierusalimschy,et al.  A Denotational Approach for Type-Checking in Object-Oriented Programming Languages , 1993, Comput. Lang..

[19]  Roberto Ierusalimschy,et al.  Types in school , 1993, SIGP.

[20]  John Lamping,et al.  Typing the specialization interface , 1993, OOPSLA '93.

[21]  Elspeth Cusack,et al.  Inheritance in Object-Oriented Z , 1991, ECOOP.