An Overview of Nominal-Typing versus Structural-Typing in OOP
Moez A. AbdelGawad

TL;DR
This paper compares nominal and structural typing in object-oriented programming, emphasizing the mathematical modeling of nominality and subtyping, and contrasting these concepts with their structural counterparts.
Contribution
It provides a detailed overview of nominal and structural typing notions in OOP, highlighting their differences through formal definitions and illustrative examples.
Findings
NOOP model formalizes inheritance and subtyping in nominal OOP
Contrasts between nominal and structural typing clarified
Appendix illustrates concepts with code examples
Abstract
NOOP is a mathematical model of nominally-typed OOP that proves the identification of inheritance and subtyping in mainstream nominally-typed OO programming languages and the validity of this identification. This report gives an overview of the main notions in OOP relevant to constructing a mathematical model of OOP such as NOOP. The emphasis in this report is on defining nominality, nominal typing and nominal subtyping of mainstream nominally-typed OO languages, and on contrasting the three notions with their counterparts in structurally-typed OO languages, i.e., with structurality, structural typing and structural subtyping, respectively. An additional appendix demonstrates these notions and other related notions, and the differences between them, using some simple code examples. A detailed, more technical comparison between nominal typing and structural typing in OOP is presented in…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsDistributed and Parallel Computing Systems · Logic, programming, and type systems · Advanced Computational Techniques and Applications
