In nominal type systems, the subtype relation is between names of types, and subtype links are explicitly declared. In structural type systems, names are irrelevant; in determining type compatibility, only the structure of types is considered, and a type name is just an abbreviation for the full type. We analyze structural and different flavors of nominal subtyping from the perspective of component-based programming, where issues such as blame assignment and modular extensibility are important. Our analysis puts various existing subtyping mechanisms into a common frame of reference and delineates the frontiers of the subtyping design space. In addition, we propose a new subtyping definition in one particularly interesting corner of the design space which combines the safety of nominal subtyping with the flexibility of structural subtyping.
Note: Due to the typographical sophistication of this article, no HTML version is available. Please use the PDF version.
About the authors
Cite this article as follows: Klaus Ostermann: "Nominal and Structural Subtyping in Component-Based Programming", in Journal of Object Technology, vol. 7, no. 1, January-February 2007, pp. 121-145, http://www.jot.fm/issues/issue_2008_01/article4/