Subclassing errors, OOP, and practically checkable rules to prevent them
Oleg Kiselyov

TL;DR
This paper identifies subclassing errors in OOP that compromise interface separation and introduces a set of practical, mechanically verifiable rules to prevent such errors, challenging traditional OOP principles.
Contribution
It proposes a novel set of checkable rules to prevent subclassing errors, highlighting limitations of OOP and questioning its suitability for reliable software development.
Findings
Rules effectively prevent subclassing errors in examples
The rules are expressive despite being restrictive
OOP may be inherently prone to subtle errors
Abstract
This paper considers an example of Object-Oriented Programming (OOP) leading to subtle errors that break separation of interface and implementations. A comprehensive principle that guards against such errors is undecidable. The paper introduces a set of mechanically verifiable rules that prevent these insidious problems. Although the rules seem restrictive, they are powerful and expressive, as we show on several familiar examples. The rules contradict both the spirit and the letter of the OOP. The present examples as well as available theoretical and experimental results pose a question if OOP is conducive to software development at all.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Advanced Software Engineering Methodologies · Logic, programming, and type systems
