Using types and inheritance in object-oriented languages
European conference on object-oriented programming on ECOOP '87
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
Smalltalk: subclassing subtyping is-a
Journal of Object-Oriented Programming
Separating the subtype hierarchy from the inheritance of implementation
Journal of Object-Oriented Programming
Signatures: a language extension for improving type abstraction and subtype polymorphism in C++
Software—Practice & Experience
ACM Computing Surveys (CSUR)
The Essence of Object-Oriented Programming with Java and Uml with Cdrom
The Essence of Object-Oriented Programming with Java and Uml with Cdrom
Object-Oriented Software Construction
Object-Oriented Software Construction
Java Gently for Engineers and Scientists: Programming Principles Explained
Java Gently for Engineers and Scientists: Programming Principles Explained
Object Oriented Software Development Using Java
Object Oriented Software Development Using Java
How Well Do Inheritance Mechanisms Support Inheritance Concepts?
JMLC '97 Proceedings of the Joint Modular Languages Conference on Modular Programming Languages
Engineering a Programming Language: The Type and Class System of Sather
Proceedings of the International Conference on Programming Languages and System Architectures
Inheritance as an Incremental Modification Mechanism or What Like Is and Isn't Like
ECOOP '88 Proceedings of the European Conference on Object-Oriented Programming
Towards the systematic use of interfaces in JAVA programming
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
"Objects first, interfaces next" or interfaces before inheritance
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Ancestor worship in CS1: on the primacy of arrays
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Objects First With Java: A Practical Introduction Using BlueJ (3rd Edition)
Objects First With Java: A Practical Introduction Using BlueJ (3rd Edition)
Object Oriented Design and Patterns
Object Oriented Design and Patterns
Exploring accessibility and visibility relationships in java
Proceedings of the 13th annual conference on Innovation and technology in computer science education
Patterns and traceability in teaching software architecture
Proceedings of the 6th international symposium on Principles and practice of programming in Java
Difficulties in Learning Inheritance and Polymorphism
ACM Transactions on Computing Education (TOCE)
Hi-index | 0.00 |
In teaching object-oriented programming, teaching inheritance is the most challenging and at the same time the most crucial aspect. The interplay of dynamic binding, late-bound self-reference, subtype polymorphism and method redefinition is so complex that it is difficult for instructors to design a gentle, step-by-step introduction. Should polymorphism be introduced first? Or is code reuse better suited as an introductory motivation? The Java Programming Language adds a further aspect to this discussion: when should named interfaces be introduced? Most textbooks follow the historical development of the mechanism and cover interfaces after the discussion of abstract classes. In this paper a different approach is described: interfaces are introduced long before and in isolation from inheritance; and the discussion of inheritance is explicitly split into its two major constituents, namely subtype polymorphism and implementation inheritance. We applied this novel approach in the two introductory courses on software development (SD1 and SD2) in the newly created Bachelor of Science in Informatics curriculum at the University of Hamburg, Germany. This experience report reflects on the design rationale behind this new approach.