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.
|