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.