Encapsulation and inheritance in object-oriented programming languages
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Keynote address - data abstraction and hierarchy
OOPSLA '87 Addendum to the proceedings on Object-oriented programming systems, languages and applications (Addendum)
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards a metrics suite for object oriented design
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
A Validation of Object-Oriented Design Metrics as Quality Indicators
IEEE Transactions on Software Engineering
ACM Computing Surveys (CSUR)
Journal of Systems and Software - Special issue on Evaluation and assessment in software engineering
An Introduction to Object-Oriented Programming
An Introduction to Object-Oriented Programming
Software Metrics: A Rigorous and Practical Approach
Software Metrics: A Rigorous and Practical Approach
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
A Comprehensive Empirical Validation of Design Measures for Object-Oriented Systems
METRICS '98 Proceedings of the 5th International Symposium on Software Metrics
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Effective Java (2nd Edition) (The Java Series)
Effective Java (2nd Edition) (The Java Series)
How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
An empirical study of overriding in open source Java
ACSC '10 Proceedings of the Thirty-Third Australasian Conferenc on Computer Science - Volume 102
The Qualitas Corpus: A Curated Collection of Java Code for Empirical Studies
APSEC '10 Proceedings of the 2010 Asia Pacific Software Engineering Conference
GoHotDraw: evaluating the Go programming language with design patterns
Evaluation and Usability of Programming Languages and Tools
Automatic testing of sequential and concurrent substitutability
Proceedings of the 2013 International Conference on Software Engineering
The power of interoperability: why objects are inevitable
Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software
Hi-index | 0.00 |
Inheritance is a distinguishing feature of object-oriented programming languages, but its application in practice remains poorly understood. Programmers employ inheritance for a number of different purposes: to provide subtyping, to reuse code, to allow subclasses to customise superclasses' behaviour, or just to categorise objects. We present an empirical study of 93 open-source Java software systems consisting over over 200,000 classes and interfaces, supplemented by longitudinal analyses of 43 versions of two systems. Our analysis finds inheritance is used for two main reasons: to support subtyping and to permit what we call external code reuse. This is the first empirical study to indicate what programmers do with inheritance.