A critical view of inheritance and reusability in object-oriented programming

One of the most intriguing - and at the same time most problematic - notions in object-oriented programming is inheritance. Inheritance is commonly regarded as the feature that distinguishes object-oriented programming from other modern programming paradigms, but researchers rarely agree on its mean...

Full description

Bibliographic Details
Main Author: Taivalsaari, Antero
Format: Doctoral dissertation
Language:eng
Published: 1993
Subjects:
Online Access: https://jyx.jyu.fi/handle/123456789/103833
Description
Summary:One of the most intriguing - and at the same time most problematic - notions in object-oriented programming is inheritance. Inheritance is commonly regarded as the feature that distinguishes object-oriented programming from other modern programming paradigms, but researchers rarely agree on its meaning and usage. Yet inheritance is often hailed as a solution to many problems hampering software development, and many of the alleged benefits of object-oriented programming - improved conceptual modeling and reusability, for instance - are largely accredited to it. Many of these benefits, especially reusability, are often taken for granted, as if reusability were an inherent feature of object-oriented software. This thesis presents a critical analysis of inheritance and reusability in object-oriented programming. The thesis is composed of three parts. The first part, understanding inheritance, tries to reach a comprehensive understanding of inheritance from several viewpoints, examining its intended and actual usage, surveying its varieties, and developing a taxonomy of mechanisms that can be seen as underlying different inheritance models. The second part, understanding object-oriented software reuse, first examines the notion of software reuse from a more general perspective, and then analyzes the problems that object-oriented systems have with respect to reusability. It is realized that many of these problems arise from restrictions that inheritance imposes on program structuring. The third part, towards a new model, introduces a new object model called Kevo that is proposed as a solution to many of the problems. Finally, the implementation of the suggested model is discussed and evaluated.