Speaker: David Faitelson , Afeka Tel Aviv Academic College of Engineering

Title: Why the Object-Oriented paradigm does not support modularity and how we may fix this problem

Abstract
Recently there is growing recognition that the Object-Oriented paradigm has failed to deliver the benefits that it has promised. In particular we do not have a market of reusable software components and in many cases Object-Oriented systems are complicated to understand, extend and maintain. In this talk I will argue that a major reason for these failures is that the Object-Oriented paradigm does not in fact support creating modular software. I will begin the talk by arguing that for a system to be modular it is not enough that its parts are constructed separately but it is also essential that its parts behave in a modular fashion. I will then demonstrate that Object-Oriented languages with classes and reference semantics, while supporting independent construction, fail to enforce modular behavior at run-time. I will argue that there are two reasons for this failure. First, OO uses a single concept --- the class --- to model two related but separate issues: one is how to represent the problem domain, and the other is how to decompose the system's state into coherent parts. Second, OO uses a single concept --- the reference --- to represent two different relations: structure and communication. Finally, I will suggest how we may create a programming language that by providing explicit constructs for each issue, supports modularity.