{"title":"Extendibility vs. Substitutability in OO Languages","authors":"J. Gil","doi":"10.1109/TOOLS.1997.681894","DOIUrl":null,"url":null,"abstract":"This tutorial presents a systematic yet non-formal study of inheritance, the principal abstraction tool of 00 programs. We will follow the different approaches to the design of the inheritance mechanism, starting from the crude mechanisms of Smalltalk, then next with the strict and mathematically sound, but not very useful, model of Oberon, continuing with the smorgasbord of C++, and ending with Java and Eiffel. We will see that the two basic demands from this mechanism: substitutability and extendibility are contradictory in nature, and how different approaches try to reconcile the tension between them. We then show how a clean separation between type and class, as inspired by ideas from Java, Eiffel and Sather, can help solve many of these tensions, at the price of introducing a slightly more complicated underlying model to the programmer. The discussion will culminate in the study of the problematics of multiple inheritance.","PeriodicalId":276758,"journal":{"name":"Proceedings. Technology of Object-Oriented Languages and Systems, TOOLS 25 (Cat. No.97TB100239)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1997-11-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings. Technology of Object-Oriented Languages and Systems, TOOLS 25 (Cat. No.97TB100239)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/TOOLS.1997.681894","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
This tutorial presents a systematic yet non-formal study of inheritance, the principal abstraction tool of 00 programs. We will follow the different approaches to the design of the inheritance mechanism, starting from the crude mechanisms of Smalltalk, then next with the strict and mathematically sound, but not very useful, model of Oberon, continuing with the smorgasbord of C++, and ending with Java and Eiffel. We will see that the two basic demands from this mechanism: substitutability and extendibility are contradictory in nature, and how different approaches try to reconcile the tension between them. We then show how a clean separation between type and class, as inspired by ideas from Java, Eiffel and Sather, can help solve many of these tensions, at the price of introducing a slightly more complicated underlying model to the programmer. The discussion will culminate in the study of the problematics of multiple inheritance.