A semantics of the separation of interface and implementation in C++

C++ uses 'class' as the basis of 'subtype polymorphism' and 'inheritance', but it has been pointed out that the overloading of 'class' limits the expressiveness and makes its type system inflexible. This means that C++ and some other object oriented languages had to separate a class into two modules-an interface and an implementation. But, there seems to be no leading C++ model for separating the interface lattice from the implementation lattice. Moreover none of the proposed models describe the result of the separation in a formal way. As a result it is hard to understand what the type space would be like after the separation. The paper presents a formal model for the separation of interface and implementation in C++, and which explains the properties of the resulting type space after the separation.

[1]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[2]  Hamid Pirahesh,et al.  Extensibility in the Starburst Database System , 1986, OODBS.

[3]  Bjarne Stroustrup,et al.  The C++ Programming Language, Second Edition , 1991 .

[4]  William R. Cook Interfaces and specifications for the Smalltalk-80 collection classes , 1992, OOPSLA 1992.

[5]  William R. Cook,et al.  Interfaces and specifications for the Smalltalk-80 collection classes , 1992, OOPSLA.

[6]  Brian W. Kernighan,et al.  The C Programming Language, Second Edition , 1988 .

[7]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[8]  François Bancilhon,et al.  Building an Object-Oriented Database System, The Story of O2 , 1992 .

[9]  Dave Thomas,et al.  An exemplar based Smalltalk , 1986, OOPSLA 1986.

[10]  Vincent F. Russo,et al.  Signature-Based Polymorphism for C++ , 1993, C++ Conference.

[11]  B. Martin The Separation of Interface and Implementation in C++ , 1991, C++ Conference.

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

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

[14]  E. B. SPRATT Programming Linguistics , 1968, Nature.

[15]  Giuseppe Castagna,et al.  Covariance and contravariance: conflict without a cause , 1995, TOPL.

[16]  Richard C. H. Connor,et al.  Type Equivalence Checking in Persistent Object Systems , 1990, POS.

[17]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPLSA '86.