How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software
E. Tempero, J. Noble, и H. Melton. ECOOP 2008 European Conf. on Object-Oriented Programming, том 5142 из Lecture Notes in Computer Science, стр. 667--691. Springer Berlin / Heidelberg, (2008)
Аннотация
Inheritance is a crucial part of object-oriented programming, but its use in practice, and the resulting large-scale inheritance structures in programs, remain poorly understood. Previous studies of inheritance have been relatively small and have generally not considered issues such as Java's distinction between classes and interfaces, nor have they considered the use of external libraries. In this paper we present the first substantial empirical study of the large-scale use of inheritance in a contemporary OO programming language. We present a suite of structured metrics for quantifying inheritance in Java programs. We present the results of performing a corpus analysis using those metrics to over 90 applications consisting of over 100,000 separate classes and interfaces. Our analysis finds higher use of inheritance than anticipated, variation in the use of inheritance between interfaces and classes, and differences between inheritance within application types compared with inheritance from external libraries.
%0 Conference Paper
%1 Tempero2008a
%A Tempero, Ewan
%A Noble, James
%A Melton, Hayden
%B ECOOP 2008 European Conf. on Object-Oriented Programming
%D 2008
%E Vitek, Jan
%I Springer Berlin / Heidelberg
%K inheritance Java
%P 667--691
%T How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software
%V 5142
%X Inheritance is a crucial part of object-oriented programming, but its use in practice, and the resulting large-scale inheritance structures in programs, remain poorly understood. Previous studies of inheritance have been relatively small and have generally not considered issues such as Java's distinction between classes and interfaces, nor have they considered the use of external libraries. In this paper we present the first substantial empirical study of the large-scale use of inheritance in a contemporary OO programming language. We present a suite of structured metrics for quantifying inheritance in Java programs. We present the results of performing a corpus analysis using those metrics to over 90 applications consisting of over 100,000 separate classes and interfaces. Our analysis finds higher use of inheritance than anticipated, variation in the use of inheritance between interfaces and classes, and differences between inheritance within application types compared with inheritance from external libraries.
@inproceedings{Tempero2008a,
abstract = {Inheritance is a crucial part of object-oriented programming, but its use in practice, and the resulting large-scale inheritance structures in programs, remain poorly understood. Previous studies of inheritance have been relatively small and have generally not considered issues such as Java's distinction between classes and interfaces, nor have they considered the use of external libraries. In this paper we present the first substantial empirical study of the large-scale use of inheritance in a contemporary OO programming language. We present a suite of structured metrics for quantifying inheritance in Java programs. We present the results of performing a corpus analysis using those metrics to over 90 applications consisting of over 100,000 separate classes and interfaces. Our analysis finds higher use of inheritance than anticipated, variation in the use of inheritance between interfaces and classes, and differences between inheritance within application types compared with inheritance from external libraries.},
added-at = {2011-05-17T11:55:33.000+0200},
affiliation = {University of Auckland Department of Computer Science Auckland New Zealand},
author = {Tempero, Ewan and Noble, James and Melton, Hayden},
biburl = {https://www.bibsonomy.org/bibtex/2282c1b5ac38308cb5a646159bfce0a5b/sjbutler},
booktitle = {ECOOP 2008 European Conf. on Object-Oriented Programming},
editor = {Vitek, Jan},
interhash = {5e372122e9ed508f7f6e2d602db8fd1d},
intrahash = {282c1b5ac38308cb5a646159bfce0a5b},
keywords = {inheritance Java},
pages = {667--691},
publisher = {Springer Berlin / Heidelberg},
series = {Lecture Notes in Computer Science},
timestamp = {2011-05-17T11:55:33.000+0200},
title = {How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software},
volume = 5142,
year = 2008
}