The majority of contemporary mainstream object-oriented (OO) software is written using statically-typed class-based OO programming languages (PLs) such as Java, C#, C++, Scala and others. Existing denotational models of OOP miss crucial features of these mainstream OO programming languages, such as nominality. This book presents the construction of NOOP as the first domain-theoretic model of OOP to include nominal information found in nominally-typed mainstream OO software. Inclusion of nominal information and asserting that type inheritance in statically-typed OO programming languages is an inherently nominal notion allow readily proving that inheritance and subtyping are completely identified in these languages. This conclusion is in full agreement with intuitions of OO developers using these languages, and contrary to the belief among PL researchers that "inheritance is not subtyping", which came from developing structural non-nominal models of OOP. NOOP thus provides a firmer semantic foundation for analyzing and progressing nominally-typed mainstream OO programming languages.
ThriftBooks sells millions of used books at the lowest
everyday prices. We personally assess every book's quality and offer rare, out-of-print treasures. We
deliver the joy of reading in recyclable packaging with free standard shipping on US orders over $15.
ThriftBooks.com. Read more. Spend less.